split placement into controller and ui submodules