private void circleMove() {
        try {
            long oldTime;
            double timeOffset;

            while (true) {

                if (time - lastBlinkedTime >= BLINKED_TIMEOUT) {
                    lastBlinkedTime = time;
                    isBlinked = !isBlinked;
                }

                if (time - lastFastBlinkedTime >= FAST_BLINKED_TIMEOUT) {
                    lastFastBlinkedTime = time;
                    isFastBlinked = !isFastBlinked;
                }
                oldTime = time;


                time = System.currentTimeMillis();
                timeOffset = (time - oldTime) / 1000.0 * TIME_SPEED;

                since += timeOffset;

                system.move(timeOffset);
                for (Building building : game.getConstructingBuildings()) {
                    building.process((long) timeOffset);
                }

                repaint();
                Thread.sleep((long) (1000 * RATE));
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }