private class MyDialog: Fragment() { override val root = VBox() private var ok: Button by singleAssign() private var cancel: Button by singleAssign() var value: Observable by singleAssign() init { title = "My Dialog" with(root) { hbox { ok = button("OK") cancel = button("CANCEL") } value = Observable.merge( ok.actionEvents().map { true }.doOnNext { closeModal() }, cancel.actionEvents().map { false }.doOnNext { closeModal() } ).take(1) } } }