moved command processing from deliver_message to new method process_command
user identified by pointer, not id