public function filter()
    {
        $opts = func_get_args();
        $callable = array_shift($opts);

        // allow for a false call
        if (!is_callable($callable)) {
            return $this;
        }

        array_unshift($opts, $this);
        return call_user_func_array($callable, $opts);
    }