fixes #9 implement base ui structure and services

also refactor some of the APIs to use virtuals and signals for better code