add controller abstraction and implementation, main.cpp is now free from glfw