add GameController and that lower layer classes, implement minimum implementation and testcode