if passable:
         t["T_POSY"] = move_result[1]
         t["T_POSX"] = move_result[2]
+        t["pos"] = move_result[1] * world_db["MAP_LENGTH"] + move_result[2]
         for id in t["T_CARRIES"]:
             world_db["Things"][id]["T_POSY"] = move_result[1]
             world_db["Things"][id]["T_POSX"] = move_result[2]
+            world_db["Things"][id]["pos"] = t["pos"]
         build_fov_map(t)
         if t == world_db["Things"][0]:
             log("You MOVE " + dir + ".")
     """
     ids = [id for id in world_db["Things"] if world_db["Things"][id] != t
            if not world_db["Things"][id]["carried"]
-           if world_db["Things"][id]["T_POSY"] == t["T_POSY"]
-           if world_db["Things"][id]["T_POSX"] == t["T_POSX"]]
+           if world_db["Things"][id]["pos"] == t["pos"]]
     if len(ids):
         lowest_tid = -1
         for iid in ids:
 
     def animates_in_fov(maplength):
         return [Thing for Thing in world_db["Things"].values()
                 if Thing["T_LIFEPOINTS"] and not Thing["carried"]
-                   and not Thing == t and 118 == t["fovmap"][Thing["T_POSY"] *
-                   maplength + Thing["T_POSX"]]]
+                   and not Thing == t and 118 == t["fovmap"][Thing["pos"]]]
+
+    #def animates_in_fov_gen(maplength):
+    #    return (Thing for Thing in world_db["Things"].values()
+    #            if Thing["T_LIFEPOINTS"] and not Thing["carried"]
+    #               and not Thing == t and 118 == t["fovmap"][Thing["pos"]])
 
     def good_attack_target(v):
         eat_cost = eat_vs_hunger_threshold(t["T_TYPE"])
-        type = world_db["ThingTypes"][v["T_TYPE"]]
-        type_corpse = world_db["ThingTypes"][type["TT_CORPSE_ID"]]
-        if t["T_LIFEPOINTS"] > type["TT_LIFEPOINTS"] \
+        ty = world_db["ThingTypes"][v["T_TYPE"]]
+        type_corpse = world_db["ThingTypes"][ty["TT_CORPSE_ID"]]
+        if t["T_LIFEPOINTS"] > ty["TT_LIFEPOINTS"] \
         and type_corpse["TT_TOOL"] == "food" \
         and type_corpse["TT_TOOLPOWER"] > eat_cost:
             return True
         set_cells_passable_on_memmap_to_65534_on_scoremap()
         maplen = world_db["MAP_LENGTH"]
         if "a" == filter:
-            [set_map_score(Thing["T_POSY"] * maplen + Thing["T_POSX"], 0) for
+            [set_map_score(Thing["pos"], 0) for
              Thing in animates_in_fov(maplen) if good_attack_target(Thing)]
         elif "f" == filter:
-            [set_map_score(Thing["T_POSY"] * maplen + Thing["T_POSX"], 0) for
+            [set_map_score(Thing["pos"], 0) for
              Thing in animates_in_fov(maplen) if good_flee_target(Thing)]
         elif "c" == filter:
             eat_cost = eat_vs_hunger_threshold(t["T_TYPE"])
         elif "s" == filter:
             zero_score_map_where_char_on_memdepthmap(mem_depth_c[0])
         if "f" == filter:
-            [set_map_score(Thing["T_POSY"] * maplen + Thing["T_POSX"], 65535)
-             for Thing in animates_in_fov(maplen) if get_map_score(
-              Thing["T_POSY"] * maplen + Thing["T_POSX"])]
+            [set_map_score(Thing["pos"], 65535)
+             for Thing in animates_in_fov(maplen)
+             if get_map_score(Thing["pos"])]
         elif "a" != filter:
-            [set_map_score(Thing["T_POSY"] * maplen + Thing["T_POSX"],
-             65535) for Thing in animates_in_fov(maplen)]
+            [set_map_score(Thing["pos"], 65535)
+             for Thing in animates_in_fov(maplen)]
 
     def rand_target_dir(neighbors, cmp, dirs):
         candidates = []
         import math
         dir_to_target = False
         dirs = "edcxsw"
-        eye_pos = t["T_POSY"] * world_db["MAP_LENGTH"] + t["T_POSX"]
+        eye_pos = t["pos"]
         neighbors = get_neighbor_scores(dirs, eye_pos)
         minmax_start = 0 if "f" == filter else 65535 - 1
         minmax_neighbor = minmax_start
     eat_cost = eat_vs_hunger_threshold(t["T_TYPE"])
     for id in [id for id in world_db["Things"] if world_db["Things"][id] != t
                if not world_db["Things"][id]["carried"]
-               if world_db["Things"][id]["T_POSY"] == t["T_POSY"]
-               if world_db["Things"][id]["T_POSX"] == t["T_POSX"]
+               if world_db["Things"][id]["pos"] == t["pos"]
                if world_db["ThingTypes"][world_db["Things"][id]["T_TYPE"]]
                   ["TT_TOOL"] == "food"
                if world_db["ThingTypes"][world_db["Things"][id]["T_TYPE"]]
 
                               for id in world_db["Things"]
                               if not world_db["Things"][id]["carried"]
                               if world_db["Things"][id]["T_TYPE"] == tid
-                              if y == world_db["Things"][id]["T_POSY"]
-                              if x == world_db["Things"][id]["T_POSX"]]:
+                              if pos == world_db["Things"][id]["pos"]]:
                     type = world_db["Things"][id]["T_TYPE"]
                     name = world_db["ThingTypes"][type]["TT_NAME"]
                     strong_write(io_db["file_out"], name + "\n")
         val = integer_test(str_int, 0, 255)
         if None != val:
             if val < world_db["MAP_LENGTH"]:
-                world_db["Things"][command_tid.id]["T_POS" + axis] = val
+                t = world_db["Things"][command_tid.id]
+                t["T_POS" + axis] = val
+                t["pos"] = t["T_POSY"] * world_db["MAP_LENGTH"] + t["T_POSX"]
                 if world_db["WORLD_ACTIVE"] \
                    and world_db["Things"][command_tid.id]["T_LIFEPOINTS"]:
                     build_fov_map(world_db["Things"][command_tid.id])
         t = world_db["Things"][0]
         ids = [tid for tid in world_db["Things"] if tid
                if not world_db["Things"][tid]["carried"]
-               if world_db["Things"][tid]["T_POSY"] == t["T_POSY"]
-               if world_db["Things"][tid]["T_POSX"] == t["T_POSX"]]
+               if world_db["Things"][tid]["pos"] == t["pos"]]
         from server.config.commands import play_pickup_attempt_hook
         if not len(ids):
              log("NOTHING to pick up.")
 
         live_tid = t["T_TYPE"]
         for tid in t["T_CARRIES"]:
             t["T_CARRIES"].remove(tid)
-            world_db["Things"][tid]["T_POSY"] = t["T_POSY"]
-            world_db["Things"][tid]["T_POSX"] = t["T_POSX"]
             world_db["Things"][tid]["carried"] = False
         t["T_TYPE"] = world_db["ThingTypes"][t["T_TYPE"]]["TT_CORPSE_ID"]
         if world_db["Things"][0] == t:
 
             t = world_db["Things"][tid]
             for key in sorted(t.keys()):
                 if key not in {"T_CARRIES", "carried", "fovmap", "T_MEMMAP",
-                               "T_MEMTHING", "T_MEMDEPTHMAP"}:
+                               "T_MEMTHING", "T_MEMDEPTHMAP", "pos"}:
                     argument = t[key]
                     string += key + " " + (quote_escape(argument) if \
                             str == type(argument) else str(argument)) + "\n"
 
     thing["T_TYPE"] = _type
     thing["T_POSY"] = pos[0]
     thing["T_POSX"] = pos[1]
+    thing["pos"] = thing["T_POSY"] * world_db["MAP_LENGTH"] + thing["T_POSX"]
     if world_db["WORLD_ACTIVE"] and thing["T_LIFEPOINTS"]:
         build_fov_map(thing)
     return thing
 
      if not world_db["Things"][id]["carried"]
      if not world_db["ThingTypes"][world_db["Things"][id]["T_TYPE"]]
                                                               ["TT_LIFEPOINTS"]
-     if ord_v == t["fovmap"][(world_db["Things"][id]["T_POSY"] * maplength)
-                                       + world_db["Things"][id]["T_POSX"]]]
+     if ord_v == t["fovmap"][world_db["Things"][id]["pos"]]]
 
                   if not world_db["Things"][id]["carried"]
                   if world_db["Things"][id]["T_TYPE"] == tid
                   if world_db["Things"][0]["fovmap"][
-                       world_db["Things"][id]["T_POSY"] * length
-                       + world_db["Things"][id]["T_POSX"]] == ord_v]:
+                       world_db["Things"][id]["pos"]] == ord_v]:
         type = world_db["Things"][id]["T_TYPE"]
         c = ord(world_db["ThingTypes"][type]["TT_SYMBOL"])
-        fov[world_db["Things"][id]["T_POSY"] * length
-            + world_db["Things"][id]["T_POSX"]] = c
+        fov[world_db["Things"][id]["pos"]] = c
     return write_map(fov, length)
 
 def write_mem_map():