public void run() {
    	// thread info
        while(true){
        	CurrentGC = CurrentLvl.getGC();
        	if (CurrentGC.getGotten() && (CurrentLvl.getNextLevel() != null)){
        		CurrentLvl = CurrentLvl.getNextLevel();
        		try {
                    Thread.sleep(3000);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
        		Ball = new UserBall();
        	}
        	Ball.update(this);
        	for (Platform P : CurrentLvl.getPlat()){
        		P.update(Ball);
        	}
        	CurrentLvl.getGC().update(Ball, playerStatus);
        	for (Coin coin : CurrentLvl.getCoin()){
        		coin.update(Ball, playerStatus);
        	}
        	playerStatus.update();
            repaint(); // goes through update() then calls paint()
            try {
                Thread.sleep(17);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }