Details explained: http://www.monkeypotion.com/devblog/designing-a-component-based-architecture-in-lua-for-game-apps/