diff --git a/examples/NanoFeldspar/Core.hs b/examples/NanoFeldspar/Core.hs
--- a/examples/NanoFeldspar/Core.hs
+++ b/examples/NanoFeldspar/Core.hs
@@ -102,7 +102,6 @@
         , semanticEval = \len init body -> foldl (flip body) init [0 .. len-1]
         }
 
-
 instance Equality ForLoop where equal = equalDefault; exprHash = exprHashDefault
 instance Render   ForLoop where renderArgs = renderArgsDefault
 instance Eval     ForLoop where evaluate   = evaluateDefault
diff --git a/src/Language/Syntactic/Constructs/Binding.hs b/src/Language/Syntactic/Constructs/Binding.hs
--- a/src/Language/Syntactic/Constructs/Binding.hs
+++ b/src/Language/Syntactic/Constructs/Binding.hs
@@ -108,6 +108,10 @@
   where
     toTreeArgs [body] (Lambda v) = Node ("Lambda " ++ show v) [body]
 
+-- | Allow an existing binding to be used with a body of a different type
+reuseLambda :: Lambda (b :-> Full (a -> b)) -> Lambda (c :-> Full (a -> c))
+reuseLambda (Lambda v) = Lambda v
+
 
 
 --------------------------------------------------------------------------------
diff --git a/src/Language/Syntactic/Frontend/Monad.hs b/src/Language/Syntactic/Frontend/Monad.hs
--- a/src/Language/Syntactic/Frontend/Monad.hs
+++ b/src/Language/Syntactic/Frontend/Monad.hs
@@ -10,6 +10,7 @@
 
 
 
+import Control.Applicative
 import Control.Monad.Cont
 import Data.Typeable
 
@@ -41,6 +42,11 @@
   where
     return a = Mon $ return a
     ma >>= f = Mon $ unMon ma >>= unMon . f
+
+instance (Monad m, Applicative m) => Applicative (Mon dom m)
+  where
+    pure  = return
+    (<*>) = ap
 
 -- | One-layer desugaring of monadic actions
 desugarMonad
diff --git a/src/Language/Syntactic/Traversal.hs b/src/Language/Syntactic/Traversal.hs
--- a/src/Language/Syntactic/Traversal.hs
+++ b/src/Language/Syntactic/Traversal.hs
@@ -100,6 +100,14 @@
     -> (forall sig . Args c1 sig -> m (Args c2 sig))
 mapArgsM f = unwrapMonad . mapArgsA (WrapMonad . f)
 
+-- | Right fold for an 'Args' list
+foldrArgs
+    :: (forall a . c (Full a) -> b -> b)
+    -> b
+    -> (forall sig . Args c sig -> b)
+foldrArgs f b Nil       = b
+foldrArgs f b (a :* as) = f a (foldrArgs f b as)
+
 -- | Apply a (partially applied) symbol to a list of argument terms
 appArgs :: AST dom sig -> Args (AST dom) sig -> ASTF dom (DenResult sig)
 appArgs a Nil       = a
diff --git a/syntactic.cabal b/syntactic.cabal
--- a/syntactic.cabal
+++ b/syntactic.cabal
@@ -1,5 +1,5 @@
 Name:           syntactic
-Version:        1.5.2
+Version:        1.6.1
 Synopsis:       Generic abstract syntax, and utilities for embedded languages
 Description:    This library provides:
                 .
@@ -46,7 +46,8 @@
 Author:         Emil Axelsson
 Maintainer:     emax@chalmers.se
 Copyright:      Copyright (c) 2011-2012, Emil Axelsson
-Homepage:       http://projects.haskell.org/syntactic/
+Homepage:       http://hub.darcs.net/emax/syntactic
+Bug-reports:    http://hub.darcs.net/emax/syntactic/issues
 Category:       Language
 Build-type:     Simple
 Cabal-version:  >=1.10
@@ -59,7 +60,7 @@
 
 source-repository head
   type:     darcs
-  location: http://projects.haskell.org/syntactic/
+  location: http://hub.darcs.net/emax/syntactic
 
 library
   exposed-modules:
