private void start() {
        GameController controller = new GameController();
        canvas.addKeyListener(controller.getKeyListener());

        Timer timer = new Timer().init();

        while (true) {
            // Get the buffer to draw on
            BufferStrategy buffer = canvas.getBufferStrategy();
            Graphics2D g = (Graphics2D) buffer.getDrawGraphics();

            // Clear buffer
            g.setColor(Color.WHITE);
            g.fillRect(viewPort.x, viewPort.y, viewPort.width, viewPort.height);

            controller.step(timer.delta());
            controller.draw(viewPort, g);

            // Release graphics resources
            g.dispose();

            // Swap display buffers
            buffer.show();

            Utils.sleep(1000/30);
        }
    }