public boolean couldMove() {
        return !isDisposed()
            && getState() == UnitState.ACTIVE
            && getMovesLeft() > 0
            && destination == null // Can not reach next tile
            && tradeRoute == null
            && !isUnderRepair()
            && !isAtSea()
            && !(isInEurope() && isOnCarrier())
            // this should never happen anyway, since these units
            // should have state IN_COLONY, but better safe than sorry
            && !(location instanceof WorkLocation);
    }