diff --git a/Data/TCache.hs b/Data/TCache.hs
--- a/Data/TCache.hs
+++ b/Data/TCache.hs
@@ -267,9 +267,9 @@
 
 import Control.Concurrent.MVar
 import Control.Exception(catch, throw)
---import Debug.Trace
+import Debug.Trace
 
---(!>) = flip trace
+(!>) = flip trace
 
 -- there are two references to the DBRef here
 -- The Maybe one keeps it alive until the cache releases it for *Resources
@@ -348,9 +348,9 @@
  if newkey /= key
    then  error $ "writeDBRef: law of key conservation broken: old , new= " ++ key ++ " , "++newkey
    else do
-    applyTriggers  [dbref] [Just x]  -- !> ("writeDBRef "++ key)
+    applyTriggers  [dbref] [Just x]
     t <- unsafeIOToSTM timeInteger
-    writeTVar tv $ Exist $ Elem x t t
+    writeTVar tv $ Exist $ Elem x t t   !> ("writeDBRef "++ key)
     return()
 
 
@@ -453,11 +453,12 @@
 
 newDBRef ::   (IResource a, Typeable a) => a -> STM  (DBRef a)  
 newDBRef x = do
-  let ref= getDBRef $ keyResource x
+  let ref= getDBRef $! keyResource x
+
   mr <- readDBRef  ref
   case mr of
-    Nothing -> writeDBRef ref x >> return ref
-    Just r -> return ref
+    Nothing -> writeDBRef ref x >> return ref !> " write"
+    Just r -> return ref                      !> " non write"
     
 --newDBRef ::   (IResource a, Typeable a) => a -> STM  (DBRef a)
 --newDBRef x = do
diff --git a/Data/TCache/DefaultPersistence.hs b/Data/TCache/DefaultPersistence.hs
--- a/Data/TCache/DefaultPersistence.hs
+++ b/Data/TCache/DefaultPersistence.hs
@@ -30,10 +30,12 @@
 import Data.TCache.Defs(castErr)
 import qualified Data.ByteString.Lazy.Char8 as B
 
-import Debug.Trace
+--import Debug.Trace
+--
+--a !> b = trace b a
 
-a !> b = trace b a
 
+
 {- | Indexable is an utility class used to derive instances of IResource
 
 Example:
@@ -81,11 +83,10 @@
   deserialize :: {-serialFormat-} B.ByteString -> a
   setPersist :: a -> Persist
   setPersist _= defaultPersist
-{-
-instance (Show a, Read a)=> Serializable a where
-  serialize= show
-  deserialize= read
--}
+
+--instance (Show a, Read a)=> Serializable a where
+--  serialize= show
+--  deserialize= read
 
 
 -- |
diff --git a/Data/TCache/Defs.hs b/Data/TCache/Defs.hs
--- a/Data/TCache/Defs.hs
+++ b/Data/TCache/Defs.hs
@@ -12,11 +12,11 @@
 
 data Status a= NotRead | DoNotExist | Exist a deriving Typeable
 
-data Elem a= Elem a AccessTime ModifTime   deriving Typeable
+data Elem a= Elem !a !AccessTime !ModifTime   deriving Typeable
 
 type TPVar a=   TVar (Status(Elem a))
 
-data DBRef a= DBRef String  (TPVar a)  deriving Typeable
+data DBRef a= DBRef !String  !(TPVar a)  deriving Typeable
 
 
 
diff --git a/TCache.cabal b/TCache.cabal
--- a/TCache.cabal
+++ b/TCache.cabal
@@ -1,5 +1,5 @@
 name:                TCache
-version:             0.9.0.2
+version:             0.9.0.3
 synopsis:            A Transactional cache with user-defined persistence
 description:
     TCache is a transactional cache with configurable persitence. It allows conventional
@@ -7,7 +7,7 @@
     their user defined storages. Default persistence in files is provided for testing purposes
     State in memory and into permanent storage is transactionally coherent.
 
-
+    0.9.0.3 : Solved a "lost registers" bug.
     0.9.0.1 : Solves a bug when object keys generate invalid filenames.
               changes in defaultPersistence to further separate serialization from input-output
     .
