                         return retry()
                     } else {
                         return writeTVar(tvar2, [x1+x3, y2+y3])                >>|
-                             { writeTVar(tvar3, SimpleObject(x2+x3, y2+y3))  } >>|
-                             { returnM()                                     }
+                            { writeTVar(tvar3, SimpleObject(x2+x3, y2+y3))  } >>|
+                            { returnM()                                     }
                     }
                 }}}
         

        
        var tvar = newTVar(someInt)
        let stmTest1:STM<()> = modifyTVar(tvar, fun) >>|
                             { readTVar(tvar)}       >>-
                             { if $0 != 16 {
                                 return retry()
                             } else {
                                 return returnM()
                             }}
        let stmTest2 = writeTVar(tvar, 6) >>> { readTVar(tvar) }
        
        
        let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

        
        var tvar = newTVar(someObj)
        let stmTest1 = modifyTVar(tvar, fun) >>|
            { readTVar(tvar) }
        let stmTest2 = writeTVar(tvar, SimpleObject(6,9)) >>|
            { readTVar(tvar) }
        
        let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
        let group = dispatch_group_create()
