core functionality with basic user interface implemented