diff --git a/src/Data/SumBag.hs b/src/Data/SumBag.hs
index 99fd760daea1133d67d9a5e215dcc3d25ec5916a..f118c8c0aeafe6924989e65f14ba2078a17112c8 100644
--- a/src/Data/SumBag.hs
+++ b/src/Data/SumBag.hs
@@ -8,6 +8,8 @@ module Data.SumBag
   , insert
   , delete
   , elem
+  , toAscList
+  , fromList
   ) where
 
 import Prelude hiding (sum, min, elem)
@@ -79,6 +81,17 @@ delete a (Node _ e left right)
           let (min, rest) = delmin right
           in balance1 min left rest
 
+toAscList :: Ord a => SumBag a -> [a]
+toAscList bag = helper bag []
+  where helper Leaf accu = accu
+        helper (Node _ e left right) accu =
+          helper left (mkList e ++ helper right accu)
+
+        mkList (Element val mult) = map (const val) (NE.toList mult)
+
+fromList :: (Ord a, Monoid a) => [a] -> SumBag a
+fromList = foldr insert empty
+
 -- Internal functions
 
 -- | "Smart" constructor for Node. Will compute the meta data from its subtrees