diff --git a/db/model/transaction.go b/db/model/transaction.go
index b2afe83..1bed0d1 100644
--- a/db/model/transaction.go
+++ b/db/model/transaction.go
@@ -29,34 +29,34 @@
 	}
 	return tx
 }
-func (t *Transaction) Get(path string, depth int, deep bool) *Revision {
+func (t *Transaction) Get(path string, depth int, deep bool) Revision {
 	if t.txid == "" {
 		fmt.Errorf("closed transaction")
 		return nil
 	}
 	// TODO: need to review the return values at the different layers!!!!!
-	return t.proxy.Get(path, depth, deep, t.txid).(*Revision)
+	return t.proxy.Get(path, depth, deep, t.txid).(Revision)
 }
-func (t *Transaction) Update(path string, data interface{}, strict bool) *Revision {
+func (t *Transaction) Update(path string, data interface{}, strict bool) Revision {
 	if t.txid == "" {
 		fmt.Errorf("closed transaction")
 		return nil
 	}
-	return t.proxy.Update(path, data, strict, t.txid).(*Revision)
+	return t.proxy.Update(path, data, strict, t.txid).(Revision)
 }
-func (t *Transaction) Add(path string, data interface{}) *Revision {
+func (t *Transaction) Add(path string, data interface{}) Revision {
 	if t.txid == "" {
 		fmt.Errorf("closed transaction")
 		return nil
 	}
-	return t.proxy.Add(path, data, t.txid).(*Revision)
+	return t.proxy.Add(path, data, t.txid).(Revision)
 }
-func (t *Transaction) Remove(path string) *Revision {
+func (t *Transaction) Remove(path string) Revision {
 	if t.txid == "" {
 		fmt.Errorf("closed transaction")
 		return nil
 	}
-	return t.proxy.Remove(path, t.txid).(*Revision)
+	return t.proxy.Remove(path, t.txid).(Revision)
 }
 func (t *Transaction) Cancel() {
 	t.proxy.cancelTransaction(t.txid)
