anchor.diff:           (message (make-message :from from :content content :time time)))
       (formated-message message)))
   
  -(defun call-command-by-name (string)
  +(defun call-command-by-name (string params)
     "Wow, this is a horrible hack to get a string as symbol for functions/command
     like /help /users /log and so on."
  -  (funcall (find-symbol (string-upcase string) :lisp-chat-server)))
  +  (let ((command-function (find-symbol (string-upcase string) :lisp-chat-server)))
  +    (when command-function
  +      (apply command-function params))))
   
   ;; user commands prefixed with /
  -(defun /users ()
  +(defun /users (client &rest args)
     "Return a list separated by commas of the currently logged users"
     (command-message (format nil "~{~a~^, ~}" (mapcar #'client-name *clients*))))
   
   
  -(defun /help ()
  +(defun /help (client &rest args)
     "Show a list of the available commands of lisp-chat"
     (command-message (format nil "~{~a~^, ~}" *commands-names*)))
   
   
  -(defun /log (&optional (depth 20))
  +(defun /log (client &optional (depth "20") &rest args)
     "Show the last messages typed on the server.
      DEPTH is optional number of messages frames from log"
  -  (format nil "~{~a~^~%~}" (reverse (subseq *messages-log* 0
  -                                            (min depth (length *messages-log*))))))
  -
  -(defun /uptime ()
  +  (let ((messages (min (or (parse-integer depth :junk-allowed t) 20)
  +                       (length *messages-log*))))
  +    (format nil "~{~a~^~%~}" (reverse (subseq *messages-log* 0
  +                                              messages)))))
  +
  +(defun /uptime (client &rest args)
     "Return a string nice encoded to preset the uptime since the server started."
     (multiple-value-bind
           (second minute hour date month year day-of-week dst-p tz)
  
positive.code:              (nth day-of-week *day-names*)
               month date year
               (- tz)))))
  
  
  (defun push-message (from content)
  
negative.code: (defvar *day-names* '("Monday" "Tuesday" "Wednesday"
                        "Thursday" "Friday" "Saturday" "Sunday"))
  (defvar *uptime* (multiple-value-list (get-decoded-time)))
  (defparameter *commands-names* '("/users" "/help" "/log" "/quit" "/uptime" "/nick"))
  (defparameter *clients* nil)
  (defparameter *messages-stack* nil)
  (defparameter *messages-log* nil)
  (defparameter *server-nickname* "@server")
  
  
  ;; thread control
  (defvar *message-semaphore* (make-semaphore :name "message semaphore"
  