         else
             J.List @getValues().map f
 
-    map: (f) ->
+    map: (f = _.identity) ->
         # Reactive
         # Enables parallel fetching
         if Tracker.active
-            J.AutoList(
-                => @size()
-                (i) => f @get(i), i
-                true # This makes it not lazy
-            )
+            if f is _.identity and @ instanceof J.AutoList and @onChange
+                @
+            else
+                J.AutoList(
+                    => @size()
+                    (i) => f @get(i), i
+                    true # This makes it not lazy
+                )
         else
             J.List @getValues().map f
 


    filter: (f = _.identity) ->
        # Reactive
        J.List _.filter @getValues(), f

    forEach: (f) ->
        # Reactive

            return i if equalsFunc y, x
        -1

    lazyMap: (f = _.identity) ->
        # Reactive
        if Tracker.active
            J.AutoList(
