diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,12 @@
+#####   1.0.2
+    Tz derive Functor
+    
+    Data.Time.Hora.Future :
+
+        PicoDiff class
+
 #####   1.0.1
     DmyHmp derive Binary
-    
 
 #####   1.0
     initial version
diff --git a/hora.cabal b/hora.cabal
--- a/hora.cabal
+++ b/hora.cabal
@@ -1,5 +1,5 @@
 name:                hora
-version:             1.0.1
+version:             1.0.2
 build-type:          Simple
 cabal-version:       >=1.10
 
@@ -53,8 +53,9 @@
                         GeneralizedNewtypeDeriving
                         RecordWildCards
                         DeriveGeneric
-                       
+                        DeriveFunctor
 
+
 test-suite spec
   default-language:Haskell2010
   type: exitcode-stdio-1.0
@@ -73,6 +74,7 @@
                         GeneralizedNewtypeDeriving
                         RecordWildCards
                         DeriveGeneric
+                        DeriveFunctor
 
   main-is: Main.hs
   other-modules:
@@ -82,6 +84,7 @@
           Test.TestTime
           Test.TestDmyHm
           Test.TestPico
+          Test.TestPico2
 
   build-depends:  base >= 4.8,
                   hspec >= 2.1.7,
diff --git a/src/Data/Time/Hora/Future.hs b/src/Data/Time/Hora/Future.hs
--- a/src/Data/Time/Hora/Future.hs
+++ b/src/Data/Time/Hora/Future.hs
@@ -3,6 +3,8 @@
 import Data.Time.Clock
 import Data.Time.Hora.Type.Time
 import Data.Time.Hora.Convert
+import Prelude as P
+import Data.Fixed
 
 
 {- | 'getCurrentTime' +/- offset
@@ -23,12 +25,22 @@
                 pure . (addUTCTime diff1)
     where diff1 = nominalDiff ts0
 
+{- | Difference between times with pico precision
+    
+    return TimeSpan for ease of conversion with "Data.Time.Hora.Convert"    -}
+class PicoDiff a where
+    (-)::a -> a -> TimeSpan Integer
 
--- | time diff in milli
-timeDiffMs::UTCTime -> UTCTime -> Int
-timeDiffMs t1 t2 =
-    let t1_ = utctDayTime t1
-        t2_ = utctDayTime t2
-        d3 = diffTimeToPicoseconds $ t2_ - t1_
-    in toMilli $ Pico d3
-                
+
+instance PicoDiff UTCTime where
+    (-) t2 t1 =
+        let t1_ = utctDayTime t1
+            t2_ = utctDayTime t2
+            d3 = diffTimeToPicoseconds $ t2_ P.- t1_
+        in Pico d3
+-- ^ assuming both times are in the same date. Day part is discarded 
+ 
+
+instance PicoDiff Pico where
+    (-) (MkFixed t2) (MkFixed t1) = Pico $ t2 P.- t1
+-- ^ e.g. Pico part in 'DmyHmp' 
diff --git a/src/Data/Time/Hora/Type/Time.hs b/src/Data/Time/Hora/Type/Time.hs
--- a/src/Data/Time/Hora/Type/Time.hs
+++ b/src/Data/Time/Hora/Type/Time.hs
@@ -8,8 +8,7 @@
     | Milli a deriving (Show, Eq, Ord)
 
 
-data Tz a = Tz TimeZone a  deriving Show
-
+data Tz a = Tz TimeZone a  deriving (Show,Functor)
 
 -- | constraint
 type TwoInt a b = (Integral a, Integral b)
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -5,8 +5,10 @@
 import qualified Test.TestFuture as Fut
 import qualified Test.TestTime as Tt
 import qualified Test.TestPico as P
+import qualified Test.TestPico2 as P2
 import qualified Test.TestDmyHm as D 
 
+
 main::IO()
 main = do
         T.main
@@ -15,3 +17,4 @@
         Tt.main
         P.main
         D.main
+        P2.main
diff --git a/test/Test/TestDiffTime.hs b/test/Test/TestDiffTime.hs
--- a/test/Test/TestDiffTime.hs
+++ b/test/Test/TestDiffTime.hs
@@ -5,7 +5,7 @@
 import Data.Time.Clock
 import Control.Concurrent
 import Data.Time.Hora.Timestamp
-import Data.Time.Hora.Future
+import Data.Time.Hora.Future as F
 import Data.Time.Hora.Type.Time
 
 
@@ -17,7 +17,7 @@
             t1 <- getCurrentTime
             threadDelay 7000
             t2 <- getCurrentTime
-            let diff3 = timeDiffMs t1 t2
+            let diff3 = t1 F.- t2
             traceIO $ show diff3
             1 `shouldBe` 1
           it "DmyHmP" $ do
diff --git a/test/Test/TestPico.hs b/test/Test/TestPico.hs
--- a/test/Test/TestPico.hs
+++ b/test/Test/TestPico.hs
@@ -3,6 +3,7 @@
 import Test.Hspec
 import Debug.Trace
 import Data.Time.Hora.Parse
+import Data.Time.Hora.Future as F
 import Data.Time.Clock
 import Data.Time.Hora.Type.DmyHm
 import Data.Time.LocalTime
@@ -27,4 +28,12 @@
                 let f1 = parse' z1 t1
                 traceIO $ show f1
             1 `shouldBe` 1
+          it "- pico" $ do
+            t1 <- getCurrentTime 
+            t2 <- getCurrentTime
+            let DmyHmp (_,d1) = parse t1::DmyHmp
+                DmyHmp (_,d2) = parse t2::DmyHmp
+                diff1 = t2 F.- t1
+                diff2 = d2 F.- d1            
+            diff1 `shouldBe` diff2
             
diff --git a/test/Test/TestPico2.hs b/test/Test/TestPico2.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/TestPico2.hs
@@ -0,0 +1,15 @@
+module Test.TestPico2 where
+
+import Test.Hspec
+import Debug.Trace
+import Data.Fixed
+
+
+main::IO()
+main = hspec $ do
+       describe "Test.TestPico2" $ do
+          it "case 1" $ do
+            traceIO $ show p1
+            let MkFixed p2 = p1
+            p2 `shouldBe` 33458700000000
+            where p1 = MkFixed 33458700000000::Fixed E12
