@Override
    protected void performMove() {
        if (!isVisible()) {
            return;
        }

        super.performMove();

        // If below bottom side or completely after the side edges -
        // hide the invader
        //
        // **NOTE**: Not checking the top side at the moment for simplicity
        // The invader should not go up and it's actually coming from the top
        // side and it should be visible initially
        if (y > Shared.SPACE_HEIGHT || (x > Shared.SPACE_WIDTH || (x - getPreferredSize().getWidth()) < 0)) {
            setVisible(false);
        }

        if (isVisible()) {
            Ship ship = Engine.getInstance().getShip();

           if (checkCollision(ship)) {
               Engine.getInstance().getSpace().addCrash(new Crash(getX(), getY() + (int) getPreferredSize().getHeight()));
               Engine.getInstance().getPlayer().decreaseLives();
               if (Engine.getInstance().isRunning()) {
                   setVisible(false);
               }
           }
        }
    }