finished implementation of basic user interface