My attempt at implementing the Entity-Component-System design pattern