@beepdog - the preferred way is to use scopes (although parameters are supported) but tornadofx doesn't force any particular approach on you. I personally think scopes are easier to reason about than parameters and the framework makes them easy to use. I don't think you are ever "purely functional" since the framework is handling the instantiation and wiring of ui components so whatever you do needs to work within that constraint.