diff --git a/genLibTest.dcl b/genLibTest.dcl
index 770f2ee..5272ad6 100755
--- a/genLibTest.dcl
+++ b/genLibTest.dcl
@@ -22,8 +22,8 @@ instance + String
 generic genShow a :: String Bool a [String] -> [String]
 generic gLess a  :: a a -> Bool
 
-derive genShow	Int, Char, Bool, Real, String, UNIT, PAIR, EITHER, OBJECT, CONS, FIELD, [], (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,), (,,,,,,,,), (,,,,,,,,,), (->), {}, {!}
-derive gLess    Int, Char, Bool, Real, String, UNIT, PAIR, EITHER, OBJECT, CONS, FIELD, [], (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,), (,,,,,,,,), (,,,,,,,,,) 
+derive genShow	Int, Char, Bool, Real, String, UNIT, PAIR, EITHER, OBJECT, RECORD of d, CONS of d, FIELD of gfd_name, [], (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,), (,,,,,,,,), (,,,,,,,,,), (->), {}, {!}
+derive gLess    Int, Char, Bool, Real, String, UNIT, PAIR, EITHER, OBJECT, RECORD, CONS, FIELD, [], (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,), (,,,,,,,,), (,,,,,,,,,) 
 
 show  :: !a -> [String] | genShow{|*|} a
 show1 :: !a ->  String  | genShow{|*|} a
diff --git a/genLibTest.icl b/genLibTest.icl
index 8241184..cbaf080 100755
--- a/genLibTest.icl
+++ b/genLibTest.icl
@@ -58,19 +58,16 @@ genShow{|(,,,,,,,,)|}f1 f2 f3 f4 f5 f6 f7 f8 f9 sep p (x1,x2,x3,x4,x5,x6,x7,x8,x
  = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [",":f6 sep False x6 [",":f7 sep False x7 [",":f8 sep False x8 [",":f9 sep False x9 [")":rest]]]]]]]]]]
 genShow{|(,,,,,,,,,)|}f1 f2 f3 f4 f5 f6 f7 f8 f9 f0 sep p (x1,x2,x3,x4,x5,x6,x7,x8,x9,x0) rest
  = ["(":f1 sep False x1 [",":f2 sep False x2 [",":f3 sep False x3 [",":f4 sep False x4 [",":f5 sep False x5 [",":f6 sep False x6 [",":f7 sep False x7 [",":f8 sep False x8 [",":f9 sep False x9 [",":f0 sep False x0 [")":rest]]]]]]]]]]]
-genShow{|CONS of {gcd_name, gcd_arity, gcd_fields}|} fx sep p (CONS x) rest
-	| gcd_arity == 0
-		= [gcd_name: rest]
-	| isEmpty gcd_fields // ordinary constructor
-		| p // parentheses needed
-//			= ["(",gcd_name," ":fx " " False x [")":rest]]
-//			= [gcd_name," ":fx " " False x rest]
-			= ["(",gcd_name," ":fx " " True x [")":rest]]
-			= [gcd_name," ":fx " " True x rest]
-	| otherwise // record
-		= ["{",{gcd_name.[i]\\i<-[1..size gcd_name-1]},"|":fx "," False x ["}":rest]]
-genShow{|FIELD of {gfd_name}|} fx sep p (FIELD x) rest
-	= [gfd_name,"=":fx sep False x rest]
+genShow{|RECORD of d|} fx sep p (RECORD x) rest
+	= ["{",{d.grd_name.[i]\\i<-[1..size d.grd_name-1]},"|":fx "," False x ["}":rest]]
+genShow{|CONS of d|} fx sep p (CONS x) rest
+	| d.gcd_arity == 0
+		= [d.gcd_name: rest]
+    | p // parentheses needed
+        = ["(", d.gcd_name," ":fx " " True x [")":rest]]
+        = [d.gcd_name," ":fx " " True x rest]
+genShow{|FIELD of d|} fx sep p (FIELD x) rest
+	= [d.gfd_name,"=":fx sep False x rest]
 
 showChar :: Char -> String
 showChar c
@@ -117,6 +114,7 @@ gLess{|EITHER|} fl fr (LEFT x)   (RIGHT y) 		= True
 gLess{|EITHER|} fl fr (RIGHT x)  (LEFT y)		= False
 gLess{|CONS|}   f     (CONS x)   (CONS y) 		= f x y
 gLess{|OBJECT|} f     (OBJECT x) (OBJECT y) 	= f x y
+gLess{|RECORD|} f     (RECORD x) (RECORD y) 	= f x y
 gLess{|FIELD|}  f     (FIELD x)  (FIELD y) 		= f x y
 gLess{|Int|} 	x y 							= x < y
 gLess{|Char|} x y 								= x < y
