@Override
    public void update() {
        super.update();

        Placeable placeable = null;

        try {
            for (String key : placeables.keySet()) {
                placeable = (Placeable) placeables.get(key);
                if (placeable != null) {
                    placeable.update();

                    if (placeable.isDirty()) {
                        placeables.remove(key);
                    }
                }
            }
        } catch (ConcurrentModificationException concEx) {
            //another thread was trying to modify placeables while iterating
            //we'll continue and the new item can be grabbed on the next update
        }

        if (currentlyPlacing != null) {
            Point p = null;
            if (currentlyPlacing.getItemName().equals("TownBlock")) {
                p = getBlockSnap();
            } else {
                p = getTownSnap();
            }
            if (currentlyPlacing.getState() == Placeable.State.New) {
                currentlyPlacing.setState(Placeable.State.NotPlaced);
            }
            currentlyPlacing.setPosition(p.x, p.y);
        }
    }