diff --git a/BioInf/ViennaRNA/Bindings.hs b/BioInf/ViennaRNA/Bindings.hs
--- a/BioInf/ViennaRNA/Bindings.hs
+++ b/BioInf/ViennaRNA/Bindings.hs
@@ -13,8 +13,8 @@
 
 import qualified Data.Array.IArray as A
 
-import BioInf.ViennaRNA.Bindings.FFI.Fold as FFI
-import BioInf.ViennaRNA.Bindings.FFI.CoFold as FFI
+import BioInf.ViennaRNA.Bindings.FFI.CoFold   as FFI
+import BioInf.ViennaRNA.Bindings.FFI.Fold     as FFI
 import BioInf.ViennaRNA.Bindings.FFI.PartFunc as FFI
 
 -- | Fold a sequence into an optimal secondary structure. Returns a pair of
@@ -35,7 +35,10 @@
 -- pair probability table.
 
 part :: String -> IO (Double,String,A.Array (Int,Int) Double)
-part = ffiPartitionFunction
+part = ffi_pf_fold
+
+partConstrained :: String -> String -> IO (Double, String, A.Array (Int,Int) Double)
+partConstrained = ffi_pf_fold_constrained
 
 
 
diff --git a/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs b/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs
--- a/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs
+++ b/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs
@@ -8,28 +8,26 @@
   , CofoldF (..)
   ) where
 
-import Foreign.C.String
-import Foreign.C.Types
-import Foreign.Marshal.Alloc
-import Foreign.Ptr
-import Foreign.Storable
-import GHC.Float
-import Unsafe.Coerce
+import           Control.Applicative
+import           Control.Monad
+import           Foreign.C.String
+import           Foreign.C.Types
+import           Foreign.Marshal.Alloc
+import           Foreign.Marshal.Array
+import           Foreign.Ptr
+import           Foreign.Storable
+import           GHC.Float
 import qualified Data.Array.IArray as A
-import Foreign.Marshal.Array
-import Control.Applicative
-import Control.Monad
-
-import BioInf.ViennaRNA.Bindings.FFI.Utils
+import           Unsafe.Coerce
 
-import Debug.Trace
+import           BioInf.ViennaRNA.Bindings.FFI.Utils
 
 
 
-#include <ViennaRNA/fold.h>
-#include <ViennaRNA/data_structures.h>
-#include <ViennaRNA/cofold.h>
-#include <ViennaRNA/part_func_co.h>
+#include "cofold.h"
+#include "data_structures.h"
+#include "fold.h"
+#include "part_func_co.h"
 
 {#pointer *cofoldF as CofoldFPtr -> CofoldF #}
 
diff --git a/BioInf/ViennaRNA/Bindings/FFI/Fold.chs b/BioInf/ViennaRNA/Bindings/FFI/Fold.chs
--- a/BioInf/ViennaRNA/Bindings/FFI/Fold.chs
+++ b/BioInf/ViennaRNA/Bindings/FFI/Fold.chs
@@ -17,8 +17,7 @@
 
 
 
-
-#include <ViennaRNA/fold.h>
+#include "fold.h"
 
 ffiFold :: String -> IO (Double,String)
 ffiFold inp = withCAString inp $ \cinp ->
diff --git a/BioInf/ViennaRNA/Bindings/FFI/PartFunc.chs b/BioInf/ViennaRNA/Bindings/FFI/PartFunc.chs
--- a/BioInf/ViennaRNA/Bindings/FFI/PartFunc.chs
+++ b/BioInf/ViennaRNA/Bindings/FFI/PartFunc.chs
@@ -1,34 +1,52 @@
 {-# LANGUAGE ForeignFunctionInterface #-}
 
 module BioInf.ViennaRNA.Bindings.FFI.PartFunc
-  ( ffiPartitionFunction
+  ( ffi_pf_fold
+  , ffi_pf_fold_constrained
   ) where
 
-import Foreign.C.String
-import Foreign.C.Types
-import Foreign.Marshal.Alloc
-import Foreign.Marshal.Array
-import Foreign.Ptr
-import GHC.Float
+import           Foreign.C.String
+import           Foreign.C.Types
+import           Foreign.Marshal.Alloc
+import           Foreign.Marshal.Array
+import           Foreign.Ptr
+import           GHC.Float
 import qualified Data.Array.IArray as A
-import Unsafe.Coerce
+import           Unsafe.Coerce
 
 import BioInf.ViennaRNA.Bindings.FFI.Utils
 
 
 
-#include <ViennaRNA/part_func.h>
+#include "part_func.h"
 
-ffiPartitionFunction :: String -> IO (Double,String,A.Array (Int,Int) Double)
-ffiPartitionFunction i =
+ffi_pf_fold :: String -> IO (Double,String,A.Array (Int,Int) Double)
+ffi_pf_fold i =
   withCAString i $ \ci ->
   withCAString i $ \cs -> do
   let n = length i
   let z = n * (n+1) `div` 2 +1
-  e  <- {#call pf_fold #} ci cs
+  e  <- {#call ffiwrap_pf_fold_constrained #} ci cs 0
   s  <- peekCAString cs
   bp <- {#call export_bppm #}
   xs <- peekArray z (bp :: Ptr CDouble)
   let ar = A.accumArray (const id) 0 ((1,1),(n,n)) $ zip [ (ii,jj) | ii <- [n,n-1..1], jj <- [n,n-1..ii]] (drop 1 $ map unsafeCoerce xs)
   return (cf2d e, s, ar)
+
+ffi_pf_fold_constrained :: String -> String -> IO (Double,String,A.Array (Int,Int) Double)
+ffi_pf_fold_constrained i s =
+  withCAString i $ \ci ->
+  withCAString s $ \cs -> do
+  let n = length i
+  let z = n * (n+1) `div` 2 +1
+  e  <- {#call ffiwrap_pf_fold_constrained #} ci cs 1
+  s  <- peekCAString cs
+  bp <- {#call export_bppm #}
+  xs <- peekArray z (bp :: Ptr CDouble)
+  let ar = A.accumArray (const id) 0 ((1,1),(n,n)) $ zip [ (ii,jj) | ii <- [n,n-1..1], jj <- [n,n-1..ii]] (drop 1 $ map unsafeCoerce xs)
+  return (cf2d e, s, ar)
+
+#c
+float ffiwrap_pf_fold_constrained (const char *sequence, char *structure, int constrained);
+#endc
 
diff --git a/ViennaRNA-bindings.cabal b/ViennaRNA-bindings.cabal
--- a/ViennaRNA-bindings.cabal
+++ b/ViennaRNA-bindings.cabal
@@ -1,10 +1,10 @@
 name:                ViennaRNA-bindings
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            ViennaRNA v2 bindings
 homepage:            http://www.tbi.univie.ac.at/~choener/
 license:             OtherLicense
 license-file:        LICENSE
-author:              Christian Hoener zu Siederdissen (bindings) 2013, The ViennaRNA Team (library) 1994-2013
+author:              Christian Hoener zu Siederdissen (bindings) 2013-4, The ViennaRNA Team (library) 1994-2014
 maintainer:          choener@tbi.univie.ac.at
 copyright:           The ViennaRNA Team 1994-2013
 category:            Bioinformatics, FFI
@@ -22,8 +22,12 @@
   ViennaRNA package.
   .
   If you use this software, please cite:
-  R. Lorenz, S.H. Bernhart, C. Hoener zu Siederdissen, H. Tafer, C. Flamm, P.F. Stadler and I.L. Hofacker (2011),
-  "ViennaRNA Package 2.0", Algorithms for Molecular Biology: 6:26
+  .
+  @
+  R. Lorenz, S.H. Bernhart, C. Hoener zu Siederdissen, H. Tafer, C. Flamm, P.F. Stadler and I.L. Hofacker (2011)
+  ViennaRNA Package 2.0
+  Algorithms for Molecular Biology: 6:26
+  @
 
 extra-source-files:
   cbits/circfold.inc
@@ -55,6 +59,7 @@
   include/PS_dot.h
   include/subopt.h
   include/utils.h
+  changelog
 
 
 library
@@ -83,6 +88,7 @@
     cbits/part_func.c
     cbits/part_func_co.c
     cbits/cofold.c
+    cbits/ffiwrap_part_func.c
   cc-options:
   include-dirs: include
   includes: config.h
diff --git a/cbits/ffiwrap_part_func.c b/cbits/ffiwrap_part_func.c
new file mode 100644
--- /dev/null
+++ b/cbits/ffiwrap_part_func.c
@@ -0,0 +1,8 @@
+
+#include "part_func.h"
+
+float ffiwrap_pf_fold_constrained (const char *sequence, char *structure, int constrained)
+{
+  return pf_fold_par (sequence, structure, 0, 1, constrained, 0);
+}
+
diff --git a/changelog b/changelog
new file mode 100644
--- /dev/null
+++ b/changelog
@@ -0,0 +1,11 @@
+0.1.1.0
+-------
+
+- breaking changes to PartFunc.chs
+- constrained partition function folding
+- includes should now all be local (that one was bad)
+
+0.1.0.0
+-------
+
+- relevant cbits are now provided as part of the cabal package
