big refactor, made all model value listenable. Added UIComponent builders.