refactoring - split up the ui, adapters and utilities into their own packages