protected function attachIt(
        /*# string */ $eventName,
        $listener,
        $callable,
        /*# int */ $priority
    ) {
        // get named event queue
        if ($this->hasEventQueue($eventName)) {
            $q = $this->getEventQueue($eventName);
        } else {
            $q = new EventQueue();
            $this->events[$eventName] = $q;
        }

        // attach callable directory
        if (is_null($listener)) {
            // need $eventName
            if (empty($eventName)) {
                throw new Exception\InvalidArgumentException(
                    Message::get(Message::INVALID_EVENT_NAME, 'EMPTY'),
                    Message::INVALID_EVENT_NAME
                );
            }
            $xc = [
                [ $callable, (int) $priority ]
            ];
        // get callables from listener object or static listener class
        } else {
            $xc = $this->makeCallables($listener, $callable, (int) $priority);
        }

        if (empty($xc)) {
            throw new Exception\InvalidArgumentException(
                Message::get(Message::INVALID_EVENT_CALLABLE, $eventName),
                Message::INVALID_EVENT_CALLABLE
            );
        } else {
            foreach ($xc as $c) {
                $q->insert($c[0], $c[1]);
            }
        }
    }