~ clean-up
~ split ui
~ added tests