private void render() {
        BufferStrategy bs = this.getBufferStrategy();
        if (bs == null) {
            this.createBufferStrategy(3);
            return;
        }
        Graphics g = bs.getDrawGraphics();
        Graphics2D g2d = (Graphics2D) g;

        if (state == STATE.MENU) {
            menu.render(g);
        }

        if (state == STATE.LEVELS) {
            levels.render(g);
        }

        if (state == STATE.GAME || state == STATE.PAUSE || state == STATE.GAMEOVER) {
            g2d.drawImage(tex.getGameBackground(), 0, 0, 800 + 10, 600 + 10, null);

            if (cam.getZoomOn()) {
                g2d.scale(2.0, 2.0);
                g2d.translate(cam.getX(), cam.getY()); // Cam start

                handler.render(g);

                g2d.translate(-cam.getX(), -cam.getY()); // Cam end

                g2d.scale(0.5, 0.5);
            } else {
                g2d.translate(cam.getX(), cam.getY()); // Cam start

                handler.render(g);

                g2d.translate(-cam.getX(), -cam.getY()); // Cam end    
            }

            ui.render(g);

        }
        if (state == STATE.PAUSE) {
            pause.render(g);
        }
        g.dispose();
        bs.show();
    }