game.turn = n
 cmd_TURN.argtypes = 'int:nonneg'
 
-#def cmd_ANNOTATE(game, yx, connection_id):
-def cmd_ANNOTATE(game, yx, msg):
+def cmd_ANNOTATE(game, yx, msg, connection_id):
     if msg == ' ':
         if yx in game.annotations:
             del game.annotations[yx]
     game.io.send('ANNOTATION %s %s' % (yx, quote(annotation)))
 cmd_GET_ANNOTATION.argtypes = 'yx_tuple:nonneg'
 
-# TODO: disallow these commands from clients? (maybe by failing on connection_id?)
 def cmd_MAP_LINE(game, y, line):
     game.map.set_line(y, line)
 cmd_MAP_LINE.argtypes = 'int:nonneg string'
 
                 for i in range(len(lines)):
                     line = lines[i]
                     print("FILE INPUT LINE %5s: %s" % (i, line), end='')
-                    self.io.handle_input(line)
+                    self.io.handle_input(line, god_mode=True)
 
     def get_string_options(self, string_option_type):
         import string
 
             print('Killing server')
             self.server.server_close()
 
-    def handle_input(self, input_, connection_id=None):
-        """Process input_ to command grammar, call command handler if found."""
+    def handle_input(self, input_, connection_id=None, god_mode=False):
+        """Process input_ to command grammar, call command handler if found.
+
+        Command handlers that have no connectin_i argument in their
+        signature will only be called if god_mode is set.
+
+        """
         from inspect import signature
         from plomrogue.errors import GameError, ArgError
         from plomrogue.misc import quote
             else:
                 if 'connection_id' in list(signature(command).parameters):
                     command(*args, connection_id=connection_id)
-                else:
+                elif god_mode:
                     command(*args)
                     #if store and not hasattr(command, 'dont_save'):
                     #    with open(self.game_file_name, 'a') as f: