 
 (deftask GetEdges
          #'plan/GetEdges
-         (let [[v e w] (-> this :vars)]
-           (map #(let [^IngraphEdge edge %
-                     src (.sourceVertex edge)
-                     tgt (.targetVertex edge)]
-                 (assoc var-lkp v src e edge w tgt))
-              (let [^IngraphEnvironment env env
-                    ^Indexer indexer (.indexer env)
-                    ^Iterator iterator (.edgesJava indexer)]
-                (iterator-seq iterator)))))
+         (let [[v e w] (-> this :vars)
+               ^IngraphEnvironment env env
+               ^Indexer indexer (.indexer env)
+               ^Iterator iterator (.edgesJava indexer)]
+           (->> (iterator-seq iterator)
+                (map #(let [^IngraphEdge edge %
+                            src (.sourceVertex edge)
+                            tgt (.targetVertex edge)]
+                        (assoc var-lkp v src e edge w tgt))))))
 
-(deftask GetEdgesByType #'plan/GetEdgesByType
-         (let [[v e w t] (-> this :vars)]
-           (map #(let [^IngraphEdge edge %
-                     src (.sourceVertex edge)
-                     tgt (.targetVertex edge)]
-                 (assoc var-lkp v src e edge w tgt))
-              (let [^IngraphEnvironment env env
-                    ^Indexer indexer (.indexer env)
-                    ^String type (var-lkp t)
-                    ^Iterator iterator (.edgesByTypeJava indexer type)]
-                (iterator-seq iterator)))))
+(deftask GetEdgesByType
+         #'plan/GetEdgesByType
+         (let [[v e w t] (-> this :vars)
+               ^IngraphEnvironment env env
+               ^Indexer indexer (.indexer env)
+               ^String type (var-lkp t)
+               ^Iterator iterator (.edgesByTypeJava indexer type)]
+           (->> (iterator-seq iterator)
+                (map #(let [^IngraphEdge edge %
+                            src (.sourceVertex edge)
+                            tgt (.targetVertex edge)]
+                        (assoc var-lkp v src e edge w tgt))))))
 
 (deftask CheckType
          #'plan/CheckType


(deftask ExtendOut
         #'plan/ExtendOut
         (let [[v e w] (-> this :vars)]
           (map #(let [^IngraphEdge edge %
                       ^IngraphVertex tgt (.targetVertex edge)]
                   (assoc var-lkp e edge w tgt))
                (let [^IngraphVertex vertex (var-lkp v)
                      ^Iterator iterator (.edgesOutJavaIterator vertex)]
                  (iterator-seq iterator)))))

(deftask ExtendIn
         #'plan/ExtendIn
         (let [[v e w] (-> this :vars)]
           (map #(let [^IngraphEdge edge %
                       ^IngraphVertex src (.sourceVertex edge)]
                   (assoc var-lkp e edge w src))
                (let [^IngraphVertex vertex (var-lkp v)
                      ^Iterator iterator (.edgesInJavaIterator vertex)]
                  (iterator-seq iterator)))))

(deftask ExtendOutByType #'plan/ExtendOutByType
         (let [[v e w t] (-> this :vars)]
           (map #(let [^IngraphEdge edge %
                       ^IngraphVertex tgt (.targetVertex edge)]
                   (assoc var-lkp e edge w tgt))
                (let [^IngraphVertex vertex (var-lkp v)
                      ^String type (var-lkp t)
                      ^Iterator iterator (.edgesOutByTypeJavaIterator vertex type)]
                  (iterator-seq iterator)))))

(deftask ExtendInByType #'plan/ExtendInByType
         (let [[v e w t] (-> this :vars)]
           (map #(let [^IngraphEdge edge %
                       ^IngraphVertex src (.sourceVertex edge)]
                   (assoc var-lkp e edge w src))
                (let [^IngraphVertex vertex (var-lkp v)
                      ^String type (var-lkp t)
                      ^Iterator iterator (.edgesInByTypeJavaIterator vertex type)]
                  (iterator-seq iterator)))))

(deftask Join #'plan/Join (???))

(deftask JoinByType #'plan/JoinByType (???))

(deftask CheckDirectedEdge #'plan/CheckDirectedEdge (???))

(deftask CheckDirectedEdgeByType #'plan/CheckDirectedEdgeByType (???))

(deftask EvalEquals #'plan/EvalEquals (???))





(deftask GetVertices
         #'plan/GetVertices
         (let [[v] (-> this :vars)
               ^IngraphEnvironment env env
               ^Indexer indexer (.indexer env)
               ^Iterator iterator (.verticesJava indexer)]
           (->> (iterator-seq iterator)
                (map #(assoc var-lkp v %)))))

; TODO should work with multiple labels, but no indexer support yet [#184]
(deftask GetVerticesByLabels
         #'plan/GetVerticesByLabels
         (let [[v l] (-> this :vars)
               ^IngraphEnvironment env env
               ^Indexer indexer (.indexer env)
               ^String label (var-lkp l)
               ^Iterator iterator (.verticesByLabelJava indexer label)]
           (->> (iterator-seq iterator)
                (map #(assoc var-lkp v %)))))

; TODO should add support for multiple set of labels
(deftask CheckLabels
