Entity system now uses smart pointers