public function getEtag()
    {
        $sha1Able = ($this instanceof IdentifiableInterface)
            ? $this->getId()
            : spl_object_hash($this);

        if ($this instanceof DateTimeInterface) {
            $sha1Able .= $this
                ->getUpdatedAt()
                ->getTimestamp();
        }

        return sha1($sha1Able);
    }