+ @trigger 'set_cards', agent, @cards
+
+ send_state: (agent) ->
+ @trigger 'send_state', agent
+
+ process_messages: (messages) ->
+ unless typeof messages is 'array' or typeof messages is 'object'
+ # FIXME what to do on error?
+ return typeof messages
+
+ for message in messages
+ unless message instanceof Array and message[0]? and message[0] in ['move', 'mark', 'flip', 'set_cards', 'send_state']
+ # FIXME what to do on error?
+ return 2
+ method = message.shift()
+ @[method].apply this, message
+ return
+