private function _processModifiers($expression) {
        $mStart  = '';
        $mEnd    = '';
        $rawEcho = false;

        /** process modifiers */
        if (strpos($expression, '|') !== false && strpos($expression, '||') === false) {
            $modifiers  = explode('|', $expression);
            $expression = array_shift($modifiers);
            foreach ($modifiers as $modifier) {
                $params = array();
                if (strpos($modifier, ':') !== false) {
                    $params   = explode(':', $modifier);
                    $modifier = array_shift($params);
                }
                if ($modifier == 'raw') {
                    $rawEcho = true;
                    continue;
                }

                if ($this->isCallable($modifier)) {
                    $mStart = $modifier . '(' . $mStart;
                    if ($modifier !== 'raw') {
                        foreach ($params as $param) {
                            $mEnd .= ', ' . $this->compileExpression($param);
                        }
                    }
                    $mEnd .= ')';
                } else {
                    throw new \Exception('SLOT compiler error: undefined modifier ' . $modifier);
                }
            }
        }

        return array(
            $expression,
            $mStart,
            $mEnd,
            $rawEcho
        );
    }