diff --git a/numeric-prelude.cabal b/numeric-prelude.cabal
--- a/numeric-prelude.cabal
+++ b/numeric-prelude.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:  2.2
 Name:           numeric-prelude
-Version:        0.4.3.3
+Version:        0.4.4
 License:        BSD-3-Clause
 License-File:   LICENSE
 Author:         Dylan Thurston <dpt@math.harvard.edu>, Henning Thielemann <numericprelude@henning-thielemann.de>, Mikael Johansson
@@ -30,7 +30,7 @@
   default:     False
 
 Source-Repository this
-  Tag:         0.4.3.3
+  Tag:         0.4.4
   Type:        darcs
   Location:    https://hub.darcs.net/thielema/numeric-prelude/
 
diff --git a/src/Number/NonNegativeChunky.hs b/src/Number/NonNegativeChunky.hs
--- a/src/Number/NonNegativeChunky.hs
+++ b/src/Number/NonNegativeChunky.hs
@@ -330,7 +330,7 @@
 
 instance (NonNeg.C a) => Mn98.Monoid (T a) where
    mempty  = Monoid.idt
-   mappend = (Monoid.<*>)
+   mappend = (Sg98.<>)
 
 instance (NonNeg.C a) => Monoid.C (T a) where
    idt   = Cons []
diff --git a/src/Number/Physical.hs b/src/Number/Physical.hs
--- a/src/Number/Physical.hs
+++ b/src/Number/Physical.hs
@@ -222,11 +222,11 @@
 
 instance Applicative (T a) where
    (<*>) = ap
-   pure = return
+   pure = fromScalarSingle
 
 instance Monad (T i) where
-  (>>=) (Cons xu x) f =
+   (>>=) (Cons xu x) f =
     if Unit.isScalar xu
     then f x
     else error "Physics.Quantity.Value.(>>=): function for scalars, only"
-  return = fromScalarSingle
+   return = pure
diff --git a/src/Number/ResidueClass/Reader.hs b/src/Number/ResidueClass/Reader.hs
--- a/src/Number/ResidueClass/Reader.hs
+++ b/src/Number/ResidueClass/Reader.hs
@@ -45,11 +45,11 @@
 
 instance Applicative (T a) where
    (<*>) = ap
-   pure = return
+   pure = Cons . const
 
 instance Monad (T a) where
    (Cons x) >>= y  =  Cons (\r -> toFunc (y (x r)) r)
-   return = Cons . const
+   return = pure
 
 
 
diff --git a/src/NumericPrelude/Base.hs b/src/NumericPrelude/Base.hs
--- a/src/NumericPrelude/Base.hs
+++ b/src/NumericPrelude/Base.hs
@@ -22,7 +22,7 @@
    P.IO,
    P.IOError,
    P.Maybe(..),
-   P.Monad(..),
+   P.Monad(..), P.fail,
    P.Ord(..),
    P.Ordering(..),
    P.Read(..),
