protected void process(Object o) {
        if (o instanceof AddEntity) {
            EntityData data = ((AddEntity) o).data;
            
            Entity e = null;
            if (data.type == EntityType.CREATURE) {
                e = new Creature(data.x, data.y, this);
            } else if (data.type == EntityType.WALL) {
                e = new Wall(data.x, data.y, (Float) data.specificData[0], (Float) data.specificData[1], this);
            } else if (data.type == EntityType.FOOD) {
                e = new Food(data.x, data.y, this);
            }
            
            e.init();
            e.setData(data);
            add(e);
        } else if (o instanceof EntityData) {
            EntityData data = (EntityData) o;
            if (entities.get(data.id) != null) {
                entities.get(data.id).setData(data);
            }
        } else if (o instanceof SendInput) {
            processInput((SendInput) o);
        } else if (o instanceof Entity) {
            add((Entity) o);
        }
    }