public function startTracking($nick, $cls = '\\Erebot\\Module\\IrcTracker\\Token')
    {
        $identityCls = $this->getFactory('!Identity');
        $fmt = $this->getFormatter(null);
        if ($nick instanceof \Erebot\Interfaces\Identity) {
            $identity = $nick;
        } else {
            if (!is_string($nick)) {
                throw new \Erebot\InvalidValueException(
                    $fmt->_('Not a valid nick')
                );
            }
            $identity = new $identityCls($nick);
        }

        $collator   = $this->connection->getCollator();
        $nick       = $collator->normalizeNick($identity->getNick());
        $key        = array_search($nick, $this->nicks);

        if ($key === false) {
            throw new \Erebot\NotFoundException($fmt->_('No such user'));
        }
        return new $cls($this, $key);
    }