following the Game Engine Architecture book by Jason Gregory