implement EntitySystem