public function registerCallback($commands, $callback, $params = array())
    {
        $commands = (array) $commands;
        $params = (array) AnConfig::unbox($params);

        foreach ($commands as $command) {
            $command = strtolower($command);

            if (! isset($this->_callbacks[$command])) {
                $this->_callbacks[$command] = array();
                $this->_params[$command] = array();
            }

            //Don't re-register commands.
            $index = array_search($callback, $this->_callbacks[$command], true);

            if ($index === false) {
                $this->_callbacks[$command][] = $callback;
                $this->_params[$command][] = $params;
            } else {
                $this->_params[$command][$index] = array_merge($this->_params[$command][$index], $params);
            }
        }

        return $this->_mixer;
    }