-= (join "\n" $ map readable bc, st)
-
-//Start :: String
-//Start = toReadableByteCode bc
-// where
-// bc :: ByteCode Int Expr
-// bc = (lit 36 +. lit 42) +. lit 44
-toMessages :: Int (String, BCState) -> [MTaskMessage]
-toMessages interval (bytes, {sdss}) = [MTSds i (toString b)\\(i,b)<-sdss] ++ [MTTask interval bytes]
-
-Start = toMessages 500 $ toRealByteCode (unMain bc)
-//Start = fst $ toReadableByteCode $ unMain bc
+# (bc, gtmap) = computeGotos bc 0
+= (join "\n" $ map readable (map (implGotos gtmap) bc), st)
+
+toMessages :: MTaskInterval (String, BCState) -> ([MTaskMSGSend], BCState)
+toMessages interval (bytes, st=:{sdss}) = ([MTSds i (toString b)\\(i,b)<-sdss] ++ [MTTask interval bytes], st)
+
+toSDSUpdate :: Int Int -> [MTaskMSGSend]
+toSDSUpdate i v = [MTUpd i (to16bit v)]
+
+Start = toMessages (OnInterval 500) $ toRealByteCode (unMain bc) zero