diff --git a/Quat.hs b/Quat.hs
--- a/Quat.hs
+++ b/Quat.hs
@@ -31,7 +31,7 @@
   negate = fmap negate
   (*) = qmult
   abs = fmap abs
-  signum = error "signum undefined for Quat"
+  signum = fmap signum
   fromInteger = error "fromInteger undefined for Quat"
 
 -- | q_out = q_in^-1
diff --git a/SpatialMath.hs b/SpatialMath.hs
--- a/SpatialMath.hs
+++ b/SpatialMath.hs
@@ -4,8 +4,8 @@
 
 module SpatialMath ( module Xyz
                    , module Quat
-                   , Xyz(..)
-                   , Quat(..)
+--                   , Xyz(..)
+--                   , Quat(..)
                    , Euler(..)
                    , rotateXyzAboutX
                    , euler321OfQuat
diff --git a/Xyz.hs b/Xyz.hs
--- a/Xyz.hs
+++ b/Xyz.hs
@@ -37,10 +37,10 @@
   (+) = zipWithXyz (+)
   (-) = zipWithXyz (-)
   negate = fmap negate
-  (*) = error "(*) undefined for Xyz"
-  abs = error "abs undefined for Xyz"
-  signum = error "signum undefined for Xyz"
-  fromInteger = error "fromInteger undefined for Xyz"
+  (*) = zipWithXyz (*)
+  abs = fmap abs
+  signum = fmap signum
+  fromInteger k = fmap fromInteger (Xyz k k k)
 
 -- | c = a (cross) b
 cross :: Num a => Xyz a -> Xyz a -> Xyz a
diff --git a/spatial-math.cabal b/spatial-math.cabal
--- a/spatial-math.cabal
+++ b/spatial-math.cabal
@@ -1,5 +1,5 @@
 name:                spatial-math
-version:             0.1.1
+version:             0.1.2
 synopsis:            3d math including quaternions/euler angles/dcms and utility functions
 description:         This is a port of my 'mathlib' C library: https://github.com/ghorn/mathlib
 license:             BSD3
