public function filter($func = null)
    {
        if (null === $func)
            return $this->initNew(array_filter($this->_storage));

        if (is_callable($func, false))
            return $this->initNew(array_filter($this->_storage, $func));

        throw new \InvalidArgumentException(vsprintf(
            '%s::filter - Un-callable "$func" value seen!',
            array(get_class($this)))
        );
    }