public void simulateRound() {
        List<MovableObject> movableSnapshot = new ArrayList<>(mMovableObjects);
        //iterate over snapshot since some interactions can modify movable list
        for (MovableObject movable : movableSnapshot) {
            Point2D nextPosition = movable.move();
            if (!isInsideField(nextPosition) || movable.isOnSamePosition(nextPosition)) {
                continue;
            }
            
            FieldObject fo = getObjectOnPos(nextPosition);
            
            if (fo == null) {
                movable.setNewPosition(nextPosition.x, nextPosition.y);
            } else {
                movable.interact(fo);
            }
            
        }
    }