public function save() {

        if(!$this->hasToken()) {
            if (static::hasSingleToken()) {
                $this->setToken(static::getSingleToken());
            } else {
                $this->generateToken();
            }
        }

        if (!$this->hasConstructor()) {
            $this->setConstructor(static::class);
        }

        Session::push($this->getToken(), json_encode(['constructor' => $this->getConstructor()]));
        return $this;
    }