diff --git a/HLearn-approximation.cabal b/HLearn-approximation.cabal
--- a/HLearn-approximation.cabal
+++ b/HLearn-approximation.cabal
@@ -1,5 +1,5 @@
 Name:                HLearn-approximation
-Version:             1.0.0
+Version:             1.1.0
 Description:         Approximation algorithms for NP-hard problems
 Category:            Data Mining, Machine Learning, Data Structures
 License:             BSD3
diff --git a/src/HLearn/NPHard/BinPacking.hs b/src/HLearn/NPHard/BinPacking.hs
--- a/src/HLearn/NPHard/BinPacking.hs
+++ b/src/HLearn/NPHard/BinPacking.hs
@@ -75,6 +75,10 @@
     type FunctorConstraint (BinPacking n) x = (Ord x, Norm x, SingI n)
     fmap f sched = bfd $ CK.fmap f $ vector sched
 
+instance CK.Monad (BinPacking n) where
+    return = train1dp
+    join (BinPacking v _) = bfd $ CK.join $ CK.fmap vector v
+
 -------------------------------------------------------------------------------
 -- Training
 
diff --git a/src/HLearn/NPHard/Scheduling.hs b/src/HLearn/NPHard/Scheduling.hs
--- a/src/HLearn/NPHard/Scheduling.hs
+++ b/src/HLearn/NPHard/Scheduling.hs
@@ -103,6 +103,10 @@
     type FunctorConstraint (Scheduling n) x = (Ord x, Norm x, SingI n)
     fmap f sched = lptf $ CK.fmap f $ vector sched
 
+instance CK.Monad (Scheduling n) where
+    return = train1dp
+    join (Scheduling v _) = lptf $ CK.join $ CK.fmap vector v
+
 -------------------------------------------------------------------------------
 -- Training
 
