add error class
add mouse abstraction
remove frame window class
add high-precision timer class
abstract the app into game class, refactor code into a more game-like architecture