public function neatTruncate($length, $marker = '...')
    {
        $length = $length - (strlen($marker));
        $len    = $this->length();
        if ($len > $length) {
            $matches           = array();
            preg_match('/(.{'.$length.'}.*?)\b/', $this->returnValue, $matches);
            $result            = end($matches);
            $this->returnValue = rtrim($result).$marker;
        }
        return $this;
    }