public function startWatch($interval = 1000000, $timeout = null, Closure $callback = null)
    {
        $this->watching = true;

        $timeWatching = 0;

        while ($this->watching) {
            if (is_callable($callback)) {
                call_user_func($callback, $this);
            }

            usleep($interval);

            $this->tracker->checkTrackings();

            $timeWatching += $interval;

            if (!is_null($timeout) and $timeWatching >= $timeout) {
                $this->stopWatch();
            }
        }
    }