further refactoring - all that is left is the ui