[SCM] image display tool for astronomy branch, upstream, updated. f6f5ad7a19a7c674dd427fb54f15a41a98d94d5e

Ole Streicher github at liska.ath.cx
Wed Jun 6 13:58:40 UTC 2012


The following commit has been merged in the upstream branch:
commit 12d0f97e1f38a39f89cda43570a19b63b8af5cbb
Author: Ole Streicher <github at liska.ath.cx>
Date:   Wed May 23 14:17:32 2012 +0200

    New upstream beta version 7.0~b19

diff --git a/Makefile b/Makefile
index eef3601..0ea5630 100644
--- a/Makefile
+++ b/Makefile
@@ -147,6 +147,7 @@ CVSFILES = acknowledgement \
 	macosx \
 	tests \
 	doc \
+	cmaps \
 	template \
 	src \
 	msgs \
diff --git a/cmaps/cubehelix0.sao b/cmaps/cubehelix0.sao
new file mode 100644
index 0000000..f0e73a2
--- /dev/null
+++ b/cmaps/cubehelix0.sao
@@ -0,0 +1,319 @@
+#-----------------------------------------
+#cubehelixcolourschemeforsaoimage/DS9
+#
+#start....:0.5
+#rotations:-1.5
+#hue......:1.0
+#gamma....:1.0
+#
+#see:Green(2011),BASI,39,289.
+#-----------------------------------------
+#DaveGreen:dag at mrao.cam.ac.uk
+#-----------------------------------------
+PSEUDOCOLOR
+RED:
+(0.00,0.00)
+(0.01,0.02)
+(0.02,0.03)
+(0.03,0.05)
+(0.04,0.06)
+(0.05,0.07)
+(0.06,0.08)
+(0.07,0.09)
+(0.08,0.09)
+(0.09,0.10)
+(0.10,0.10)
+(0.11,0.10)
+(0.12,0.10)
+(0.13,0.10)
+(0.14,0.10)
+(0.15,0.10)
+(0.16,0.10)
+(0.17,0.09)
+(0.18,0.09)
+(0.19,0.09)
+(0.20,0.09)
+(0.21,0.08)
+(0.22,0.08)
+(0.23,0.08)
+(0.24,0.08)
+(0.25,0.08)
+(0.26,0.09)
+(0.27,0.09)
+(0.28,0.10)
+(0.29,0.11)
+(0.30,0.12)
+(0.31,0.13)
+(0.32,0.15)
+(0.33,0.16)
+(0.34,0.18)
+(0.35,0.20)
+(0.36,0.23)
+(0.37,0.25)
+(0.38,0.27)
+(0.39,0.30)
+(0.40,0.33)
+(0.41,0.36)
+(0.42,0.39)
+(0.43,0.42)
+(0.44,0.45)
+(0.45,0.48)
+(0.46,0.51)
+(0.47,0.54)
+(0.48,0.57)
+(0.49,0.60)
+(0.50,0.63)
+(0.51,0.65)
+(0.52,0.68)
+(0.53,0.70)
+(0.54,0.72)
+(0.55,0.75)
+(0.56,0.76)
+(0.57,0.78)
+(0.58,0.79)
+(0.59,0.80)
+(0.60,0.81)
+(0.61,0.82)
+(0.62,0.83)
+(0.63,0.83)
+(0.64,0.83)
+(0.65,0.83)
+(0.66,0.83)
+(0.67,0.83)
+(0.68,0.82)
+(0.69,0.82)
+(0.70,0.81)
+(0.71,0.81)
+(0.72,0.80)
+(0.73,0.79)
+(0.74,0.79)
+(0.75,0.78)
+(0.76,0.77)
+(0.77,0.77)
+(0.78,0.76)
+(0.79,0.76)
+(0.80,0.76)
+(0.81,0.76)
+(0.82,0.76)
+(0.83,0.76)
+(0.84,0.77)
+(0.85,0.77)
+(0.86,0.78)
+(0.87,0.79)
+(0.88,0.80)
+(0.89,0.81)
+(0.90,0.82)
+(0.91,0.84)
+(0.92,0.85)
+(0.93,0.87)
+(0.94,0.89)
+(0.95,0.91)
+(0.96,0.93)
+(0.97,0.95)
+(0.98,0.96)
+(0.99,0.98)
+(1.00,1.00)
+GREEN:
+(0.00,0.00)
+(0.01,0.01)
+(0.02,0.01)
+(0.03,0.02)
+(0.04,0.02)
+(0.05,0.03)
+(0.06,0.04)
+(0.07,0.05)
+(0.08,0.06)
+(0.09,0.07)
+(0.10,0.08)
+(0.11,0.10)
+(0.12,0.11)
+(0.13,0.12)
+(0.14,0.14)
+(0.15,0.15)
+(0.16,0.17)
+(0.17,0.19)
+(0.18,0.20)
+(0.19,0.22)
+(0.20,0.24)
+(0.21,0.26)
+(0.22,0.27)
+(0.23,0.29)
+(0.24,0.31)
+(0.25,0.32)
+(0.26,0.34)
+(0.27,0.36)
+(0.28,0.37)
+(0.29,0.39)
+(0.30,0.40)
+(0.31,0.41)
+(0.32,0.42)
+(0.33,0.43)
+(0.34,0.44)
+(0.35,0.45)
+(0.36,0.46)
+(0.37,0.46)
+(0.38,0.47)
+(0.39,0.47)
+(0.40,0.48)
+(0.41,0.48)
+(0.42,0.48)
+(0.43,0.48)
+(0.44,0.48)
+(0.45,0.48)
+(0.46,0.48)
+(0.47,0.48)
+(0.48,0.48)
+(0.49,0.48)
+(0.50,0.47)
+(0.51,0.47)
+(0.52,0.47)
+(0.53,0.47)
+(0.54,0.47)
+(0.55,0.48)
+(0.56,0.48)
+(0.57,0.48)
+(0.58,0.48)
+(0.59,0.49)
+(0.60,0.50)
+(0.61,0.50)
+(0.62,0.51)
+(0.63,0.52)
+(0.64,0.53)
+(0.65,0.54)
+(0.66,0.55)
+(0.67,0.57)
+(0.68,0.58)
+(0.69,0.60)
+(0.70,0.61)
+(0.71,0.63)
+(0.72,0.65)
+(0.73,0.67)
+(0.74,0.68)
+(0.75,0.70)
+(0.76,0.72)
+(0.77,0.74)
+(0.78,0.76)
+(0.79,0.77)
+(0.80,0.79)
+(0.81,0.81)
+(0.82,0.83)
+(0.83,0.84)
+(0.84,0.86)
+(0.85,0.87)
+(0.86,0.89)
+(0.87,0.90)
+(0.88,0.91)
+(0.89,0.92)
+(0.90,0.93)
+(0.91,0.94)
+(0.92,0.95)
+(0.93,0.96)
+(0.94,0.97)
+(0.95,0.97)
+(0.96,0.98)
+(0.97,0.98)
+(0.98,0.99)
+(0.99,0.99)
+(1.00,1.00)
+BLUE:
+(0.00,0.00)
+(0.01,0.02)
+(0.02,0.03)
+(0.03,0.05)
+(0.04,0.07)
+(0.05,0.09)
+(0.06,0.11)
+(0.07,0.13)
+(0.08,0.15)
+(0.09,0.17)
+(0.10,0.19)
+(0.11,0.21)
+(0.12,0.22)
+(0.13,0.24)
+(0.14,0.25)
+(0.15,0.27)
+(0.16,0.28)
+(0.17,0.29)
+(0.18,0.30)
+(0.19,0.30)
+(0.20,0.31)
+(0.21,0.31)
+(0.22,0.31)
+(0.23,0.31)
+(0.24,0.30)
+(0.25,0.30)
+(0.26,0.29)
+(0.27,0.28)
+(0.28,0.28)
+(0.29,0.27)
+(0.30,0.26)
+(0.31,0.25)
+(0.32,0.24)
+(0.33,0.23)
+(0.34,0.22)
+(0.35,0.21)
+(0.36,0.20)
+(0.37,0.19)
+(0.38,0.19)
+(0.39,0.19)
+(0.40,0.18)
+(0.41,0.18)
+(0.42,0.19)
+(0.43,0.19)
+(0.44,0.20)
+(0.45,0.21)
+(0.46,0.22)
+(0.47,0.23)
+(0.48,0.25)
+(0.49,0.27)
+(0.50,0.29)
+(0.51,0.31)
+(0.52,0.33)
+(0.53,0.36)
+(0.54,0.39)
+(0.55,0.42)
+(0.56,0.45)
+(0.57,0.48)
+(0.58,0.51)
+(0.59,0.54)
+(0.60,0.58)
+(0.61,0.61)
+(0.62,0.64)
+(0.63,0.67)
+(0.64,0.70)
+(0.65,0.73)
+(0.66,0.76)
+(0.67,0.78)
+(0.68,0.81)
+(0.69,0.83)
+(0.70,0.85)
+(0.71,0.87)
+(0.72,0.89)
+(0.73,0.91)
+(0.74,0.92)
+(0.75,0.93)
+(0.76,0.94)
+(0.77,0.94)
+(0.78,0.95)
+(0.79,0.95)
+(0.80,0.95)
+(0.81,0.95)
+(0.82,0.95)
+(0.83,0.95)
+(0.84,0.95)
+(0.85,0.95)
+(0.86,0.94)
+(0.87,0.94)
+(0.88,0.94)
+(0.89,0.94)
+(0.90,0.94)
+(0.91,0.94)
+(0.92,0.94)
+(0.93,0.94)
+(0.94,0.94)
+(0.95,0.95)
+(0.96,0.95)
+(0.97,0.96)
+(0.98,0.97)
+(0.99,0.99)
+(1.00,1.00)
diff --git a/cmaps/cubehelix1.sao b/cmaps/cubehelix1.sao
new file mode 100644
index 0000000..3494f37
--- /dev/null
+++ b/cmaps/cubehelix1.sao
@@ -0,0 +1,319 @@
+#-----------------------------------------
+# cubehelix colour scheme for saoimage/DS9
+#
+# start....:  0.5
+# rotations: -1.5
+# hue......:  2.0
+# gamma....:  1.0
+#
+# see: Green (2011), BASI, 39, 289.
+#-----------------------------------------
+# Dave Green: dag at mrao.cam.ac.uk
+#-----------------------------------------
+PSEUDOCOLOR
+RED:
+(0.00,0.00)
+(0.01,0.02)
+(0.02,0.04)
+(0.03,0.06)
+(0.04,0.08)
+(0.05,0.09)
+(0.06,0.10)
+(0.07,0.10)
+(0.08,0.11)
+(0.09,0.11)
+(0.10,0.10)
+(0.11,0.10)
+(0.12,0.09)
+(0.13,0.08)
+(0.14,0.07)
+(0.15,0.05)
+(0.16,0.04)
+(0.17,0.02)
+(0.18,0.00)
+(0.19,0.00)
+(0.20,0.00)
+(0.21,0.00)
+(0.22,0.00)
+(0.23,0.00)
+(0.24,0.00)
+(0.25,0.00)
+(0.26,0.00)
+(0.27,0.00)
+(0.28,0.00)
+(0.29,0.00)
+(0.30,0.00)
+(0.31,0.00)
+(0.32,0.00)
+(0.33,0.00)
+(0.34,0.03)
+(0.35,0.06)
+(0.36,0.09)
+(0.37,0.13)
+(0.38,0.17)
+(0.39,0.21)
+(0.40,0.26)
+(0.41,0.31)
+(0.42,0.36)
+(0.43,0.41)
+(0.44,0.46)
+(0.45,0.51)
+(0.46,0.56)
+(0.47,0.61)
+(0.48,0.66)
+(0.49,0.71)
+(0.50,0.76)
+(0.51,0.80)
+(0.52,0.84)
+(0.53,0.88)
+(0.54,0.91)
+(0.55,0.94)
+(0.56,0.97)
+(0.57,0.99)
+(0.58,1.00)
+(0.59,1.00)
+(0.60,1.00)
+(0.61,1.00)
+(0.62,1.00)
+(0.63,1.00)
+(0.64,1.00)
+(0.65,1.00)
+(0.66,1.00)
+(0.67,0.99)
+(0.68,0.97)
+(0.69,0.95)
+(0.70,0.93)
+(0.71,0.90)
+(0.72,0.88)
+(0.73,0.86)
+(0.74,0.83)
+(0.75,0.81)
+(0.76,0.79)
+(0.77,0.77)
+(0.78,0.75)
+(0.79,0.73)
+(0.80,0.72)
+(0.81,0.71)
+(0.82,0.70)
+(0.83,0.69)
+(0.84,0.69)
+(0.85,0.69)
+(0.86,0.70)
+(0.87,0.71)
+(0.88,0.72)
+(0.89,0.73)
+(0.90,0.75)
+(0.91,0.77)
+(0.92,0.79)
+(0.93,0.81)
+(0.94,0.84)
+(0.95,0.87)
+(0.96,0.89)
+(0.97,0.92)
+(0.98,0.95)
+(0.99,0.97)
+(1.00,1.00)
+GREEN:
+(0.00,0.00)
+(0.01,0.00)
+(0.02,0.00)
+(0.03,0.01)
+(0.04,0.01)
+(0.05,0.01)
+(0.06,0.02)
+(0.07,0.03)
+(0.08,0.04)
+(0.09,0.05)
+(0.10,0.07)
+(0.11,0.08)
+(0.12,0.10)
+(0.13,0.12)
+(0.14,0.14)
+(0.15,0.16)
+(0.16,0.18)
+(0.17,0.20)
+(0.18,0.23)
+(0.19,0.25)
+(0.20,0.28)
+(0.21,0.30)
+(0.22,0.33)
+(0.23,0.35)
+(0.24,0.38)
+(0.25,0.40)
+(0.26,0.42)
+(0.27,0.44)
+(0.28,0.46)
+(0.29,0.48)
+(0.30,0.50)
+(0.31,0.51)
+(0.32,0.53)
+(0.33,0.54)
+(0.34,0.55)
+(0.35,0.55)
+(0.36,0.56)
+(0.37,0.56)
+(0.38,0.56)
+(0.39,0.56)
+(0.40,0.55)
+(0.41,0.55)
+(0.42,0.54)
+(0.43,0.53)
+(0.44,0.52)
+(0.45,0.51)
+(0.46,0.50)
+(0.47,0.49)
+(0.48,0.47)
+(0.49,0.46)
+(0.50,0.45)
+(0.51,0.44)
+(0.52,0.43)
+(0.53,0.42)
+(0.54,0.41)
+(0.55,0.40)
+(0.56,0.40)
+(0.57,0.39)
+(0.58,0.39)
+(0.59,0.39)
+(0.60,0.39)
+(0.61,0.40)
+(0.62,0.40)
+(0.63,0.41)
+(0.64,0.42)
+(0.65,0.43)
+(0.66,0.45)
+(0.67,0.47)
+(0.68,0.48)
+(0.69,0.50)
+(0.70,0.53)
+(0.71,0.55)
+(0.72,0.57)
+(0.73,0.60)
+(0.74,0.63)
+(0.75,0.65)
+(0.76,0.68)
+(0.77,0.71)
+(0.78,0.73)
+(0.79,0.76)
+(0.80,0.78)
+(0.81,0.81)
+(0.82,0.83)
+(0.83,0.85)
+(0.84,0.87)
+(0.85,0.89)
+(0.86,0.91)
+(0.87,0.93)
+(0.88,0.94)
+(0.89,0.95)
+(0.90,0.96)
+(0.91,0.97)
+(0.92,0.98)
+(0.93,0.99)
+(0.94,0.99)
+(0.95,0.99)
+(0.96,1.00)
+(0.97,1.00)
+(0.98,1.00)
+(0.99,1.00)
+(1.00,1.00)
+BLUE:
+(0.00,0.00)
+(0.01,0.02)
+(0.02,0.05)
+(0.03,0.07)
+(0.04,0.10)
+(0.05,0.13)
+(0.06,0.16)
+(0.07,0.19)
+(0.08,0.22)
+(0.09,0.25)
+(0.10,0.28)
+(0.11,0.30)
+(0.12,0.33)
+(0.13,0.35)
+(0.14,0.37)
+(0.15,0.38)
+(0.16,0.40)
+(0.17,0.41)
+(0.18,0.41)
+(0.19,0.41)
+(0.20,0.41)
+(0.21,0.41)
+(0.22,0.40)
+(0.23,0.38)
+(0.24,0.37)
+(0.25,0.35)
+(0.26,0.32)
+(0.27,0.30)
+(0.28,0.27)
+(0.29,0.24)
+(0.30,0.21)
+(0.31,0.18)
+(0.32,0.15)
+(0.33,0.12)
+(0.34,0.09)
+(0.35,0.07)
+(0.36,0.04)
+(0.37,0.02)
+(0.38,0.00)
+(0.39,0.00)
+(0.40,0.00)
+(0.41,0.00)
+(0.42,0.00)
+(0.43,0.00)
+(0.44,0.00)
+(0.45,0.00)
+(0.46,0.00)
+(0.47,0.00)
+(0.48,0.01)
+(0.49,0.04)
+(0.50,0.07)
+(0.51,0.11)
+(0.52,0.15)
+(0.53,0.19)
+(0.54,0.24)
+(0.55,0.28)
+(0.56,0.33)
+(0.57,0.39)
+(0.58,0.44)
+(0.59,0.50)
+(0.60,0.55)
+(0.61,0.61)
+(0.62,0.66)
+(0.63,0.71)
+(0.64,0.76)
+(0.65,0.81)
+(0.66,0.86)
+(0.67,0.90)
+(0.68,0.94)
+(0.69,0.98)
+(0.70,1.00)
+(0.71,1.00)
+(0.72,1.00)
+(0.73,1.00)
+(0.74,1.00)
+(0.75,1.00)
+(0.76,1.00)
+(0.77,1.00)
+(0.78,1.00)
+(0.79,1.00)
+(0.80,1.00)
+(0.81,1.00)
+(0.82,1.00)
+(0.83,1.00)
+(0.84,1.00)
+(0.85,1.00)
+(0.86,1.00)
+(0.87,1.00)
+(0.88,1.00)
+(0.89,0.98)
+(0.90,0.97)
+(0.91,0.96)
+(0.92,0.95)
+(0.93,0.95)
+(0.94,0.94)
+(0.95,0.95)
+(0.96,0.95)
+(0.97,0.96)
+(0.98,0.97)
+(0.99,0.98)
+(1.00,1.00)
diff --git a/doc/beta.html b/doc/beta.html
index 651446c..80e6e7b 100644
--- a/doc/beta.html
+++ b/doc/beta.html
@@ -6,7 +6,19 @@
   <meta name="GENERATOR"
  content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
   <title>DS9</title>
-</head>
+<script type="text/javascript">
+
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-30382362-2']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+
+</script></head>
 <body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"
  link="#0000ee" vlink="#551a8b" alink="#ff0000">
 <h3> <img src="sun.gif" alt="" height="98" width="100" align="middle">
diff --git a/doc/index.html b/doc/index.html
index 9993875..e10bf47 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -6,6 +6,19 @@
   <meta name="GENERATOR"
  content="Mozilla/4.76 [en] (X11; U; SunOS 5.8 sun4u) [Netscape]">
   <title>DS9</title>
+<script type="text/javascript">
+
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-30382362-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+
+</script>
 </head>
 <body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"
  link="#0000ee" vlink="#551a8b" alink="#ff0000">
diff --git a/doc/ref/command.html b/doc/ref/command.html
index 3cfc75f..65cd9f5 100644
--- a/doc/ref/command.html
+++ b/doc/ref/command.html
@@ -8,7 +8,7 @@
     <title>Command Line Options</title>
   </head>
   <body alink="#ff0000" link="#0000ff" vlink="#551a8b">
-    <h3><img alt="" src="../sun.gif" align="middle" height="98"
+    <h3><img alt="" src="../sun.gif" height="98" align="middle"
         width="100"> Command Line Options</h3>
     <blockquote>
       <p>DS9 will process each command line option, one at a time, as
@@ -47,6 +47,7 @@
         <a href="#dsseso">dsseso</a><br>
         <a href="#dssstsci">dssstsci</a><br>
         <a href="#exit">exit</a><br>
+        <a href="#export">export</a><br>
         <a href="#fifo">fifo</a><br>
         <a href="#fifo_only">fifo_only</a><br>
         <a href="#file">file</a><br>
@@ -62,6 +63,8 @@
         <a href="#help">help</a><br>
         <a href="#histequ">histequ</a><br>
         <a href="#iconify">iconify</a><br>
+        <a href="#image">image</a><br>
+        <a href="#image">import</a><br>
         <a href="#inet_only">inet_only</a><br>
         <a href="#invert">invert</a><br>
         <a href="#iis">iis</a><br>
@@ -110,7 +113,6 @@
         <a href="#rotate">rotate</a><br>
         <a href="#samp">samp</a><br>
         <a href="#saveimage">saveimage</a><br>
-        <a href="#savefits">savefits</a><br>
         <a href="#savempeg">savempeg</a><br>
         <a href="#scale">scale</a><br>
         <a href="#shm">shm</a><br>
@@ -674,6 +676,11 @@
 
 
 
+
+
+
+
+
         [match <coordsys>]<br>
                    [lock
         <coordsys>|none]</tt><br>
@@ -824,6 +831,24 @@
         Example: <br>
         $ds9 -exit<br>
       </tt>
+      <p><b> <a name="export"></a>export<br>
+        </b></p>
+      <p>Export loaded image data of current frame in specified image
+        format, using current colormap and contrast/bias settings. <tt>fits,
+
+          gif, tiff (tif), jpeg (jpg), png, ppm</tt> formats supported.
+        If no format specified, the file name extension is used to
+        determine the output format. Optional parameters: jpeg quality
+        (1-100) and tiff compression method.<br>
+      </p>
+      <tt> Syntax: <br>
+        -export [fits|gif|tiff|jpeg|png|ppm] <filename></tt><tt><br>
+      </tt><tt>-export <filename></tt><tt>.jpeg [1-100]<br>
+      </tt><tt>-export <filename></tt><tt>.tiff
+        [none|jpeg|packbits|deflate]</tt><br>
+      <tt>  <br>
+        Example: <br>
+        $ds9 -export foo.jpg 75</tt><br>
       <p><b><a name="fifo"></a>fifo</b></p>
       <p>Set the name of the IRAF input and output fifos. The default is
         /dev/imt1. These fifos are used by IRAF to communicate with DS9.
@@ -1152,7 +1177,19 @@
          <br>
         Example: <br>
         $ds9 -iconify<br>
-        $ds9 -iconify yes </tt>
+        $ds9 -iconify yes<br>
+      </tt>
+      <p><b> <a name="image"></a>image<br>
+          import<br>
+        </b></p>
+      <p>Load image file into the current frame. Accepts  <tt>gif,
+          tiff, jpeg, png, ppm</tt> formats.<br>
+      </p>
+      <tt> Syntax: <br>
+        -image <filename></tt><tt><br>
+         <br>
+        Example: <br>
+        $ds9 -image foo.jpg</tt><br>
       <p><b> <a name="invert"></a>invert</b></p>
       <p>Invert Colormap. </p>
       <tt> Syntax: <br>
@@ -1392,6 +1429,11 @@
 
 
 
+
+
+
+
+
         [pan]<br>
                    
 
@@ -1407,6 +1449,11 @@
 
 
 
+
+
+
+
+
         [crosshair]<br>
                    
 
@@ -1422,6 +1469,11 @@
 
 
 
+
+
+
+
+
         [open|close]<br>
          <br>
         Example: <br>
@@ -1527,6 +1579,11 @@
 
 
 
+
+
+
+
+
         [yes|open]<br>
                    
         [no|close]<br>
@@ -2012,37 +2069,40 @@
         $ds9 -samp send image aladin<br>
       </tt>
       <p><b> <a name="saveimage"></a>saveimage</b></p>
-      <p>Save visible image(s) as a raster. If image is a cube, the mpeg
-        option will cycle thru each slice creating a mpeg movie.</p>
+      <p>Create a snap shot of the current DS9 window and save in
+        specified image format. <tt>fits, gif, tiff (tif), jpeg (jpg),
+          pnm, ppm</tt> formats supported. If no format specified, the
+        file name extension is used to determine the output format.
+        Optional parameters: jpeg quality (1-100) and tiff compression
+        method. </p>
       <tt> Syntax: <br>
-        -saveimage fits <filename><br>
-        -saveimage jpeg [1-100] <filename><br>
-        -saveimage tiff [none|jpeg|packbits|deflate] <filename><br>
-        -saveimage png <filename><br>
-        -saveimage ppm <filename><br>
-        -saveimage mpeg [1-31] <filename><br>
+        -saveimage </tt><tt>[fits|gif|tiff|jpeg|png|ppm] </tt><tt><filename><br>
+        -saveimage <filename>.jpeg [1-100]<br>
+        -saveimage <filename>.tiff [none|jpeg|packbits|deflate]<br>
          <br>
         Example: <br>
-        $ds9 -saveimage fits ds9.fits<br>
-        $ds9 -saveimage jpeg 75 ds9.jpg<br>
-      </tt>
-      <p><b><a name="savefits"></a>savefits</b></p>
-      <p>Save current frame data as FITS. This differs from SAVEIMAGE in
-        that the entire image of the current frame is saved as a FITS,
-        without graphics.</p>
-      <tt> Syntax:<br>
-        -savefits <filename><br>
-         <br>
-        Example:<br>
-        $ds9 -savefits ds9.fits<br>
+        $ds9 -saveimage ds9.fits<br>
+        $ds9 -saveimage ds9.jpg 75</tt><tt><br>
       </tt>
       <p><b><a name="savempeg"></a>savempeg</b></p>
-      <p>Save all active frames as a mpeg movie. </p>
+      <p>Create mpeg1 movie from snap shots of the DS9 window. A <tt>slice</tt>
+        movie cycles though all slices of a cube. A <tt>frame</tt>
+        movie cycles through all active frames. A <tt>3d</tt> movie
+        cycles through specified viewing angles. The default is <tt>frame</tt>.
+        Optional parameters for <tt>3d</tt>: number of frames, azimuth
+        from/to, elevation from/to, slice from/to, oscillate/repeat
+        times.<br>
+      </p>
       <tt> Syntax:<br>
-        -savempeg <filename><br>
+        -savempeg [slice|frame|3d] <filename><br>
+        -savempeg 3d <filename>
+        [number|azfrom|azto|elfrom|elto|slfrom|slto|oscillate|repeat
+        <#>]<br>
          <br>
         Example:<br>
-        $ds9 -savempeg ds9.mpg<br>
+        $ds9 -savempeg slice ds9.mpg<br>
+        $ds9 -savempeg 3d ds9.mpg number 10 azfrom -60 azto 60 oscillate
+        1<br>
       </tt>
       <p><b> <a name="scale"></a>scale</b></p>
       <p>Controls the limits and color scale distribution. </p>
diff --git a/doc/ref/region.html b/doc/ref/region.html
index acdf726..76510ee 100644
--- a/doc/ref/region.html
+++ b/doc/ref/region.html
@@ -1,563 +1,669 @@
 <!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
 <html>
-<head>
-  <meta http-equiv="Content-Type"
- content="text/html; charset=ISO-8859-1">
-  <meta name="GENERATOR"
- content="Mozilla/4.78 [en] (X11; U; Linux 2.4.7-10 i686) [Netscape]">
-  <title>Regions</title>
-  <meta http-equiv="Content-Type"
- content="text/html; charset=ISO-8859-1">
-  <meta name="GENERATOR"
- content="Mozilla/4.78 [en] (X11; U; Linux 2.4.7-10 i686) [Netscape]">
-</head>
-<body alink="#ff0000" bgcolor="#ffffff" text="#000000" vlink="#551a8b"
- link="#0000ff">
-<h3><img alt="" src="../sun.gif" align="middle" width="100" height="98">
-Regions</h3>
-<blockquote>
-  <p>Regions provide a means for marking particular areas of an image
-for further analysis. Regions may also be used for presentation
-purposes. DS9 supports a number of region descriptions, each of which
-may be edited, moved, rotated, displayed, saved and loaded, via the GUI
-and XPA.</p>
-  <a href="#RegionDescriptions">Region Descriptions</a><br>
-  <a href="#RegionProperties">Region Properties</a><br>
-  <a href="#RegionFileFormat">Region File Format</a><br>
-  <a href="#CompositeRegion">Composite Region</a><br>
-  <a href="#TemplateRegion">Template Region</a><br>
-  <a href="#ExternalRegionFiles">External Region Files</a><br>
-  <p><b> <a name="RegionDescriptions"></a>Region Descriptions</b></p>
-  <p><tt>Circle<br>
-Usage: circle x y radius </tt></p>
-  <p><tt>Ellipse<br>
-Usage: ellipse x y radius radius angle </tt></p>
-  <p><tt>Box <br>
-Usage: box x y width height angle </tt></p>
-  <p><tt>Polygon <br>
-Usage: polygon x1 y1 x2 y2 x3 y3 ... </tt></p>
-  <p><tt>Line <br>
-Usage: line x1 y1 x2 y2 # line=[0|1] [0|1] </tt></p>
-  <p><tt>Vector <br>
-Usage: vector x1 y1 length angle # vector=[0|1] </tt></p>
-  <p><tt>Text <br>
-Usage: text x y # text={Your Text Here}<br>
-       text x y {Your Text Here} </tt></p>
-  <p><tt>Ruler <br>
-Usage: ruler x1 y1 x2 y2 # ruler=[pixels|degrees|arcmin|arcsec]</tt></p>
-  <p><tt>Compass <br>
-Usage: compass x1 y1 length # compass=<coordinate system>
-<north label> <east label> [0|1] [0|1] </tt></p>
-  <p><tt>Projection <br>
-Usage: projection x1 y1 x2 y2 width</tt></p>
-  <p><tt>Projection3d<br>
-Usage: projection3d x y radius </tt><br>
-  </p>
-  <p><tt>Annulus <br>
-Usage: annulus x y inner outer n=# <br>
-       annulus x y r1 r2 r3... </tt></p>
-  <p><tt>Ellipse Annulus <br>
-Usage: ellipse x y r11 r12 r21 r22 n=# [angle]<br>
-       ellipse x y r11 r12 r21 r22 r31
-r32 ... [angle] </tt></p>
-  <p><tt>Box Annulus <br>
-Usage: box x y w1 h1 w2 h2 [angle] <br>
-       box x y w1 h1 w2 h2 w3 h3 ...
-[angle] </tt></p>
-  <p><tt>Panda <br>
-Usage: panda x y startangle stopangle nangle inner outer nradius</tt></p>
-  <p><tt>Epanda <br>
-Usage: epanda x y startangle stopangle nangle inner outer nradius
-[angle]</tt></p>
-  <p><tt>Bpanda <br>
-Usage: bpanda x y startangle stopangle nangle inner outer nradius
-[angle]</tt></p>
-  <p><tt>Circle Point <br>
-Usage: point x y # point=circle [size]<br>
-       circle point x y </tt></p>
-  <p><tt>Box Point <br>
-Usage: point x y # point=box [size]<br>
-       box point x y </tt></p>
-  <p><tt>Diamond Point <br>
-Usage: point x y # point=diamond [size]<br>
-       diamond point x y </tt></p>
-  <p><tt>Cross Point <br>
-Usage: point x y # point=cross [size]<br>
-       cross point x y </tt></p>
-  <p><tt>X Point <br>
-Usage: point x y # point=x [size]<br>
-       x point x y </tt></p>
-  <p><tt>Arrow Point <br>
-Usage: point x y # point=arrow [size]<br>
-       arrow point x y </tt></p>
-  <p><tt>BoxCircle Point<br>
-Usage: point x y # point=boxcircle[size]<br>
-       boxcircle point x y</tt></p>
-  <p><tt>Composite<br>
-Usage: # composite x y angle</tt></p>
-  <p><b> <a name="RegionProperties"></a>Region Properties</b></p>
-  <p>Each region has a number of properties associated with the region,
-which indicates how the region is to be rendered or manipulated.
-Properties are defined for a region in the comment section of the
-region description. The exception is the Include/Exclude property. It
-is set via '+' or '-' preceding the region. In addition, the Line,
-Point, and Ruler regions have unique properties, not shared by others.
-Not all properties are available via the GUI or are applicable for all
-regions. </p>
-  <blockquote>
-    <p><b> Text</b></p>
-    <p>All regions may have text associated with them. Use the text
-property to set the text. Strings may be quoted with " or ' or {}. For
-best results, use {}. </p>
-    <tt>Example: circle(100,100,20) # text = {This message has both a "
-and ' in it}</tt>
-    <p><b> Color</b></p>
-    <p>The color property specifies the color of the region when
-rendered. The follow 8 colors are supported: </p>
-    <tt>Example: circle(100,100,20) # color = green</tt><br>
-    <p><b>Dash List</b></p>
-    <p>Sets dashed line parameters. This does not render the region in
-dashed lines.</p>
-    <tt>Example: circle(100,100,20) # dashlist = 8 3</tt><br>
-    <p><b>Width</b></p>
-    <p>Sets the line width used to render the region.</p>
-    <tt>Example: circle(100,100,20) # width = 2</tt><br>
-    <p><b>Font</b></p>
-    <p>The font property specifies the font family, size, weight, and
-slant of any text to be displayed along with the region. </p>
-    <tt>Example: circle(100,100,20) # font="times 12 bold italic"</tt>
-    <p><b> Can Select</b></p>
-    <p>The Select property specifies if the user is allowed to select
-(hence, edit) the region via the GUI. For Regions used for catalogs and
-such, it is desirable that the user is unable to edit, move, or delete
-the region.<br>
-    </p>
-    <tt>Example: circle(100,100,20) # select = 1</tt><br>
-    <p><b>Can Highlite</b></p>
-The Highlite property specifies if the edit handles become visible when
-the region is selected.<br>
-    <tt>Example: circle(100,100,20) # hightlite = 1</tt><br>
-    <p><b>Dash</b></p>
-    <p>Render region using dashed lines using current <tt>dashlist</tt>
-value.</p>
-    <tt>Example: circle(100,100,20) # dash = 1</tt><br>
-    <p><b>Fixed in Size</b></p>
-    <p>The Fixed in Size property specifies that the region does not
-change in size as the image magnification factor changes. This allows
-the user to build complex pointer type regions. </p>
-    <tt>Example: circle(100,100,20) # fixed = 1</tt>
-    <p><b> Can Edit</b></p>
-    <p>The Edit property specifies if the user is allowed to edit the
-region via the GUI. </p>
-    <tt>Example: circle(100,100,20) # edit = 1</tt>
-    <p><b> Can Move</b></p>
-    <p>The Move property specifies if the user is allowed to move the
-region via the GUI. </p>
-    <tt>Example: circle(100,100,20) # move = 1</tt>
-    <p><b> Can Rotate</b></p>
-    <p>The Rotate property specifies if the user is allowed to rotate
-the region via the GUI. </p>
-    <tt>Example: circle(100,100,20) # rotate = 1</tt>
-    <p><b> Can Delete</b></p>
-    <p>The Delete property specifies if the user is allowed to delete
-the region via the GUI. </p>
-    <tt>Example: circle(100,100,20) # delete = 1</tt>
-    <p><b> Include/Exclude</b></p>
-    <p>The Include/Exclude properties flags the region with a boolean <tt>NOT
-
-
-    </tt>for later analysis. Use '+' for include (default), '-' for
-exclude. </p>
-    <tt>Example: -circle(100,100,20)<br>
-    </tt>
-    <p><b>Source/Background</b></p>
-    <p>The Source/Background properties flag the region for use with
-other analysis applications. The default is <tt>source</tt></p>
-    <tt>Example: circle(100,100,20) # source<br>
-         circle(200,200,10) #
-background</tt><br>
-    <p><b>Tag</b></p>
-    <p>All regions may have zero or more tags associated with it, which
-may be used for grouping and searching. </p>
-    <tt>Example:  circle(100,100,20) # tag = {Group 1} tag =
-{Group 2}</tt>
-    <p><b> Line</b></p>
-    <p>The line region may be rendered with arrows, one at each end. To
-indicate arrows, use the line property. A '1' indicates an arrow, '0'
-indicates no arrow. </p>
-    <tt>Example: line(100,100,200,200) # line= 1 1</tt>
-    <p><b> Ruler</b></p>
-    <p>The ruler region may display information in 'pixels', 'degrees',
-'arcmin', or 'arcsec'. Use the ruler property to indicate which format
-to display distances in. </p>
-    <tt>Example: ruler(100,100,200,200) # ruler=arcmin</tt>
-    <p><b> Point</b></p>
-    <p>Point regions have an associated type and size. Use the point
-property to set the point type. </p>
-    <tt>Example: point(100,100) # point=diamond 31</tt>
-    <p><b> Default Properties</b></p>
-    <p>The default properties are: </p>
-    <blockquote> <tt>text={}</tt> <br>
-      <tt>color=green</tt> <br>
-      <tt>font="helvetica 10 normal roman"</tt> <br>
-      <tt>select=1</tt> <br>
-      <tt>edit=1</tt> <br>
-      <tt>move=1</tt> <br>
-      <tt>delete=1</tt> <br>
-      <tt>highlite=1</tt> <br>
-      <tt>include=1</tt> <br>
-      <tt>fixed=0</tt> </blockquote>
-  </blockquote>
-  <p><b><a name="RegionFileFormat"></a>Region File Format</b></p>
-  <blockquote>
-    <p><b> Syntax</b></p>
-    <p>Region arguments may be separated with either a comma or space.
-Optional parentheses may be used a the beginning and end of a
-description. </p>
-    <blockquote> <tt>circle 100 100 10</tt> <br>
-      <tt>circle(100 100 10)</tt> <br>
-      <tt>circle(100,100,10)</tt> </blockquote>
-    <p><b> Comments</b></p>
-    <p>All lines that begin with <tt>#</tt> are comments and will be
-ignored.</p>
-    <blockquote> <tt># This is a comment</tt> </blockquote>
-    <p><b> Delimiter</b></p>
-    <p>All lines may be delimited with either a new-line or semi-colon.
-    </p>
-    <blockquote> <tt>circle 100 100 10</tt> <br>
-      <tt>ellipse 200 200 20 40 ; box 300 300 20 40</tt> </blockquote>
-    <p><b> Header</b></p>
-    <p>A DS9 region file may start with the following optional header: </p>
-    <blockquote> <tt># Region file format: DS9 version 4.0</tt> </blockquote>
-    <p><b> Global Properties</b></p>
-    <p>Global properties affect all regions unless a local property is
-specified. The <tt>global</tt> keyword is first, followed by a list of
-keyword = value pairs. Multiple global property lines may be used
-within a region file. </p>
-    <blockquote> <tt>global color=green font="helvetica 10 normal
-roman" edit=1 move=1 delete=1 highlite=1 include=1 wcs=wcs</tt> </blockquote>
-    <p><b> Local Properties</b></p>
-    <p>Local properties start with a # after a region description and
-only affect the region it is specified with. </p>
-    <blockquote> <tt>physical;circle(504,513,20) # color=red
-text={This is a Circle}</tt> </blockquote>
-    <p><b> Coordinate Systems</b></p>
-    <p>For each region, it is important to specify the coordinate
-system used to interpret the region, i.e., to set the context in which
-the position and size values are interpreted. For this purpose, the
-following keywords are recognized: </p>
-    <blockquote> <tt>PHYSICAL               
-
-# pixel coords of original file using LTM/LTV</tt> <br>
-      <tt>IMAGE                  
-
-# pixel coords of current file</tt> <br>
-      <tt>FK4,
-B1950             
-
-# sky coordinate systems</tt> <br>
-      <tt>FK5,
-J2000             
-
-# sky coordinate systems</tt> <br>
-      <tt>GALACTIC               
-
-# sky coordinate systems</tt> <br>
-      <tt>ECLIPTIC               
-
-# sky coordinate systems</tt> <br>
-      <tt>ICRS                   
-
-# currently same as J2000</tt> <br>
-      <tt>LINEAR                 
-
-# linear wcs as defined in file</tt> <br>
-      <tt>AMPLIFIER              
-
-# mosaic coords of original file using ATM/ATV</tt> <br>
-      <tt>DETECTOR               
-
-# mosaic coords of original file usingDTM/DTV</tt> </blockquote>
-    <p><b> Mosaic Images</b></p>
-    <p>While some coordinate systems are unique across mosaic images,
-others coordinate systems, such as <tt>image</tt>, or <tt>physical</tt>
-, are valid on a per segment basis. In this case, use <tt>tile</tt> to
-specify which header to use in all coordinate conversions. The default
-is the first header, or <tt>tile 1</tt>. </p>
-    <tt>Example: tile 2;fk5;point(100,100)</tt>
-    <p><b> Multiple WCS</b></p>
-    <p>If an image has multiple wcs's defined, use <tt>wcs#</tt> to
-specify which wcs to use for all wcs references. Valid values are <tt>wcs,
-
-wcsa, wcsb, wcsc... wcsz.</tt><br>
-    <tt>Example: wcsa;linear;point(100,100) # point=diamond</tt></p>
-    <p><b> Specifying Positions and Sizes</b></p>
-    <p>The arguments to region shapes can be floats or integers
-describing positions and sizes. They can be specified as pure numbers
-or using explicit formatting directives: </p>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;
+      charset=ISO-8859-1">
+    <meta name="GENERATOR" content="Mozilla/4.78 [en] (X11; U; Linux
+      2.4.7-10 i686) [Netscape]">
+    <title>Regions</title>
+    <meta http-equiv="Content-Type" content="text/html;
+      charset=ISO-8859-1">
+    <meta name="GENERATOR" content="Mozilla/4.78 [en] (X11; U; Linux
+      2.4.7-10 i686) [Netscape]">
+  </head>
+  <body text="#000000" vlink="#551a8b" alink="#ff0000" bgcolor="#ffffff"
+    link="#0000ff">
+    <h3><img alt="" src="../sun.gif" width="100" align="middle"
+        height="98"> Regions</h3>
     <blockquote>
-      <p><b>position arguments</b> </p>
-      <tt>[num]                  
+      <p>Regions provide a means for marking particular areas of an
+        image for further analysis. Regions may also be used for
+        presentation purposes. DS9 supports a number of region
+        descriptions, each of which may be edited, moved, rotated,
+        displayed, saved and loaded, via the GUI and XPA.</p>
+      <a href="#RegionDescriptions">Region Descriptions</a><br>
+      <a href="#RegionProperties">Region Properties</a><br>
+      <a href="#RegionFileFormat">Region File Format</a><br>
+      <a href="#CompositeRegion">Composite Region</a><br>
+      <a href="#TemplateRegion">Template Region</a><br>
+      <a href="#ExternalRegionFiles">External Region Files</a><br>
+      <p><b> <a name="RegionDescriptions"></a>Region Descriptions</b></p>
+      <p><tt>Circle<br>
+          Usage: circle x y radius<br>
+        </tt></p>
+      <p><tt>Ellipse<br>
+          Usage: ellipse x y radius radius angle<br>
+        </tt></p>
+      <p><tt>Box <br>
+          Usage: box x y width height angle<br>
+        </tt></p>
+      <p><tt>Polygon <br>
+          Usage: polygon x1 y1 x2 y2 x3 y3 ...<br>
+        </tt></p>
+      <p><tt>Point <br>
+          Usage: point x y #
+          point=[circle|box|diamond|cross|x|arrow|boxcircle] [size]<br>
+                 circle point x y </tt></p>
+      <p><tt>Line <br>
+          Usage: line x1 y1 x2 y2 # line=[0|1] [0|1] </tt></p>
+      <p><tt>Vector <br>
+          Usage: vector x1 y1 length angle # vector=[0|1] </tt></p>
+      <p><tt>Text <br>
+          Usage: text x y # text={Your Text Here}<br>
+                 text x y {Your Text Here}
+        </tt></p>
+      <p><tt>Ruler <br>
+          Usage: ruler x1 y1 x2 y2 #
+          ruler=[pixels|degrees|arcmin|arcsec]</tt></p>
+      <p><tt>Compass <br>
+          Usage: compass x1 y1 length # compass=<coordinate
+          system> <north label> <east label> [0|1] [0|1]
+        </tt></p>
+      <p><tt>Projection <br>
+          Usage: projection x1 y1 x2 y2 width</tt></p>
+      <p><tt>Annulus <br>
+          Usage: annulus x y inner outer n=# <br>
+                 annulus x y r1 r2 r3... </tt></p>
+      <p><tt>Ellipse Annulus <br>
+          Usage: ellipse x y r11 r12 r21 r22 n=# [angle]<br>
+                 ellipse x y r11 r12 r21
+          r22 r31 r32 ... [angle] </tt></p>
+      <p><tt>Box Annulus <br>
+          Usage: box x y w1 h1 w2 h2 [angle] <br>
+                 box x y w1 h1 w2 h2 w3 h3
+          ... [angle] </tt></p>
+      <p><tt>Panda <br>
+          Usage: panda x y startangle stopangle nangle inner outer
+          nradius</tt></p>
+      <p><tt>Epanda <br>
+          Usage: epanda x y startangle stopangle nangle inner outer
+          nradius [angle]</tt></p>
+      <p><tt>Bpanda <br>
+          Usage: bpanda x y startangle stopangle nangle inner outer
+          nradius [angle]</tt></p>
+      <p><tt>Composite<br>
+          Usage: # composite x y angle</tt></p>
+      <p><b> <a name="RegionProperties"></a>Region Properties</b></p>
+      <p>Each region has a number of properties associated with the
+        region, which indicates how the region is to be rendered or
+        manipulated. Properties are defined for a region in the comment
+        section of the region description. The exception is the
+        Include/Exclude property. It is set via '+' or '-' preceding the
+        region. In addition, the Line, Point, and Ruler regions have
+        unique properties, not shared by others. Not all properties are
+        available via the GUI or are applicable for all regions. </p>
+      <blockquote>
+        <p><b> Text</b></p>
+        <p>All regions may have text associated with them. Use the text
+          property to set the text. Strings may be quoted with " or ' or
+          {}. For best results, use {}. </p>
+        <tt>Example: circle(100,100,20) # text = {This message has both
+          a " and ' in it}</tt>
+        <p><b> Color</b></p>
+        <p>The color property specifies the color of the region when
+          rendered. The follow 8 colors are supported: </p>
+        <tt>Example: circle(100,100,20) # color = green</tt><br>
+        <p><b>Dash List</b></p>
+        <p>Sets dashed line parameters. This does not render the region
+          in dashed lines.</p>
+        <tt>Example: circle(100,100,20) # dashlist = 8 3</tt><br>
+        <p><b>Width</b></p>
+        <p>Sets the line width used to render the region.</p>
+        <tt>Example: circle(100,100,20) # width = 2</tt><br>
+        <p><b>Font</b></p>
+        <p>The font property specifies the font family, size, weight,
+          and slant of any text to be displayed along with the region. </p>
+        <tt>Example: circle(100,100,20) # font="times 12 bold italic"</tt>
+        <p><b> Can Select</b></p>
+        <p>The Select property specifies if the user is allowed to
+          select (hence, edit) the region via the GUI. For Regions used
+          for catalogs and such, it is desirable that the user is unable
+          to edit, move, or delete the region.<br>
+        </p>
+        <tt>Example: circle(100,100,20) # select = 1</tt><br>
+        <p><b>Can Highlite</b></p>
+        The Highlite property specifies if the edit handles become
+        visible when the region is selected.<br>
+        <tt>Example: circle(100,100,20) # hightlite = 1</tt><br>
+        <p><b>Dash</b></p>
+        <p>Render region using dashed lines using current <tt>dashlist</tt>
+          value.</p>
+        <tt>Example: circle(100,100,20) # dash = 1</tt><br>
+        <p><b>Fixed in Size</b></p>
+        <p>The Fixed in Size property specifies that the region does not
+          change in size as the image magnification factor changes. This
+          allows the user to build complex pointer type regions. </p>
+        <tt>Example: circle(100,100,20) # fixed = 1</tt>
+        <p><b> Can Edit</b></p>
+        <p>The Edit property specifies if the user is allowed to edit
+          the region via the GUI. </p>
+        <tt>Example: circle(100,100,20) # edit = 1</tt>
+        <p><b> Can Move</b></p>
+        <p>The Move property specifies if the user is allowed to move
+          the region via the GUI. </p>
+        <tt>Example: circle(100,100,20) # move = 1</tt>
+        <p><b> Can Rotate</b></p>
+        <p>The Rotate property specifies if the user is allowed to
+          rotate the region via the GUI. </p>
+        <tt>Example: circle(100,100,20) # rotate = 1</tt>
+        <p><b> Can Delete</b></p>
+        <p>The Delete property specifies if the user is allowed to
+          delete the region via the GUI. </p>
+        <tt>Example: circle(100,100,20) # delete = 1</tt>
+        <p><b> Include/Exclude</b></p>
+        <p>The Include/Exclude properties flags the region with a
+          boolean <tt>NOT </tt>for later analysis. Use '+' for include
+          (default), '-' for exclude. </p>
+        <tt>Example: -circle(100,100,20)<br>
+        </tt>
+        <p><b>Source/Background</b></p>
+        <p>The Source/Background properties flag the region for use with
+          other analysis applications. The default is <tt>source</tt></p>
+        <tt>Example: circle(100,100,20) # source<br>
+                   circle(200,200,10)
+          # background</tt><br>
+        <p><b>Tag</b></p>
+        <p>All regions may have zero or more tags associated with it,
+          which may be used for grouping and searching. </p>
+        <tt>Example:  circle(100,100,20) # tag = {Group 1} tag =
+          {Group 2}</tt>
+        <p><b> Line</b></p>
+        <p>The line region may be rendered with arrows, one at each end.
+          To indicate arrows, use the line property. A '1' indicates an
+          arrow, '0' indicates no arrow. </p>
+        <tt>Example: line(100,100,200,200) # line= 1 1</tt>
+        <p><b> Ruler</b></p>
+        <p>The ruler region may display information in 'pixels',
+          'degrees', 'arcmin', or 'arcsec'. Use the ruler property to
+          indicate which format to display distances in. </p>
+        <tt>Example: ruler(100,100,200,200) # ruler=arcmin</tt>
+        <p><b> Point</b></p>
+        <p>Point regions have an associated type and size. Use the point
+          property to set the point type. </p>
+        <tt>Example: point(100,100) # point=diamond 31</tt>
+        <p><b> Default Properties</b></p>
+        <p>The default properties are: </p>
+        <blockquote> <tt>text={}</tt> <br>
+          <tt>color=green</tt> <br>
+          <tt>font="helvetica 10 normal roman"</tt> <br>
+          <tt>select=1</tt> <br>
+          <tt>edit=1</tt> <br>
+          <tt>move=1</tt> <br>
+          <tt>delete=1</tt> <br>
+          <tt>highlite=1</tt> <br>
+          <tt>include=1</tt> <br>
+          <tt>fixed=0</tt> </blockquote>
+      </blockquote>
+      <p><b><a name="RegionFileFormat"></a>Region File Format</b></p>
+      <blockquote>
+        <p><b> Syntax</b></p>
+        <p>Region arguments may be separated with either a comma or
+          space. Optional parentheses may be used a the beginning and
+          end of a description. </p>
+        <blockquote> <tt>circle 100 100 10</tt> <br>
+          <tt>circle(100 100 10)</tt> <br>
+          <tt>circle(100,100,10)</tt> </blockquote>
+        <p><b> Comments</b></p>
+        <p>All lines that begin with <tt>#</tt> are comments and will
+          be ignored.</p>
+        <blockquote> <tt># This is a comment</tt> </blockquote>
+        <p><b> Delimiter</b></p>
+        <p>All lines may be delimited with either a new-line or
+          semi-colon. </p>
+        <blockquote> <tt>circle 100 100 10</tt> <br>
+          <tt>ellipse 200 200 20 40 ; box 300 300 20 40</tt> </blockquote>
+        <p><b> Header</b></p>
+        <p>A DS9 region file may start with the following optional
+          header: </p>
+        <blockquote> <tt># Region file format: DS9 version 4.0</tt> </blockquote>
+        <p><b> Global Properties</b></p>
+        <p>Global properties affect all regions unless a local property
+          is specified. The <tt>global</tt> keyword is first, followed
+          by a list of keyword = value pairs. Multiple global property
+          lines may be used within a region file. </p>
+        <blockquote> <tt>global color=green font="helvetica 10 normal
+            roman" edit=1 move=1 delete=1 highlite=1 include=1 wcs=wcs</tt>
+        </blockquote>
+        <p><b> Local Properties</b></p>
+        <p>Local properties start with a # after a region description
+          and only affect the region it is specified with. </p>
+        <blockquote> <tt>physical;circle(504,513,20) # color=red
+            text={This is a Circle}</tt> </blockquote>
+        <p><b> Coordinate Systems</b></p>
+        <p>For each region, it is important to specify the coordinate
+          system used to interpret the region, i.e., to set the context
+          in which the position and size values are interpreted. For
+          this purpose, the following keywords are recognized: </p>
+        <blockquote> <tt>PHYSICAL               
 
-# context-dependent (see below)</tt> <br>
-      <tt>[num]d                 
+#
 
-# degrees</tt> <br>
-      <tt>[num]r                 
 
-# radians</tt> <br>
-      <tt>[num]p                 
 
-# physical pixels</tt> <br>
-      <tt>[num]i                 
+            pixel coords of original file using LTM/LTV</tt> <br>
+          <tt>IMAGE                  
 
-# image pixels</tt> <br>
-      <tt>[num]:[num]:[num]       # hms
-for 'odd' position arguments</tt> <br>
-      <tt>[num]:[num]:[num]       # dms
-for 'even' position arguments</tt> <br>
-      <tt>[num]h[num]m[num]s      # explicit
-hms</tt> <br>
-      <tt>[num]d[num]m[num]s      # explicit
-dms</tt>
-      <p><b>size arguments</b> </p>
-      <tt>[num]                  
+#
 
-# context-dependent (see below)</tt> <br>
-      <tt>[num]"                 
 
-# arc sec</tt> <br>
-      <tt>[num]'                 
 
-# arc min</tt> <br>
-      <tt>[num]d                 
+            pixel coords of current file</tt> <br>
+          <tt>FK4,
+            B1950             
 
-# degrees</tt> <br>
-      <tt>[num]r                 
+#
 
-# radians</tt> <br>
-      <tt>[num]p                 
 
-# physical pixels</tt> <br>
-      <tt>[num]i                 
 
-# image pixels</tt>
-      <p></p>
-    </blockquote>
-    <p>When a "pure number" (i.e. one without a format directive such
-as 'd' for 'degrees') is specified, its interpretation depends on the
-context defined by the 'coordsys' keyword. In general, the rule is: </p>
-    <p><i>All pure numbers have implied units corresponding to the
-current coordinate system.</i> </p>
-    <p>If no such system is explicitly specified, the default system is
-implicitly assumed to be <tt>PHYSICAL</tt>. In practice this means
-that for <tt>IMAGE</tt> and <tt>PHYSICAL</tt> systems, pure numbers
-are pixels. Otherwise, for all systems other than linear, pure numbers
-are degrees. For <tt>LINEAR</tt> systems, pure numbers are in the
-units of the linear system. This rule covers both positions and sizes.
-The input values to each shape can be specified in several coordinate
-systems including: </p>
-    <blockquote> <tt>IMAGE                  
-
-# pixel coords of current file</tt> <br>
-      <br>
-      <tt>LINEAR                 
-
-# linear wcs as defined in file</tt>
-      <p><tt>FK4,
-B1950             
-
-# sky coordinate systems</tt> <br>
-      <tt>FK5, J2000</tt> <br>
-      <tt>GALACTIC</tt> <br>
-      <tt>ECLIPTIC</tt> <br>
-      <tt>ICRS</tt> <br>
-      <tt>PHYSICAL               
-
-# pixel coords of original file using LTM/LTV</tt> <br>
-      <tt>AMPLIFIER              
-
-# mosaic coords of original file using ATM/ATV</tt> <br>
-      <tt>DETECTOR               
-
-# mosaic coords of original file using DTM/DTV</tt><br>
-      <br>
-      <tt>WCS,WCSA-WCSZ     
-     # specify which WCS system to be used for <br>
-           
-            # linear and
-sky coordinate systems<br>
-      </tt></p>
-    </blockquote>
-    <p>If no coordinate system is specified, <tt>PHYSICAL</tt> is
-assumed. <tt>PHYSICAL</tt> or a World Coordinate System such as <tt>J2000</tt>
-is preferred and most general. The coordinate system specifier should
-appear at the beginning of the region description, on a separate line
-(in a file), or followed by a new-line or semicolon; e.g., </p>
-    <blockquote> <tt>image; circle 100 100 10</tt> <br>
-      <tt>physical; ellipse 200 200 10 20</tt> <br>
-      <tt>fk5; point 30 50</tt><br>
-      <tt>wcsa; fk4; point 202 47</tt><br>
-      <tt>wcsp; linear; point 100 100</tt><br>
-    </blockquote>
-    <p>The use of celestial input units automatically implies WORLD
-coordinates of the reference image. Thus, if the world coordinate
-system of the reference image is <tt>J2000</tt>, then</p>
-    <blockquote> <tt>circle 10:10:0 20:22:0 3'</tt>
-    </blockquote>
-    <p>is equivalent to: <br>
-    </p>
-    <blockquote> <tt>j2000; circle 10:10:0 20:22:0 3'</tt>
-    </blockquote>
-    <p>Note that by using units as described above, you may mix
-coordinate systems within a region specifier; e.g., </p>
-    <blockquote> <tt>physical; circle 6500 9320 3'<br>
-      </tt></blockquote>
-    <p>Note that, for regions which accept a rotation angle such as: </p>
-    <blockquote> <tt>ellipse (x, y, r1, r2, angle)<br>
-box(x, y, w, h, angle)</tt>
-      <p></p>
-    </blockquote>
-    <p>the angle is relative to the specified coordinate system. In
-particular, if the region is specified in WCS coordinates, the angle is
-related to the WCS system, not x/y image coordinate axis. For WCS
-systems with no rotation, this obviously is not an issue. However, some
-images do define an implicit rotation (e.g., by using a non-zero CROTA
-value in the WCS parameters) and for these images, the angle will be
-relative to the WCS axes. In such case, a region specification such as:</p>
-    <blockquote> <tt>fk4;ellipse(22:59:43.985, +58:45:26.92,320",
-160", 30)</tt>
-    </blockquote>
-    <p>will not, in general, be the same region specified as:</p>
-    <blockquote> <tt>physical;ellipse(465, 578, 40, 20, 30)</tt>
-    </blockquote>
-    <p>even when positions and sizes match. The angle is relative to
-WCS axes in the first case, and relative to physical x,y axes in the
-second.</p>
-  </blockquote>
-  <p><b><a name="CompositeRegion"></a>Composite Region</b></p>
-  <p>A Composite Region is a region which is a collection of other
-regions, which share common properties. A composite region is composed
-of a center point and a rotation angle, of which all its members are
-rendered in reference to. A composite region is defined by the #
-composite x y angle declaration followed by a number of regions who are
-or'd together. A composite region is manipulated as a single region
-within ds9. A composite region maybe created from the current selection
-of regions by selecting the Create Composite Region menu option.
-Likewise, a composite region can be dissolved by selecting the Dissolve
-Composite Region menu option.</p>
-  <p><b> <a name="TemplateRegion"></a>Template Region</b></p>
-  <p>A Template Region is a special form of a region which is saved in
-a special wcs coordinate system WCS0. WCS0 indicates that the ra and
-dec values are relative to the current WCS location, not absolute. A
-template region can be loaded at any location into any fits image which
-contains a valid wcs. For example, a user may create a series of
-regions, which represent an instrument template. Then, by selecting the
-Save As Template menu option, a template region saved. The user may now
-load this templated into any other fits image which contains a valid
-WCS. </p>
-  <p><b> <a name="ExternalRegionFiles"></a>External Region Files</b></p>
-  <p>DS9 can read and write a number of region file formats. Not all
-formats support all the functionality of DS9 regions. Therefore, the
-user may loose some information when writing and then reading back from
-a region file in a format other that DS9. On output, the regions <a
- href="mregion.html#FileFormat">File Format</a> menu or the <a
- href="xpa.html#regions">XPA</a> regions point is used specify the
-output coordinate system and format. On input, the menu or xpa point is
-used only for the <tt>X Y </tt>format. For all other formats, the
-input coordinate system is specified in the regions file itself. </p>
-  <blockquote>
-    <p><b> <a name="FUNTools"></a><a
- href="http://hea-www.harvard.edu/RD/funtools/regions.html">Funtools</a></b></p>
-    <blockquote> <tt>Reading into Funtools from DS9</tt> <tt>TEXT is
-ignored</tt><br>
-      <tt>VECTOR is ignored</tt> <br>
-      <tt>PROJECTION is ignored</tt><br>
-      <tt>PROJECTION3D is ignored</tt><br>
-      <tt>RULER is ignored</tt><br>
-      <tt>COMPASS is ignored</tt><br>
-      <tt> All properties are ignored</tt><br>
-      <br>
-      <tt>Reading from Funtools into DS9:</tt> <tt>FIELD is ignored</tt><br>
-      <tt>PIE is ignored</tt><br>
-    </blockquote>
-    <a name="Ciao"></a>CIAO
-    <blockquote> <tt> All point regions are translated as POINT</tt><br>
-      <tt>BOX is translated as ROTBOX</tt><br>
-      <tt>LINE is ignored</tt><br>
-      <tt>VECTOR is ignored</tt> <br>
-      <tt>RULER is ignored</tt><br>
-      <tt>COMPASS is ignored</tt><br>
-      <tt>TEXT is ignored</tt><br>
-      <tt>PROJECTION is ignored</tt><br>
-      <tt>PROJECTION3D is ignored</tt><br>
-      <tt>ELLIPSE ANNULUS is ignored</tt><br>
-      <tt>BOX ANNULUS is ignored</tt><br>
-      <tt>PANDA is translated as PIE</tt><br>
-      <tt>EPANDA is ignored</tt><br>
-      <tt>BPANDA is ignored</tt><br>
-      <tt> All properties are ignored</tt><br>
-    </blockquote>
-    <a name="SAOimage"></a><a
- href="http://tdc-www.harvard.edu/software/saoimage/saoimage.region.html">SAOimage</a>
-    <blockquote> <tt> All point regions are translated as </tt><tt>POINT</tt><br>
-      <tt>LINE is ignored</tt><br>
-      <tt>VECTOR is ignored</tt> <br>
-      <tt>TEXT is ignored</tt><br>
-      <tt>PROJECTION ignored</tt><br>
-      <tt>PROJECTION3D is ignored</tt><br>
-      <tt>RULER is ignored</tt><br>
-      <tt>COMPASS is ignored</tt><br>
-      <tt>PANDA is ignored</tt><br>
-      <tt>EPANDA is ignored</tt><br>
-      <tt>BPANDA is ignored</tt><br>
-      <tt> All properties are ignored</tt><br>
-    </blockquote>
-    <a name="IRAFPROS"></a>IRAF PROS
-    <blockquote> <tt> All point regions are  translated as </tt><tt>POINT</tt><br>
-      <tt>LINE is ignored</tt><br>
-      <tt>VECTOR is ignored</tt> <br>
-      <tt>TEXT is ignored</tt><br>
-      <tt>RULER is ignored</tt><br>
-      <tt>COMPASS is ignored</tt><br>
-      <tt>PROJECTION ignored</tt><br>
-      <tt>PROJECTION3D is ignored</tt><br>
-      <tt>PANDA is ignored</tt><br>
-      <tt>EPANDA is ignored</tt><br>
-      <tt>BPANDA is ignored</tt><br>
-      <tt> All properties are ignored</tt><br>
-    </blockquote>
-    <a name="FITSREGIONBinaryTable"></a>FITS REGION Binary Table
-    <blockquote> <tt> Read Only. DS9 currently can not write in this
-format.</tt><br>
-      <tt>POINT is translated into BOX CIRCLE POINT</tt><br>
-      <tt>ROTBOX is translated into BOX</tt><br>
-      <tt>RECTANGLE is translated into BOX</tt><br>
-      <tt>ROTRECTANGLE is translated into a BOX</tt><br>
-      <tt>PIE is translated into PANDA</tt><br>
-      <tt> The follow regions are not supported</tt>
-      <blockquote> <tt>ELLIPTANNULUS</tt><br>
-        <tt>SECTOR</tt><br>
-        <tt>DIAMOND</tt><br>
-        <tt>RHOMBUS</tt><br>
-        <tt>ROTDIAMOND</tt><br>
-        <tt>ROTRHOMBUS</tt><br>
+            sky coordinate systems</tt> <br>
+          <tt>FK5,
+            J2000             
+
+#
+
+
+
+            sky coordinate systems</tt> <br>
+          <tt>GALACTIC               
+
+#
+
+
+
+            sky coordinate systems</tt> <br>
+          <tt>ECLIPTIC               
+
+#
+
+
+
+            sky coordinate systems</tt> <br>
+          <tt>ICRS                   
+
+#
+
+
+
+            currently same as J2000</tt> <br>
+          <tt>LINEAR                 
+
+#
+
+
+
+            linear wcs as defined in file</tt> <br>
+          <tt>AMPLIFIER              
+
+#
+
+
+
+            mosaic coords of original file using ATM/ATV</tt> <br>
+          <tt>DETECTOR               
+
+#
+
+
+
+            mosaic coords of original file usingDTM/DTV</tt> </blockquote>
+        <p><b> Mosaic Images</b></p>
+        <p>While some coordinate systems are unique across mosaic
+          images, others coordinate systems, such as <tt>image</tt>, or
+          <tt>physical</tt> , are valid on a per segment basis. In this
+          case, use <tt>tile</tt> to specify which header to use in all
+          coordinate conversions. The default is the first header, or <tt>tile
+
+
+            1</tt>. </p>
+        <tt>Example: tile 2;fk5;point(100,100)</tt>
+        <p><b> Multiple WCS</b></p>
+        <p>If an image has multiple wcs's defined, use <tt>wcs#</tt> to
+          specify which wcs to use for all wcs references. Valid values
+          are <tt>wcs, wcsa, wcsb, wcsc... wcsz.</tt><br>
+          <tt>Example: wcsa;linear;point(100,100) # point=diamond</tt></p>
+        <p><b> Specifying Positions and Sizes</b></p>
+        <p>The arguments to region shapes can be floats or integers
+          describing positions and sizes. They can be specified as pure
+          numbers or using explicit formatting directives: </p>
+        <blockquote>
+          <p><b>position arguments</b> </p>
+          <tt>[num]                  
+
+#
+
+
+
+            context-dependent (see below)</tt> <br>
+          <tt>[num]d                 
+
+#
+
+
+
+            degrees</tt> <br>
+          <tt>[num]r                 
+
+#
+
+
+
+            radians</tt> <br>
+          <tt>[num]p                 
+
+#
+
+
+
+            physical pixels</tt> <br>
+          <tt>[num]i                 
+
+#
+
+
+
+            image pixels</tt> <br>
+          <tt>[num]:[num]:[num]       #
+            hms for 'odd' position arguments</tt> <br>
+          <tt>[num]:[num]:[num]       #
+            dms for 'even' position arguments</tt> <br>
+          <tt>[num]h[num]m[num]s      #
+            explicit hms</tt> <br>
+          <tt>[num]d[num]m[num]s      #
+            explicit dms</tt>
+          <p><b>size arguments</b> </p>
+          <tt>[num]                  
+
+#
+
+
+
+            context-dependent (see below)</tt> <br>
+          <tt>[num]"                 
+
+#
+
+
+
+            arc sec</tt> <br>
+          <tt>[num]'                 
+
+#
+
+
+
+            arc min</tt> <br>
+          <tt>[num]d                 
+
+#
+
+
+
+            degrees</tt> <br>
+          <tt>[num]r                 
+
+#
+
+
+
+            radians</tt> <br>
+          <tt>[num]p                 
+
+#
+
+
+
+            physical pixels</tt> <br>
+          <tt>[num]i                 
+
+#
+
+
+
+            image pixels</tt>
+          <p></p>
+        </blockquote>
+        <p>When a "pure number" (i.e. one without a format directive
+          such as 'd' for 'degrees') is specified, its interpretation
+          depends on the context defined by the 'coordsys' keyword. In
+          general, the rule is: </p>
+        <p><i>All pure numbers have implied units corresponding to the
+            current coordinate system.</i> </p>
+        <p>If no such system is explicitly specified, the default system
+          is implicitly assumed to be <tt>PHYSICAL</tt>. In practice
+          this means that for <tt>IMAGE</tt> and <tt>PHYSICAL</tt>
+          systems, pure numbers are pixels. Otherwise, for all systems
+          other than linear, pure numbers are degrees. For <tt>LINEAR</tt>
+          systems, pure numbers are in the units of the linear system.
+          This rule covers both positions and sizes. The input values to
+          each shape can be specified in several coordinate systems
+          including: </p>
+        <blockquote> <tt>IMAGE                  
+
+#
+
+
+
+            pixel coords of current file</tt> <br>
+          <br>
+          <tt>LINEAR                 
+
+#
+
+
+
+            linear wcs as defined in file</tt>
+          <p><tt>FK4,
+              B1950             
+
+#
+
+
+
+              sky coordinate systems</tt> <br>
+            <tt>FK5, J2000</tt> <br>
+            <tt>GALACTIC</tt> <br>
+            <tt>ECLIPTIC</tt> <br>
+            <tt>ICRS</tt> <br>
+            <tt>PHYSICAL               
+
+#
+
+
+
+              pixel coords of original file using LTM/LTV</tt> <br>
+            <tt>AMPLIFIER              
+
+#
+
+
+
+              mosaic coords of original file using ATM/ATV</tt> <br>
+            <tt>DETECTOR               
+
+#
+
+
+
+              mosaic coords of original file using DTM/DTV</tt><br>
+            <br>
+            <tt>WCS,WCSA-WCSZ     
+                   # specify which WCS system to be
+              used for <br>
+                         
+                          #
+              linear and sky coordinate systems<br>
+            </tt></p>
+        </blockquote>
+        <p>If no coordinate system is specified, <tt>PHYSICAL</tt> is
+          assumed. <tt>PHYSICAL</tt> or a World Coordinate System such
+          as <tt>J2000</tt> is preferred and most general. The
+          coordinate system specifier should appear at the beginning of
+          the region description, on a separate line (in a file), or
+          followed by a new-line or semicolon; e.g., </p>
+        <blockquote> <tt>image; circle 100 100 10</tt> <br>
+          <tt>physical; ellipse 200 200 10 20</tt> <br>
+          <tt>fk5; point 30 50</tt><br>
+          <tt>wcsa; fk4; point 202 47</tt><br>
+          <tt>wcsp; linear; point 100 100</tt><br>
+        </blockquote>
+        <p>The use of celestial input units automatically implies WORLD
+          coordinates of the reference image. Thus, if the world
+          coordinate system of the reference image is <tt>J2000</tt>,
+          then</p>
+        <blockquote> <tt>circle 10:10:0 20:22:0 3'</tt> </blockquote>
+        <p>is equivalent to: <br>
+        </p>
+        <blockquote> <tt>j2000; circle 10:10:0 20:22:0 3'</tt> </blockquote>
+        <p>Note that by using units as described above, you may mix
+          coordinate systems within a region specifier; e.g., </p>
+        <blockquote> <tt>physical; circle 6500 9320 3'<br>
+          </tt></blockquote>
+        <p>Note that, for regions which accept a rotation angle such as:
+        </p>
+        <blockquote> <tt>ellipse (x, y, r1, r2, angle)<br>
+            box(x, y, w, h, angle)</tt>
+          <p></p>
+        </blockquote>
+        <p>the angle is relative to the specified coordinate system. In
+          particular, if the region is specified in WCS coordinates, the
+          angle is related to the WCS system, not x/y image coordinate
+          axis. For WCS systems with no rotation, this obviously is not
+          an issue. However, some images do define an implicit rotation
+          (e.g., by using a non-zero CROTA value in the WCS parameters)
+          and for these images, the angle will be relative to the WCS
+          axes. In such case, a region specification such as:</p>
+        <blockquote> <tt>fk4;ellipse(22:59:43.985, +58:45:26.92,320",
+            160", 30)</tt> </blockquote>
+        <p>will not, in general, be the same region specified as:</p>
+        <blockquote> <tt>physical;ellipse(465, 578, 40, 20, 30)</tt> </blockquote>
+        <p>even when positions and sizes match. The angle is relative to
+          WCS axes in the first case, and relative to physical x,y axes
+          in the second.</p>
+      </blockquote>
+      <p><b><a name="CompositeRegion"></a>Composite Region</b></p>
+      <p>A Composite Region is a region which is a collection of other
+        regions, which share common properties. A composite region is
+        composed of a center point and a rotation angle, of which all
+        its members are rendered in reference to. A composite region is
+        defined by the # composite x y angle declaration followed by a
+        number of regions who are or'd together. A composite region is
+        manipulated as a single region within ds9. A composite region
+        maybe created from the current selection of regions by selecting
+        the Create Composite Region menu option. Likewise, a composite
+        region can be dissolved by selecting the Dissolve Composite
+        Region menu option.</p>
+      <p><b> <a name="TemplateRegion"></a>Template Region</b></p>
+      <p>A Template Region is a special form of a region which is saved
+        in a special wcs coordinate system WCS0. WCS0 indicates that the
+        ra and dec values are relative to the current WCS location, not
+        absolute. A template region can be loaded at any location into
+        any fits image which contains a valid wcs. For example, a user
+        may create a series of regions, which represent an instrument
+        template. Then, by selecting the Save As Template menu option, a
+        template region saved. The user may now load this templated into
+        any other fits image which contains a valid WCS. </p>
+      <p><b> <a name="ExternalRegionFiles"></a>External Region Files</b></p>
+      <p>DS9 can read and write a number of region file formats. Not all
+        formats support all the functionality of DS9 regions. Therefore,
+        the user may loose some information when writing and then
+        reading back from a region file in a format other that DS9. On
+        output, the regions <a href="mregion.html#FileFormat">File
+          Format</a> menu or the <a href="xpa.html#regions">XPA</a>
+        regions point is used specify the output coordinate system and
+        format. On input, the menu or xpa point is used only for the <tt>X
+          Y </tt>format. For all other formats, the input coordinate
+        system is specified in the regions file itself. </p>
+      <blockquote>
+        <p><b> <a name="FUNTools"></a><a
+              href="http://hea-www.harvard.edu/RD/funtools/regions.html">Funtools</a></b><tt></tt><br>
+        </p>
+        <blockquote> <tt>TEXT is ignored<br>
+          </tt> <tt>VECTOR is ignored</tt> <br>
+          <tt>PROJECTION is ignored</tt><tt></tt><br>
+          <tt>RULER is ignored</tt><br>
+          <tt>COMPASS is ignored<br>
+            FIELD is ignored<br>
+            PIE is ignored<br>
+          </tt> <tt> All properties are ignored</tt><br>
+        </blockquote>
+        <a name="Ciao"></a>CIAO
+        <blockquote> <tt> All point regions are translated as POINT</tt><br>
+          <tt>BOX is translated as ROTBOX<br>
+          </tt> <tt>LINE is ignored</tt><br>
+          <tt>VECTOR is ignored</tt> <br>
+          <tt>RULER is ignored</tt><br>
+          <tt>COMPASS is ignored</tt><br>
+          <tt>TEXT is ignored</tt><tt></tt><br>
+          <tt>PROJECTION is ignored</tt><tt></tt><br>
+          <tt>ELLIPSE ANNULUS is ignored</tt><br>
+          <tt>BOX ANNULUS is ignored</tt><br>
+          <tt>PANDA is translated as PIE</tt><br>
+          <tt>EPANDA is ignored</tt><br>
+          <tt>BPANDA is ignored</tt><br>
+          <tt> All properties are ignored</tt><br>
+        </blockquote>
+        <a name="SAOimage"></a><a
+          href="http://tdc-www.harvard.edu/software/saoimage/saoimage.region.html">SAOimage</a>
+        <blockquote> <tt> All point regions are translated as </tt><tt>POINT</tt><tt></tt><br>
+          <tt>LINE is ignored</tt><br>
+          <tt>VECTOR is ignored</tt> <br>
+          <tt>TEXT is ignored</tt><br>
+          <tt>PROJECTION ignored</tt><br>
+          <tt>PROJECTION3D is ignored</tt><br>
+          <tt>RULER is ignored</tt><br>
+          <tt>COMPASS is ignored</tt><br>
+          <tt>PANDA is ignored</tt><br>
+          <tt>EPANDA is ignored</tt><br>
+          <tt>BPANDA is ignored</tt><br>
+          <tt> All properties are ignored</tt><br>
+        </blockquote>
+        <a name="IRAFPROS"></a>IRAF PROS
+        <blockquote> <tt> All point regions are translated as </tt><tt>POINT</tt><tt></tt><br>
+          <tt>LINE is ignored</tt><br>
+          <tt>VECTOR is ignored</tt> <br>
+          <tt>TEXT is ignored</tt><br>
+          <tt>RULER is ignored</tt><br>
+          <tt>COMPASS is ignored</tt><br>
+          <tt>PROJECTION ignored</tt><br>
+          <tt>PROJECTION3D is ignored</tt><br>
+          <tt>PANDA is ignored</tt><br>
+          <tt>EPANDA is ignored</tt><br>
+          <tt>BPANDA is ignored</tt><br>
+          <tt> All properties are ignored</tt><br>
+        </blockquote>
+        <a name="FITSREGIONBinaryTable"></a>FITS REGION Binary Table
+        <blockquote> <tt> Read Only. DS9 currently can not write in
+            this format.</tt><br>
+          <tt>POINT is translated into BOX CIRCLE POINT</tt><br>
+          <tt>ROTBOX is translated into BOX</tt><br>
+          <tt>RECTANGLE is translated into BOX</tt><br>
+          <tt>ROTRECTANGLE is translated into a BOX</tt><br>
+          <tt>PIE is translated into PANDA</tt><br>
+          <tt> The follow regions are not supported</tt>
+          <blockquote> <tt>ELLIPTANNULUS</tt><br>
+            <tt>SECTOR</tt><br>
+            <tt>DIAMOND</tt><br>
+            <tt>RHOMBUS</tt><br>
+            <tt>ROTDIAMOND</tt><br>
+            <tt>ROTRHOMBUS</tt><br>
+          </blockquote>
+        </blockquote>
+        <a name="XY"></a>X Y <br>
+        <p>This format consists of a number of coordinate pairs, one per
+          line. The coordinate format for both input and output is
+          specified via the Save Regions Parameters menu or <a
+            href="xpa.html#regions">XPA</a> regions point. The first two
+          coordinates are read, the rest of the line is ignored. The
+          comment character '#' may be used at the beginning of line and
+          the line is ignored. This format is very useful for reading in
+          coordinates from other external analysis programs, such as
+          IRAF. </p>
+        <blockquote> <tt>Example:</tt> <tt># this is a comment</tt> <br>
+          <tt>physical # this overrides the specified coordinate system</tt><br>
+          <tt>300 300</tt> <br>
+          <tt>400 400 # this is a comment</tt> <br>
+        </blockquote>
       </blockquote>
     </blockquote>
-    <a name="XY"></a>X Y <br>
-    <p>This format consists of a number of coordinate pairs, one per
-line. The coordinate format for both input and output is specified via
-the Save Regions Parameters menu or <a href="xpa.html#regions">XPA</a>
-regions point. The first two coordinates are read, the rest of the line
-is ignored. The comment character '#' may be used at the beginning of
-line and the line is ignored. This format is very useful for reading in
-coordinates from other external analysis programs, such as IRAF. </p>
-    <blockquote> <tt>Example:</tt> <tt># this is a comment</tt> <br>
-      <tt>physical # this overrides the specified coordinate system</tt><br>
-      <tt>300 300</tt> <br>
-      <tt>400 400 # this is a comment</tt> <br>
-    </blockquote>
-  </blockquote>
-</blockquote>
-</body>
+  </body>
 </html>
diff --git a/doc/ref/samp.html b/doc/ref/samp.html
index 006edc7..97dbfa7 100644
--- a/doc/ref/samp.html
+++ b/doc/ref/samp.html
@@ -8,7 +8,7 @@
     <title>SAMP</title>
   </head>
   <body alink="#ff0000" link="#0000ff" vlink="#551a8b">
-    <h3><img alt="" src="../sun.gif" align="middle" height="98"
+    <h3><img alt="" src="../sun.gif" height="98" align="middle"
         width="100"> SAMP</h3>
     <blockquote>
       <p>SAMP is a messaging protocol that enables astronomy software
@@ -74,6 +74,7 @@
         <a href="#dsseso">dsseso</a><br>
         <a href="#dssstsci">dssstsci</a><br>
         <a href="#exit">exit</a><br>
+        <a href="#export">export</a><br>
         <a href="#file">file</a><br>
         <a href="#first">first</a><br>
         <a href="#fits">fits</a><br>
@@ -83,7 +84,9 @@
         <a href="#height">height</a><br>
         <a href="#iconify">iconify</a><br>
         <a href="#iis">iis</a><br>
+        <a href="#image">image</a><br>
         <a href="#imexam">imexam</a><br>
+        <a href="#image">import</a><br>
         <a href="#lock">lock</a><br>
         <a href="#lower">lower</a><br>
         <a href="#magnifier">magnifier</a><br>
@@ -928,7 +931,26 @@
          <br>
         Example:<br>
         ds9.set(string cmd)<br>
-        exit </tt>
+        exit<br>
+      </tt>
+      <p><b> <a name="export"></a>export<br>
+        </b></p>
+      <p>Export loaded image data of current frame in specified image
+        format, using current colormap and contrast/bias settings. <tt>fits,
+
+          gif, tiff (tif), jpeg (jpg), png, ppm</tt> formats supported.
+        If no format specified, the file name extension is used to
+        determine the output format. Optional parameters: jpeg quality
+        (1-100) and tiff compression method.</p>
+      <tt> Syntax: <br>
+        export </tt><tt>[fits|gif|tiff|jpeg|png|ppm] </tt><tt><filename></tt><tt><br>
+      </tt><tt>export <filename></tt><tt>.jpeg [1-100]<br>
+      </tt><tt>export <filename></tt><tt>.tiff
+        [none|jpeg|packbits|deflate]</tt><br>
+      <tt>  <br>
+        Example: <br>
+        ds9.set (string cmd)<br>
+        export foo.jpg 75</tt><br>
       <p><b><a name="file"></a>file</b></p>
       <p>Load a FITS image, FITS Mosaic image(s), or array from a file
         into the current frame, or return the current file name(s)
@@ -1430,6 +1452,18 @@
         iis filename foo.fits<br>
         iis filename bar.fits 4<br>
       </tt>
+      <p><b> <a name="image"></a>image<br>
+          import<br>
+        </b></p>
+      <p>Load image file into the current frame. Accepts  <tt>gif,
+          tiff, jpeg, png, ppm</tt> formats.<br>
+      </p>
+      <tt> Syntax: <br>
+        image <filename></tt><tt><br>
+         <br>
+        Example: <br>
+        ds9.set (string cmd)<br>
+        image foo.jpg</tt><br>
       <p><b><a name="imexam"></a>imexam</b></p>
       <p>Interactive examine function. A blinking cursor will indicate
         to the user to click on a point on an image. The specified
@@ -2233,41 +2267,42 @@
         rotate close<br>
       </tt>
       <p><b> <a name="saveimage"></a>saveimage</b></p>
-      <p>Save visible image(s) as a raster. If image is a cube, the mpeg
-        option will cycle thru each slice creating a mpeg movie.</p>
-      <tt> Syntax: <br>
-      </tt><tt>saveimage fits <filename><br>
-        saveimage jpeg [1-100] <filename><br>
-        saveimage tiff [none|jpeg|packbits|deflate] <filename><br>
-        saveimage png <filename><br>
-        saveimage ppm <filename><br>
-        saveimage mpeg [1-31] <filename></tt><tt><br>
-         <br>
-        Example: <br>
-        ds9.set(string cmd)<br>
-        saveimage fits ds9.fits<br>
-        saveimage jpeg 75 ds9.jpg<br>
-      </tt>
-      <p><b><a name="savefits"></a>savefits</b></p>
-      <p>Save current frame data as FITS. This differs from SAVEIMAGE in
-        that the entire image of the current frame is saved as a FITS,
-        without graphics.</p>
-      <tt> Syntax:<br>
-        savefits [<filename>]<br>
+      <tt></tt>
+      <p>Create a snap shot of the current DS9 window and save in
+        specified image format. <tt>fits, gif, tiff (tif), jpeg (jpg),
+          pnm, ppm</tt> formats supported. If no format specified, the
+        file name extension is used to determine the output format.
+        Optional parameters: jpeg quality (1-100) and tiff compression
+        method. </p>
+      <tt> Syntax: <br>
+        saveimage </tt><tt>[fits|gif|tiff|jpeg|png|ppm] </tt><tt><filename><br>
+        saveimage <filename>.jpeg [1-100]<br>
+        saveimage <filename>.tiff [none|jpeg|packbits|deflate]<br>
          <br>
         Example:<br>
-        ds9.set(string cmd)<br>
-        savefits ds9.fits<br>
-      </tt>
+        ds9.set(string cmd) <br>
+        saveimage ds9.fits<br>
+        saveimage ds9.jpg 75</tt><tt><br>
+      </tt><tt> </tt><tt> </tt>
       <p><b><a name="savempeg"></a>savempeg</b></p>
-      <p>Save all active frames as a mpeg movie. </p>
+      <p>Create mpeg1 movie from snap shots of the DS9 window. A <tt>slice</tt>
+        movie cycles though all slices of a cube. A <tt>frame</tt>
+        movie cycles through all active frames. A <tt>3d</tt> movie
+        cycles through specified viewing angles. The default is <tt>frame</tt>.
+        Optional parameters for <tt>3d</tt>: number of frames, azimuth
+        from/to, elevation from/to, slice from/to, oscillate/repeat
+        times.</p>
       <tt> Syntax:<br>
-        savempeg [<filename>]<br>
-         <br>
+        savempeg </tt><tt>[slice|frame|3d] </tt><tt><filename><br>
+      </tt><tt>savempeg 3d <filename>
+        [number|azfrom|azto|elfrom|elto|slfrom|slto|oscillate|repeat
+        <#>]</tt><br>
+      <tt>  <br>
         Example:<br>
         ds9.set(string cmd)<br>
-        savempeg ds9.mpg<br>
-      </tt>
+        savempeg slice ds9.mpg<br>
+      </tt><tt>savempeg 3d ds9.mpg number 10 azfrom -60 azto 60
+        oscillate 1</tt><br>
       <p><b> <a name="scale"></a>scale</b></p>
       <p>Controls the limits and color scale distribution. </p>
       <tt> Syntax: <br>
diff --git a/doc/ref/xpa.html b/doc/ref/xpa.html
index 3bfb34b..6a838f6 100644
--- a/doc/ref/xpa.html
+++ b/doc/ref/xpa.html
@@ -8,7 +8,7 @@
     <title>XPA Access Points</title>
   </head>
   <body alink="#ff0000" link="#0000ff" vlink="#551a8b">
-    <h3><img alt="" src="../sun.gif" align="middle" height="98"
+    <h3><img alt="" src="../sun.gif" height="98" align="middle"
         width="100"> XPA Access Points</h3>
     <blockquote>
       <p>The <a href="http://hea-www.harvard.edu/RD/xpa/index.html">XPA
@@ -44,6 +44,7 @@
         <a href="#dsseso">dsseso</a><br>
         <a href="#dssstsci">dssstsci</a><br>
         <a href="#exit">exit</a><br>
+        <a href="#export">export</a><br>
         <a href="#file">file</a><br>
         <a href="#first">first</a><br>
         <a href="#fits">fits</a><br>
@@ -53,7 +54,9 @@
         <a href="#height">height</a><br>
         <a href="#iconify">iconify</a><br>
         <a href="#iis">iis</a><br>
+        <a href="#image">image</a><br>
         <a href="#imexam">imexam</a><br>
+        <a href="#image">import</a><br>
         <a href="#lock">lock</a><br>
         <a href="#lower">lower</a><br>
         <a href="#magnifier">magnifier</a><br>
@@ -79,7 +82,6 @@
         <a href="#rgb">rgb</a><br>
         <a href="#rotate">rotate</a><br>
         <a href="#saveimage">saveimage</a><br>
-        <a href="#savefits">savefits</a><br>
         <a href="#savempeg">savempeg</a><br>
         <a href="xpa.html#scale">scale</a><br>
         <a href="#shm">shm</a><br>
@@ -661,6 +663,11 @@
 
 
 
+
+
+
+
+
         <br>
              [match <coordsys>]<br>
              [lock <coordsys>|none]<br>
@@ -873,7 +880,26 @@
         quit<br>
          <br>
         Example: <br>
-        $xpaset -p ds9 exit </tt>
+        $xpaset -p ds9 exit<br>
+      </tt>
+      <p><b> <a name="export"></a>export<br>
+        </b></p>
+      <p>Export loaded image data of current frame in specified image
+        format, using current colormap and contrast/bias settings. <tt>fits,
+
+          gif, tiff (tif), jpeg (jpg), png, ppm</tt> formats supported.
+        If no format specified, the file name extension is used to
+        determine the output format. Optional parameters: jpeg quality
+        (1-100) and tiff compression method.</p>
+      <tt> Syntax: <br>
+        %xpaset -p ds9 export </tt><tt>[fits|gif|tiff|jpeg|png|ppm] </tt><tt><filename></tt><tt><br>
+      </tt><tt>%xpaset -p ds9 export <filename></tt><tt>.jpeg
+        [1-100]<br>
+      </tt><tt>%xpaset -p ds9 export <filename></tt><tt>.tiff
+        [none|jpeg|packbits|deflate]</tt><br>
+      <tt>  <br>
+        Example: <br>
+        $xpaset -p ds9 export foo.jpg 75</tt><br>
       <p><b> <a name="file"></a>file</b></p>
       <p>Load a FITS image, FITS Mosaic image(s), or array from a file
         into the current frame, or return the current file name(s)
@@ -1360,6 +1386,17 @@
         $xpaset -p ds9 iis filename foo.fits<br>
         $xpaset -p ds9 iis filename bar.fits 4<br>
       </tt>
+      <p><b> <a name="image"></a>image<br>
+          import<br>
+        </b></p>
+      <p>Load image file into the current frame. Accepts  <tt>gif,
+          tiff, jpeg, png, ppm</tt> formats.<br>
+      </p>
+      <tt> Syntax: <br>
+        image <filename></tt><tt><br>
+         <br>
+        Example: <br>
+        $xpaset -p ds9 image foo.jpg</tt><br>
       <p><b> <a name="imexam"></a>imexam</b></p>
       <p>Interactive examine function. A blinking cursor will indicate
         to the user to click on a point on an image. The specified
@@ -2139,38 +2176,40 @@
         $xpaset -p ds9 rotate close<br>
       </tt>
       <p><b> <a name="saveimage"></a>saveimage</b></p>
-      <p>Save visible image(s) as a raster. If image is a cube, the mpeg
-        option will cycle thru each slice creating a mpeg movie.</p>
-      <tt> Syntax:<br>
-      </tt><tt>saveimage fits <filename><br>
-        saveimage jpeg [1-100] <filename><br>
-        saveimage tiff [none|jpeg|packbits|deflate] <filename><br>
-        saveimage png <filename><br>
-        saveimage ppm <filename><br>
-        saveimage mpeg [1-31] <filename></tt><tt><br>
+      <tt></tt>
+      <p>Create a snap shot of the current DS9 window and save in
+        specified image format. <tt>fits, gif, tiff (tif), jpeg (jpg),
+          pnm, ppm</tt> formats supported. If no format specified, the
+        file name extension is used to determine the output format.
+        Optional parameters: jpeg quality (1-100) and tiff compression
+        method. </p>
+      <tt> Syntax: <br>
+        saveimage </tt><tt>[fits|gif|tiff|jpeg|png|ppm] </tt><tt><filename><br>
+        saveimage <filename>.jpeg [1-100]<br>
+        saveimage <filename>.tiff [none|jpeg|packbits|deflate]<br>
          <br>
         Example: <br>
-      </tt><tt>$xpaset -p ds9 saveimage fits ds9.fits<br>
-      </tt><tt>$xpaset -p ds9 saveimage jpeg 75 ds9.jpg<br>
-      </tt>
-      <p><b> <a name="savefits"></a>savefits</b></p>
-      <p>Save current frame data as FITS. This differs from SAVEIMAGE in
-        that the entire image of the current frame is saved as a FITS,
-        without graphics.</p>
-      <tt> Syntax:<br>
-        savefits [<filename>]<br>
-         <br>
-        Example:<br>
-        $xpaset -p ds9 savefits ds9.fits<br>
-      </tt>
+        $xpaset -p ds9 saveimage ds9.fits<br>
+        $xpaset -p ds9 saveimage ds9.jpg 75</tt><tt><br>
+      </tt><tt> </tt>
       <p><b> <a name="savempeg"></a>savempeg</b></p>
-      <p>Save all active frames as a mpeg movie. </p>
+      <p>Create mpeg1 movie from snap shots of the DS9 window. A <tt>slice</tt>
+        movie cycles though all slices of a cube. A <tt>frame</tt>
+        movie cycles through all active frames. A <tt>3d</tt> movie
+        cycles through specified viewing angles. The default is <tt>frame</tt>.
+        Optional parameters for <tt>3d</tt>: number of frames, azimuth
+        from/to, elevation from/to, slice from/to, oscillate/repeat
+        times.</p>
       <tt> Syntax:<br>
-        savempeg [<filename>]<br>
-         <br>
+        savempeg </tt><tt>[slice|frame|3d] </tt><tt><filename><br>
+      </tt><tt>savempeg 3d <filename>
+        [number|azfrom|azto|elfrom|elto|slfrom|slto|oscillate|repeat
+        <#>]</tt><br>
+      <tt>  <br>
         Example:<br>
-        $xpaset -p ds9 savempeg ds9.mpg<br>
-      </tt>
+        $xpaset -p ds9 savempeg slice ds9.mpg<br>
+      </tt><tt>$xpaset -p ds9 savempeg 3d ds9.mpg number 10 azfrom -60
+        azto 60 oscillate 1</tt><br>
       <p><b> <a name="scale"></a>scale</b></p>
       <p>Controls the limits and color scale distribution. </p>
       <tt> Syntax: <br>
diff --git a/doc/release/r7.0.html b/doc/release/r7.0.html
index c624dde..91f405e 100644
--- a/doc/release/r7.0.html
+++ b/doc/release/r7.0.html
@@ -138,6 +138,39 @@ SAOImage DS9 Version 7 Release Notes</h3>
     <li><tt>02.29.2012 HEADER: add save header command.</tt></li>
     <li><tt>03.01.2012 XPA: updated to version 2.1.14.</tt></li>
     <li><tt>03.01.2012 MINMAX: AUTOSCAN set to SAMPLE if width*height*depth > 1e8.</tt></li>
+    <li><tt>03.12.2012 IMGSVR: fixed a problem with clearing params if no image was loaded previously.</tt></li>
+    <li><tt>03.22.2012 REGION: add ellipse3d, box3d, polygon3d, point3d regions.</tt></li>
+    <li><tt>03.23.2012 IMGSVR: fixed a problem new frame option and rgb.</tt></li>
+    <li><tt>03.23.2012 BIN: check for valid col names for -bin col command.</tt></li>
+    <li><tt>03.28.2012 REGIONS: add Analysis support per region.</tt></li>
+    <li><tt>03.28.2012 REGIONS: add Plot3d support for Circle,Ellipse,Box,Polygon,Point.</tt></li>
+    <li><tt>03.28.2012 REGIONS: add Plot2d support for Projection,Line,Vector.</tt></li>
+    <li><tt>03.28.2012 REGIONS: Circle3d now converted to Circle.</tt></li>
+    <li><tt>03.28.2012 REGIONS: Plot3d saves native coordinate values.</tt></li>
+    <li><tt>03.28.2012 SCALE: simplified scale dialog controls to allow user values.</tt></li>
+    <li><tt>03.29.2012 WCS: fixed a problem with numaxes > 3 images and editing WCS params.</tt></li>
+    <li><tt>04.09.2012 WCS: second attempt to handle non-equatorial wcs. try to build a legal header from the wcssubs struct to feed to ast.</tt></li>
+    <li><tt>04.10.2012 SCALE: fixed an issue with autocut, ll != hh.</tt></li>
+    <li><tt>04.10.2012 SKYVIEW: add WISE/COBE/WMAP to skyview survey menu.</tt></li>
+    <li><tt>04.10.2012 WCS: if CD matrix is all zero, use cdelt/pc matrix.</tt></li>
+    <li><tt>04.11.2012 SMOOTH: fixed a problem with images with BSCALE/BZERO.</tt></li>
+    <li><tt>04.11.2012 CATALOG: fixed a problem with d:m:s formated DEC which started with a '+'</tt></li>
+    <li><tt>04.12.2012 CATALOG: fixed a problem with d:m:s to degree conversion. Try to maintain higher precision.</tt></li>
+    <li><tt>04.12.2012 CATALOG: add IAU location code to dialog.</tt></li>
+    <li><tt>04.12.2012 REGIONS: raise any plot windows associated with regions when double clicked.</tt></li>
+    <li><tt>04.13.2012 COLORMAP: add user contributed cmaps.</tt></li>
+    <li><tt>04.18.2012 GUI: fixed a problem with long WCSNAME values.</tt></li>
+    <li><tt>04.20.2012 FITSY: added support for GZIP compresss parameter ZQUANTIZ.</tt></li>
+    <li><tt>04.23.2012 PS: fixed a bug with definiton of 32 bit integers on 64 bit OS.</tt></li>
+    <li><tt>04.23.2012 PREFS: add Text Dialog Font preferences menu.</tt></li>
+    <li><tt>04.23.2012 LOCK: fixed a problem with lock frame and mouse wheel events.</tt></li>
+    <li><tt>04.24.2012 SKYBOT: Look for EXPTIME and add 1/2 to DATE-OBS to get middle of observation.</tt></li>
+    <li><tt>04.24.2012 LINUX64: add --hash-style=both to support old and new GNU API for hash libs.</tt></li>
+    <li><tt>04.26.2012 IMPORT: add support for importing from other image formats.</tt></li>
+    <li><tt>04.26.2012 EXPORT: add support for exporting to other image formats.</tt></li>
+    <li><tt>04.30.2012 WCS: fixed a problem with TAN-SIP and wcs append/replace.</tt></li>
+    <li><tt>05.01.2012 TCL: check to see if packages msgcat and http have already been found before sourcing during startup.</tt></li>
+    <li><tt>05.03.2012 MPEG: fixed a problem with the bottom of an image cut off.</tt></li>
     <li><tt><b>xx.xx.2012 RELEASE version 7.0</b></tt></li>
   </ol>
 </ol>
diff --git a/ds9/Makefile b/ds9/Makefile
index c090207..a2c7aa9 100644
--- a/ds9/Makefile
+++ b/ds9/Makefile
@@ -14,6 +14,7 @@ FFILES	= $(ZDIR)/$(TCLVER) \
 	$(ZDIR)/src \
 	$(ZDIR)/msgs \
 	$(ZDIR)/doc \
+	$(ZDIR)/cmaps \
 	$(ZDIR)/template
 
 ifdef FILTERCOMPILER
@@ -323,6 +324,10 @@ $(ZDIR)/doc : zipdir ../doc/* ../doc/ref/* ../doc/user/* ../doc/release/*
 	cd ..; find doc -name "*.gif" | cpio -pdmuv ds9/$(ZDIR)
 	cd ..; find doc -name "*.png" | cpio -pdmuv ds9/$(ZDIR)
 
+$(ZDIR)/cmaps : zipdir ../cmaps/*
+	$(RM) -r $@
+	cp -r ../cmaps $(ZDIR)/.
+
 $(ZDIR)/template : zipdir ../template/*
 	$(RM) -r $@
 	cd ..; find template -name "*.tpl" | cpio -pdmuv ds9/$(ZDIR)
diff --git a/ds9/macosx/SAOImage DS9.app/Contents/Info.plist b/ds9/macosx/SAOImage DS9.app/Contents/Info.plist
index fc11648..c486020 100644
--- a/ds9/macosx/SAOImage DS9.app/Contents/Info.plist	
+++ b/ds9/macosx/SAOImage DS9.app/Contents/Info.plist	
@@ -53,7 +53,7 @@
 	<key>CFBundleSignature</key>
 	<string>DS9 </string>
 	<key>CFBundleVersion</key>
-	<string>7.0 beta 18</string>
+	<string>7.0 beta 19</string>
 	<key>CSResourcesFileMapped</key>
 	<true/>
 	<key>LSMinimumSystemVersion</key>
diff --git a/ds9/macosx/SAOImage DS9.app/Contents/Resources/English.lproj/InfoPlist.strings b/ds9/macosx/SAOImage DS9.app/Contents/Resources/English.lproj/InfoPlist.strings
index c835785..d49614b 100644
Binary files a/ds9/macosx/SAOImage DS9.app/Contents/Resources/English.lproj/InfoPlist.strings and b/ds9/macosx/SAOImage DS9.app/Contents/Resources/English.lproj/InfoPlist.strings differ
diff --git a/ds9/win/ds9.rc b/ds9/win/ds9.rc
index 2d10eca..36224b3 100644
--- a/ds9/win/ds9.rc
+++ b/ds9/win/ds9.rc
@@ -1,6 +1,6 @@
 #include <windows.h>
 
-#define VV "7.0 beta 18"
+#define VV "7.0 beta 19"
 
 VS_VERSION_INFO VERSIONINFO
  FILEVERSION    7,0,0,0
diff --git a/make.linux64 b/make.linux64
index f63f6f7..c6e80f5 100644
--- a/make.linux64
+++ b/make.linux64
@@ -6,7 +6,7 @@ X11LIB	= /usr/X11R6/lib64
 
 XX	= -O2 
 YY	= -g -fno-inline
-ZZ	= -m64
+ZZ	= -m64 -Wl,--hash-style=both
 
 AA	= -fPIC -DHAVE_SYS_UN_H -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D__M64
 
diff --git a/make.pkgs b/make.pkgs
index 6117190..27ac5ad 100644
--- a/make.pkgs
+++ b/make.pkgs
@@ -1,6 +1,6 @@
 #--------------------------basic
 
-DS9VERSION= 7.0b18
+DS9VERSION= 7.0b19
 XPAVERSION= 2.1.14
 
 #--------------------------version
diff --git a/make.windows b/make.windows
index 99241b4..e20aad7 100644
--- a/make.windows
+++ b/make.windows
@@ -13,11 +13,11 @@ AA	= -D__WIN32__ -D_WIN32 -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_
 OPTS	= ${YY} ${ZZ}
 NOPTS	= ${YY} ${ZZ}
 
-CXX	= g++
+CXX	= g++-3
 CXXOPT	= ${OPTS} ${AA}
 CXXNOPT	= ${NOPTS} ${AA}
 
-CC	= gcc
+CC	= gcc-3
 CCOPT	= ${OPTS} ${AA}
 CCNOPT	= ${NOPTS} ${AA}
 
diff --git a/msgs/da.msg b/msgs/da.msg
index 2b9cceb..205647d 100644
--- a/msgs/da.msg
+++ b/msgs/da.msg
@@ -16,8 +16,8 @@
 ::msgcat::mcset da {An error has occurred during backup} 
 ::msgcat::mcset da {An error has occurred during restore} 
 ::msgcat::mcset da {An error has occurred invoking the Analysis task} [encoding convertfrom iso8859-1 {Fejl opstået ved kald til analyse program}]
-::msgcat::mcset da {An error has occurred while creating image} [encoding convertfrom iso8859-1 {Fejl opstået under dannelse af billede}]
-::msgcat::mcset da {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen} [encoding convertfrom iso8859-1 {Fejl opstået under dannelse af billede - sørg for, at hele billed-vinduet er synligt på skærmen}]
+::msgcat::mcset da {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.} 
+::msgcat::mcset da {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.} 
 ::msgcat::mcset da {An error has occurred while printing} [encoding convertfrom iso8859-1 {Fejl opstået under udskrivning}]
 ::msgcat::mcset da {An error has occurred while saving} [encoding convertfrom iso8859-1 {Fejl opstået under gemning}]
 ::msgcat::mcset da {An internal error has been detected} 
@@ -36,7 +36,6 @@
 ::msgcat::mcset da {ArcSec} {Buesekunder}
 ::msgcat::mcset da {Architecture} {Arkitektur}
 ::msgcat::mcset da {Archives} {Arkiver}
-::msgcat::mcset da {Arrow Point} {Punkt - pil}
 ::msgcat::mcset da {Arrow} {Pil}
 ::msgcat::mcset da {Astronomy} 
 ::msgcat::mcset da {At Startup} 
@@ -81,8 +80,7 @@
 ::msgcat::mcset da {Border} {Kant}
 ::msgcat::mcset da {Box Annulus} {Kasseformet ringform}
 ::msgcat::mcset da {Box Panda} {Kasseformet panda}
-::msgcat::mcset da {Box Point} {Punkt - firkant}
-::msgcat::mcset da {BoxCircle Point} {Punkt - firkant-cirkel}
+::msgcat::mcset da {BoxCircle} 
 ::msgcat::mcset da {Boxcar} {Kvadratisk kernel}
 ::msgcat::mcset da {Box} {Kasse}
 ::msgcat::mcset da {Broadcast} 
@@ -106,8 +104,6 @@
 ::msgcat::mcset da {Center} {Centrer}
 ::msgcat::mcset da {Centroid Parameters} 
 ::msgcat::mcset da {Centroid} {Centroide}
-::msgcat::mcset da {Circle Point} {Punkt - cirkel}
-::msgcat::mcset da {Circle3d} 
 ::msgcat::mcset da {Circle} {Cirkel}
 ::msgcat::mcset da {Clear All} {Fjern alt}
 ::msgcat::mcset da {Clear Analysis Commands} {Fjern analyse funktioner}
@@ -143,6 +139,7 @@
 ::msgcat::mcset da {Contours} {Konturer}
 ::msgcat::mcset da {Contour} {Konturer}
 ::msgcat::mcset da {Contrast} {Kontrast}
+::msgcat::mcset da {Contributed} 
 ::msgcat::mcset da {Convert to Polygons} {Omdan til poygoner}
 ::msgcat::mcset da {Coordinate Grid Parameters} {Koordinatnetparametre}
 ::msgcat::mcset da {Coordinate Grid} {Koordinatnet}
@@ -152,11 +149,11 @@
 ::msgcat::mcset da {Copy Contours} {Kopier konturer}
 ::msgcat::mcset da {Copy to Regions} {kopier til regioner}
 ::msgcat::mcset da {Copy} {Kopier} 
+::msgcat::mcset da {Create Movie} 
 ::msgcat::mcset da {Create New Frame on Download} {Dan en ny ramme under hentning}
 ::msgcat::mcset da {Create} 
 ::msgcat::mcset da {Crop Parameters} 
 ::msgcat::mcset da {Crop} 
-::msgcat::mcset da {Cross Point} {Punkt - kryds}
 ::msgcat::mcset da {Crosshair To} [encoding convertfrom iso8859-1 {Trådkors til}]
 ::msgcat::mcset da {Crosshair} [encoding convertfrom iso8859-1 {Trådkors}]
 ::msgcat::mcset da {Cross} {Kryds}
@@ -196,7 +193,6 @@
 ::msgcat::mcset da {Depth} {Dybde}
 ::msgcat::mcset da {Detector} {Detektor}
 ::msgcat::mcset da {Dialog Box} {Dialog vindue}
-::msgcat::mcset da {Diamond Point} {Punkt - ruder}
 ::msgcat::mcset da {Diamond} {Ruder}
 ::msgcat::mcset da {Dimension} {Dimension}
 ::msgcat::mcset da {Disconnect} 
@@ -238,6 +234,7 @@
 ::msgcat::mcset da {Exclude} {Udelad}
 ::msgcat::mcset da {Executing TCL code is not enabled} 
 ::msgcat::mcset da {Exit} {Luk}
+::msgcat::mcset da {Export Image} 
 ::msgcat::mcset da {Extention} 
 ::msgcat::mcset da {Exterior Axes} {Udvendige akser}
 ::msgcat::mcset da {Exterior Numerics} {Udvendige tal}
@@ -265,6 +262,7 @@
 ::msgcat::mcset da {Front} {Foran}
 ::msgcat::mcset da {Full Range} {Hele intervallet}
 ::msgcat::mcset da {Function} {Funktion}
+::msgcat::mcset da {GUI Font} 
 ::msgcat::mcset da {Galactic} {Galaktisk}
 ::msgcat::mcset da {Gap} 
 ::msgcat::mcset da {Gaussian} {Gaussisk}
@@ -318,6 +316,7 @@
 ::msgcat::mcset da {Interior Numerics} {Indre tal}
 ::msgcat::mcset da {Internal Parse Error} 
 ::msgcat::mcset da {Interval} {Interval} 
+::msgcat::mcset da {Invalid Column Name} 
 ::msgcat::mcset da {Invalid formated multipart/mixed mime type message} {Forkert formatteret opdelt eller blandet mime type meddelelse}
 ::msgcat::mcset da {Invert Colormap} {Vend farvetabel}
 ::msgcat::mcset da {Invert Selection} {Inverter valg}
@@ -395,7 +394,7 @@
 ::msgcat::mcset da {Low High} [encoding convertfrom iso8859-1 {Lav høj}]
 ::msgcat::mcset da {Low} {lav}
 ::msgcat::mcset da {MIP} 
-::msgcat::mcset da {MPEG Quality Factor} {MPEG kvalitetsfaktor}
+::msgcat::mcset da {MPEG} 
 ::msgcat::mcset da {Magenta} 
 ::msgcat::mcset da {Magnification} 
 ::msgcat::mcset da {Magnifier} [encoding convertfrom iso8859-1 {Forstørrelse}]
@@ -425,7 +424,6 @@
 ::msgcat::mcset da {Math Function} {Matematisk funktion}
 ::msgcat::mcset da {Max Rows} {Maks antal rækker}
 ::msgcat::mcset da {Max} {Maks}
-::msgcat::mcset da {Menu Font} {Menu skrifttype}
 ::msgcat::mcset da {Menus and Buttons} 
 ::msgcat::mcset da {Menu} 
 ::msgcat::mcset da {Message Log} 
@@ -474,7 +472,6 @@
 ::msgcat::mcset da {Normal} {Normal}
 ::msgcat::mcset da {North} {Nord}
 ::msgcat::mcset da {Not Found} 
-::msgcat::mcset da {Not supported} 
 ::msgcat::mcset da {No} {Nej}
 ::msgcat::mcset da {Number of Samples} {Antal}
 ::msgcat::mcset da {Number of Threads} 
@@ -530,6 +527,8 @@
 ::msgcat::mcset da {Play} {Afspil}
 ::msgcat::mcset da {Please Select a Region} 
 ::msgcat::mcset da {Please specify width, height, and either name or (ra,dec)} [encoding convertfrom iso8859-1 {angiv venligst bredde, højde, og enten navn eller (ra,dec)}]
+::msgcat::mcset da {Plot 2D} 
+::msgcat::mcset da {Plot 3D} 
 ::msgcat::mcset da {Plot Title} {Plot titel}
 ::msgcat::mcset da {Plot Tool} {Plotte funktion}
 ::msgcat::mcset da {Plotting Regions} [encoding convertfrom iso8859-1 {Plotte områder}]
@@ -603,11 +602,7 @@
 ::msgcat::mcset da {Save Contrast/Bias} {Gem kontrast/bias}
 ::msgcat::mcset da {Save Data} {Gem data}
 ::msgcat::mcset da {Save FITS on download} {Gem som FITS mens der hentes}
-::msgcat::mcset da {Save FITS} {gem som FITS}
-::msgcat::mcset da {Save Frame as Fits} {Gem vindue i FITS format}
-::msgcat::mcset da {Save Frames as MPEG} {Gem vindue i MPEG format}
 ::msgcat::mcset da {Save Image} {Gem billede}
-::msgcat::mcset da {Save MPEG} {gem MPEG}
 ::msgcat::mcset da {Save Regions} [encoding convertfrom iso8859-1 {Gem områder}]
 ::msgcat::mcset da {Save Template} {Gem skabelon}
 ::msgcat::mcset da {Save} {Gem}
@@ -672,6 +667,7 @@
 ::msgcat::mcset da {Table} 
 ::msgcat::mcset da {Tabloid} 
 ::msgcat::mcset da {Template} 
+::msgcat::mcset da {Text Font} 
 ::msgcat::mcset da {Text} {Tekst}
 ::msgcat::mcset da {Theme} 
 ::msgcat::mcset da {Then} [encoding convertfrom iso8859-1 {Så}]
@@ -737,11 +733,11 @@
 ::msgcat::mcset da {Writing Catalog} 
 ::msgcat::mcset da {X Axis Label} {X akse tekst}
 ::msgcat::mcset da {X Axis} {X akse}
-::msgcat::mcset da {X Point} {Punkt - X}
 ::msgcat::mcset da {XPA Information} {XPA information}
 ::msgcat::mcset da {XPA not initialized} {XPA ikke startet}
 ::msgcat::mcset da {XPA unable to verify hostname, setting XPA_METHOD to LOCAL} 
 ::msgcat::mcset da {XPA} 
+::msgcat::mcset da {X} 
 ::msgcat::mcset da {Y Axis Label} {Y akse tekst}
 ::msgcat::mcset da {Y Axis} {Y akse}
 ::msgcat::mcset da {Yellow} {Gul}
diff --git a/msgs/de.msg b/msgs/de.msg
index b32ccac..440d98d 100644
--- a/msgs/de.msg
+++ b/msgs/de.msg
@@ -16,8 +16,8 @@
 ::msgcat::mcset de {An error has occurred during backup} 
 ::msgcat::mcset de {An error has occurred during restore} 
 ::msgcat::mcset de {An error has occurred invoking the Analysis task} {Beim Aufrufen des Analysetasks ist ein Fehler aufgetreten}
-::msgcat::mcset de {An error has occurred while creating image} {Beim Erstellen eines Bildes ist ein Fehler aufgetreten}
-::msgcat::mcset de {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen} {Beim Erstellen des Bildes ist ein Fehler aufgetreten. Stellen Sie sicher, dass das gesamte Bildfenster auf dem Bildschirm sichtbar ist.}
+::msgcat::mcset de {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.} 
+::msgcat::mcset de {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.} 
 ::msgcat::mcset de {An error has occurred while printing} {Beim Drucken ist ein Fehler aufgetreten}
 ::msgcat::mcset de {An error has occurred while saving} {Beim Speichern ist ein Fehler aufgetreten}
 ::msgcat::mcset de {An internal error has been detected} 
@@ -36,7 +36,6 @@
 ::msgcat::mcset de {ArcSec} {Bogensekunde}
 ::msgcat::mcset de {Architecture} {Architektur}
 ::msgcat::mcset de {Archives} {Archive}
-::msgcat::mcset de {Arrow Point} {Pfeilpunkt}
 ::msgcat::mcset de {Arrow} {Pfeil}
 ::msgcat::mcset de {Astronomy} 
 ::msgcat::mcset de {At Startup} 
@@ -81,8 +80,7 @@
 ::msgcat::mcset de {Border} {Begrenzung}
 ::msgcat::mcset de {Box Annulus} {Viereck ring}
 ::msgcat::mcset de {Box Panda} {Viereckiger panda}
-::msgcat::mcset de {Box Point} {Viereckspunkt}
-::msgcat::mcset de {BoxCircle Point} {ViereckKreisPunkt}
+::msgcat::mcset de {BoxCircle} 
 ::msgcat::mcset de {Boxcar} 
 ::msgcat::mcset de {Box} {Viereck}
 ::msgcat::mcset de {Broadcast} 
@@ -106,8 +104,6 @@
 ::msgcat::mcset de {Center} {Mittelpunkt}
 ::msgcat::mcset de {Centroid Parameters} 
 ::msgcat::mcset de {Centroid} 
-::msgcat::mcset de {Circle Point} {Kreispunkt}
-::msgcat::mcset de {Circle3d} 
 ::msgcat::mcset de {Circle} {Kreis}
 ::msgcat::mcset de {Clear All} [encoding convertfrom iso8859-1 {Alle löschen}]
 ::msgcat::mcset de {Clear Analysis Commands} [encoding convertfrom iso8859-1 {Analysebefehle löschen}]
@@ -143,6 +139,7 @@
 ::msgcat::mcset de {Contours} {Konturen}
 ::msgcat::mcset de {Contour} 
 ::msgcat::mcset de {Contrast} {Kontrast}
+::msgcat::mcset de {Contributed} 
 ::msgcat::mcset de {Convert to Polygons} {Zu Polygonen konvertieren}
 ::msgcat::mcset de {Coordinate Grid Parameters} {Koordinatennetzparameter}
 ::msgcat::mcset de {Coordinate Grid} {Koordinatennetz}
@@ -152,11 +149,11 @@
 ::msgcat::mcset de {Copy Contours} {Konturen kopieren}
 ::msgcat::mcset de {Copy to Regions} {Zu Regionen kopieren}
 ::msgcat::mcset de {Copy} {Kopieren}
+::msgcat::mcset de {Create Movie} 
 ::msgcat::mcset de {Create New Frame on Download} {Neuen rahmen bei Download}
 ::msgcat::mcset de {Create} 
 ::msgcat::mcset de {Crop Parameters} 
 ::msgcat::mcset de {Crop} 
-::msgcat::mcset de {Cross Point} {Kreuzpunkt} 
 ::msgcat::mcset de {Crosshair To}  {Fadenkreuz auf}
 ::msgcat::mcset de {Crosshair} {Fadenkreuz}
 ::msgcat::mcset de {Cross} {Kreuz}
@@ -196,7 +193,6 @@
 ::msgcat::mcset de {Depth} {Tiefe}
 ::msgcat::mcset de {Detector} {Detektor}
 ::msgcat::mcset de {Dialog Box} {Dialogbox}
-::msgcat::mcset de {Diamond Point} {Rautenpunkt}
 ::msgcat::mcset de {Diamond} {Raute}
 ::msgcat::mcset de {Dimension} 
 ::msgcat::mcset de {Disconnect} 
@@ -238,6 +234,7 @@
 ::msgcat::mcset de {Exclude} {Ausschliessen}
 ::msgcat::mcset de {Executing TCL code is not enabled} 
 ::msgcat::mcset de {Exit} [encoding convertfrom iso8859-1 {Schließen}]
+::msgcat::mcset de {Export Image} 
 ::msgcat::mcset de {Extention} 
 ::msgcat::mcset de {Exterior Axes} [encoding convertfrom iso8859-1 {Äußere Achsen}]
 ::msgcat::mcset de {Exterior Numerics} [encoding convertfrom iso8859-1 {Äußere Ziffern}]
@@ -265,6 +262,7 @@
 ::msgcat::mcset de {Front} {Vor}
 ::msgcat::mcset de {Full Range} {Ganzer Bereich}
 ::msgcat::mcset de {Function} {Funktion}
+::msgcat::mcset de {GUI Font} 
 ::msgcat::mcset de {Galactic} {Galaktisch}
 ::msgcat::mcset de {Gap} 
 ::msgcat::mcset de {Gaussian} {Gauss}
@@ -318,6 +316,7 @@
 ::msgcat::mcset de {Interior Numerics} {Innere Ziffern}
 ::msgcat::mcset de {Internal Parse Error} 
 ::msgcat::mcset de {Interval} {Intervall}
+::msgcat::mcset de {Invalid Column Name} 
 ::msgcat::mcset de {Invalid formated multipart/mixed mime type message} [encoding convertfrom iso8859-1 {Ungültig formatierter multipart/mixed MIME-Type}]
 ::msgcat::mcset de {Invert Colormap} {Farbpalette invertieren}
 ::msgcat::mcset de {Invert Selection} {Auswahl umkehren}
@@ -395,7 +394,7 @@
 ::msgcat::mcset de {Low High} {Niedrig Hoch}
 ::msgcat::mcset de {Low} {Niedrig}
 ::msgcat::mcset de {MIP} 
-::msgcat::mcset de {MPEG Quality Factor} [encoding convertfrom iso8859-1 {MPEG Qualitätsfaktor}]
+::msgcat::mcset de {MPEG} 
 ::msgcat::mcset de {Magenta} 
 ::msgcat::mcset de {Magnification} 
 ::msgcat::mcset de {Magnifier} [encoding convertfrom iso8859-1 {Vergrößerungsglas}]
@@ -425,7 +424,6 @@
 ::msgcat::mcset de {Math Function} {Math. Funktion}
 ::msgcat::mcset de {Max Rows} {Max. Reihen}
 ::msgcat::mcset de {Max} 
-::msgcat::mcset de {Menu Font} {Menufont}
 ::msgcat::mcset de {Menus and Buttons} 
 ::msgcat::mcset de {Menu} 
 ::msgcat::mcset de {Message Log} 
@@ -474,7 +472,6 @@
 ::msgcat::mcset de {Normal} 
 ::msgcat::mcset de {North} {Norden}
 ::msgcat::mcset de {Not Found} 
-::msgcat::mcset de {Not supported} 
 ::msgcat::mcset de {No} {Nein}
 ::msgcat::mcset de {Number of Samples} {Anzahl der Stichproben}
 ::msgcat::mcset de {Number of Threads} 
@@ -530,6 +527,8 @@
 ::msgcat::mcset de {Play} {Abspielen}
 ::msgcat::mcset de {Please Select a Region} 
 ::msgcat::mcset de {Please specify width, height, and either name or (ra,dec)} [encoding convertfrom iso8859-1 {Bitte Weite, Höhe und entweder Namen oder (RA,Dec) angeben}]
+::msgcat::mcset de {Plot 2D} 
+::msgcat::mcset de {Plot 3D} 
 ::msgcat::mcset de {Plot Title} {Titel drucken}
 ::msgcat::mcset de {Plot Tool} {Zeichenwerkzeug}
 ::msgcat::mcset de {Plotting Regions} {Regionen drucken}
@@ -603,11 +602,7 @@
 ::msgcat::mcset de {Save Contrast/Bias} {Kontrast/Bias speichern}
 ::msgcat::mcset de {Save Data} {Daten speichern}
 ::msgcat::mcset de {Save FITS on download} {FITS bei Download speichern}
-::msgcat::mcset de {Save FITS} 
-::msgcat::mcset de {Save Frame as Fits} {Rahmen speichern als Fits}
-::msgcat::mcset de {Save Frames as MPEG} {Rahmen speichern als MPEG}
 ::msgcat::mcset de {Save Image} {Bild speichern}
-::msgcat::mcset de {Save MPEG} 
 ::msgcat::mcset de {Save Regions} {Regionen speichern}
 ::msgcat::mcset de {Save Template} {Vorlage speichern}
 ::msgcat::mcset de {Save} {Speichern}
@@ -672,6 +667,7 @@
 ::msgcat::mcset de {Table} 
 ::msgcat::mcset de {Tabloid} 
 ::msgcat::mcset de {Template} 
+::msgcat::mcset de {Text Font} 
 ::msgcat::mcset de {Text} 
 ::msgcat::mcset de {Theme} 
 ::msgcat::mcset de {Then} {dann}
@@ -737,11 +733,11 @@
 ::msgcat::mcset de {Writing Catalog} 
 ::msgcat::mcset de {X Axis Label} {X-Achsenbeschriftung}
 ::msgcat::mcset de {X Axis} {X-Achse}
-::msgcat::mcset de {X Point} {X-Punkt}
 ::msgcat::mcset de {XPA Information} 
 ::msgcat::mcset de {XPA not initialized} {XPA nicht initialisiert}
 ::msgcat::mcset de {XPA unable to verify hostname, setting XPA_METHOD to LOCAL} 
 ::msgcat::mcset de {XPA} 
+::msgcat::mcset de {X} 
 ::msgcat::mcset de {Y Axis Label} {Y-Achsenbeschriftung}
 ::msgcat::mcset de {Y Axis} {Y-Achse}
 ::msgcat::mcset de {Yellow} {Gelb}
diff --git a/msgs/es.msg b/msgs/es.msg
index 3a2bc08..5fff635 100644
--- a/msgs/es.msg
+++ b/msgs/es.msg
@@ -16,8 +16,8 @@
 ::msgcat::mcset es {An error has occurred during backup} 
 ::msgcat::mcset es {An error has occurred during restore} 
 ::msgcat::mcset es {An error has occurred invoking the Analysis task} [encoding convertfrom iso8859-1 {Un error ha ocurrido mientras se invocaba la tarea de análisis}]
-::msgcat::mcset es {An error has occurred while creating image} {Un error ha ocurrido mientras se creaba la imagen}
-::msgcat::mcset es {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen} [encoding convertfrom iso8859-1 {Un error ha ocurrido mientras se creaba la imagen. Por favor asegúrese de que toda la ventana de la imagen es visible en pantalla}]
+::msgcat::mcset es {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.} 
+::msgcat::mcset es {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.} 
 ::msgcat::mcset es {An error has occurred while printing} {Un error ha ocurrido al imprimir}
 ::msgcat::mcset es {An error has occurred while saving} {Un error ha ocurrido al guardar}
 ::msgcat::mcset es {An internal error has been detected} 
@@ -36,7 +36,6 @@
 ::msgcat::mcset es {ArcSec} {SegArc}
 ::msgcat::mcset es {Architecture} {Arquitectura}
 ::msgcat::mcset es {Archives} {Archivos}
-::msgcat::mcset es {Arrow Point} {Flecha indicadora}
 ::msgcat::mcset es {Arrow} {Flecha}
 ::msgcat::mcset es {Astronomy} 
 ::msgcat::mcset es {At Startup} 
@@ -81,8 +80,7 @@
 ::msgcat::mcset es {Border} {Borde}
 ::msgcat::mcset es {Box Annulus} {Caja con caja inscrita}
 ::msgcat::mcset es {Box Panda} {Caja con caja inscrita segmetada}
-::msgcat::mcset es {Box Point} {Cuadrado indicador}
-::msgcat::mcset es {BoxCircle Point} [encoding convertfrom iso8859-1 {Cuadrado con círculo inscrito indicador}]
+::msgcat::mcset es {BoxCircle} 
 ::msgcat::mcset es {Boxcar} 
 ::msgcat::mcset es {Box} {Casilla}
 ::msgcat::mcset es {Broadcast} 
@@ -106,8 +104,6 @@
 ::msgcat::mcset es {Center} {Centrar}
 ::msgcat::mcset es {Centroid Parameters} [encoding convertfrom iso8859-1 {Párametros del centroide}]
 ::msgcat::mcset es {Centroid} {Centroide}
-::msgcat::mcset es {Circle Point} [encoding convertfrom iso8859-1 {Círculo indicador}]
-::msgcat::mcset es {Circle3d} 
 ::msgcat::mcset es {Circle} [encoding convertfrom iso8859-1 {Círculo}]
 ::msgcat::mcset es {Clear All} {Despejar todos}
 ::msgcat::mcset es {Clear Analysis Commands} {Borrar las instrucciones de análisis}
@@ -143,6 +139,7 @@
 ::msgcat::mcset es {Contours} {Contornos}
 ::msgcat::mcset es {Contour} 
 ::msgcat::mcset es {Contrast} {Contraste}
+::msgcat::mcset es {Contributed} 
 ::msgcat::mcset es {Convert to Polygons} [encoding convertfrom iso8859-1 {Convertir a polígonos}]
 ::msgcat::mcset es {Coordinate Grid Parameters} [encoding convertfrom iso8859-1 {Parámetros de la cuadrícula de coordenadas}]
 ::msgcat::mcset es {Coordinate Grid} [encoding convertfrom iso8859-1 {Cuadrícula de coordenadas}]
@@ -152,11 +149,11 @@
 ::msgcat::mcset es {Copy Contours} {Copiar contornos}
 ::msgcat::mcset es {Copy to Regions} {Copiar a regiones}
 ::msgcat::mcset es {Copy} {Copiar}
+::msgcat::mcset es {Create Movie} 
 ::msgcat::mcset es {Create New Frame on Download} {Crear un nuevo marco al transferir}
 ::msgcat::mcset es {Create} 
 ::msgcat::mcset es {Crop Parameters} 
 ::msgcat::mcset es {Crop} 
-::msgcat::mcset es {Cross Point} {Cruz indicadora}
 ::msgcat::mcset es {Crosshair To} {Localizar con punto de mira} 
 ::msgcat::mcset es {Crosshair} {Punto de mira}
 ::msgcat::mcset es {Cross} {Cruz}
@@ -196,7 +193,6 @@
 ::msgcat::mcset es {Depth} {Profundidad}
 ::msgcat::mcset es {Detector} 
 ::msgcat::mcset es {Dialog Box} [encoding convertfrom iso8859-1 {Caja de diálogo}]
-::msgcat::mcset es {Diamond Point} {Diamante indicador}
 ::msgcat::mcset es {Diamond} {Diamante}
 ::msgcat::mcset es {Dimension} [encoding convertfrom iso8859-1 {Dimensión}]
 ::msgcat::mcset es {Disconnect} 
@@ -238,6 +234,7 @@
 ::msgcat::mcset es {Exclude} {Excluir}
 ::msgcat::mcset es {Executing TCL code is not enabled} 
 ::msgcat::mcset es {Exit} {Salir}
+::msgcat::mcset es {Export Image} 
 ::msgcat::mcset es {Extention} 
 ::msgcat::mcset es {Exterior Axes} {Ejes exteriores}
 ::msgcat::mcset es {Exterior Numerics} {Numeración exterior}
@@ -265,6 +262,7 @@
 ::msgcat::mcset es {Front} {Al frente}
 ::msgcat::mcset es {Full Range} {Rango completo}
 ::msgcat::mcset es {Function} [encoding convertfrom iso8859-1 {Función}]
+::msgcat::mcset es {GUI Font} 
 ::msgcat::mcset es {Galactic} [encoding convertfrom iso8859-1 {Galáctico}]
 ::msgcat::mcset es {Gap} 
 ::msgcat::mcset es {Gaussian} {Gausiana}
@@ -318,6 +316,7 @@
 ::msgcat::mcset es {Interior Numerics} [encoding convertfrom iso8859-1 {Numeración interior}]
 ::msgcat::mcset es {Internal Parse Error} 
 ::msgcat::mcset es {Interval} {Intervalo}
+::msgcat::mcset es {Invalid Column Name} 
 ::msgcat::mcset es {Invalid formated multipart/mixed mime type message} 
 ::msgcat::mcset es {Invert Colormap} {Invertir mapa de colores}
 ::msgcat::mcset es {Invert Selection} [encoding convertfrom iso8859-1 {Invertir selección}]
@@ -395,7 +394,7 @@
 ::msgcat::mcset es {Low High} {Bajo Alto} 
 ::msgcat::mcset es {Low} {Bajo}
 ::msgcat::mcset es {MIP} 
-::msgcat::mcset es {MPEG Quality Factor} {Factor de calidad MPEG}
+::msgcat::mcset es {MPEG} 
 ::msgcat::mcset es {Magenta} 
 ::msgcat::mcset es {Magnification} 
 ::msgcat::mcset es {Magnifier} {Ventanilla magnificadora} 
@@ -425,7 +424,6 @@
 ::msgcat::mcset es {Math Function} [encoding convertfrom iso8859-1 {Función matemática}]
 ::msgcat::mcset es {Max Rows} [encoding convertfrom iso8859-1 {Máx filas}] 
 ::msgcat::mcset es {Max} [encoding convertfrom iso8859-1 {Máx}]
-::msgcat::mcset es {Menu Font} [encoding convertfrom iso8859-1 {Fuente para Menús}]
 ::msgcat::mcset es {Menus and Buttons} 
 ::msgcat::mcset es {Menu} 
 ::msgcat::mcset es {Message Log} 
@@ -474,7 +472,6 @@
 ::msgcat::mcset es {Normal} 
 ::msgcat::mcset es {North} {Norte}
 ::msgcat::mcset es {Not Found} 
-::msgcat::mcset es {Not supported} 
 ::msgcat::mcset es {No} 
 ::msgcat::mcset es {Number of Samples} [encoding convertfrom iso8859-1 {Número de muestreos}]
 ::msgcat::mcset es {Number of Threads} 
@@ -530,6 +527,8 @@
 ::msgcat::mcset es {Play} 
 ::msgcat::mcset es {Please Select a Region} 
 ::msgcat::mcset es {Please specify width, height, and either name or (ra,dec)} {Por farvor, especifique el ancho, altura, y nombre o (A.R.,Dec.)}
+::msgcat::mcset es {Plot 2D} 
+::msgcat::mcset es {Plot 3D} 
 ::msgcat::mcset es {Plot Title} [encoding convertfrom iso8859-1 {Título de la gráfica}]
 ::msgcat::mcset es {Plot Tool} [encoding convertfrom iso8859-1 {Herramienta gráfica}]
 ::msgcat::mcset es {Plotting Regions} {Dibujando regiones}
@@ -603,11 +602,7 @@
 ::msgcat::mcset es {Save Contrast/Bias} {Guardar contraste/Bias}
 ::msgcat::mcset es {Save Data} {Guardar datos}
 ::msgcat::mcset es {Save FITS on download} {Guardar FITS al transferir}
-::msgcat::mcset es {Save FITS} 
-::msgcat::mcset es {Save Frame as Fits} {Guardar marco como FITS}
-::msgcat::mcset es {Save Frames as MPEG} {Guardar marco como MPEG}
 ::msgcat::mcset es {Save Image} {Guardar imagen}
-::msgcat::mcset es {Save MPEG} 
 ::msgcat::mcset es {Save Regions} {Guardar regiones}
 ::msgcat::mcset es {Save Template} {Guardar modelo}
 ::msgcat::mcset es {Save} {Guardar}
@@ -672,6 +667,7 @@
 ::msgcat::mcset es {Table} 
 ::msgcat::mcset es {Tabloid} 
 ::msgcat::mcset es {Template} 
+::msgcat::mcset es {Text Font} 
 ::msgcat::mcset es {Text} {Texto}
 ::msgcat::mcset es {Theme} 
 ::msgcat::mcset es {Then} {Entonces} 
@@ -737,11 +733,11 @@
 ::msgcat::mcset es {Writing Catalog} 
 ::msgcat::mcset es {X Axis Label} {Etiqueta del eje X}
 ::msgcat::mcset es {X Axis} {Eje X}
-::msgcat::mcset es {X Point} {Cruz indicadora}
 ::msgcat::mcset es {XPA Information} [encoding convertfrom iso8859-1 {Información XPA}]
 ::msgcat::mcset es {XPA not initialized} {XPA no inicializado}
 ::msgcat::mcset es {XPA unable to verify hostname, setting XPA_METHOD to LOCAL} 
 ::msgcat::mcset es {XPA} 
+::msgcat::mcset es {X} 
 ::msgcat::mcset es {Y Axis Label} {Etiqueta del eje Y}
 ::msgcat::mcset es {Y Axis} {Eje Y}
 ::msgcat::mcset es {Yellow} {Amarillo}
diff --git a/msgs/fr.msg b/msgs/fr.msg
index f556928..bdbb34b 100644
--- a/msgs/fr.msg
+++ b/msgs/fr.msg
@@ -16,8 +16,8 @@
 ::msgcat::mcset fr {An error has occurred during backup} 
 ::msgcat::mcset fr {An error has occurred during restore} 
 ::msgcat::mcset fr {An error has occurred invoking the Analysis task} [encoding convertfrom iso8859-1 {Une erreur s'est produite en invoquant la tâche d'analyse}]
-::msgcat::mcset fr {An error has occurred while creating image} [encoding convertfrom iso8859-1 {Une erreur s'est produite pendant la création d'image}]
-::msgcat::mcset fr {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen} [encoding convertfrom iso8859-1 {Une erreur s'est produite pendant la création d'image. Vérifiez que la fenêtre de l'image est entièrement visible sur l'écran}]
+::msgcat::mcset fr {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.} 
+::msgcat::mcset fr {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.} 
 ::msgcat::mcset fr {An error has occurred while printing} {Une erreur s'est produite pendant l'impression}
 ::msgcat::mcset fr {An error has occurred while saving} {Une erreur s'est produite pendant la sauvegarde}
 ::msgcat::mcset fr {An internal error has been detected} 
@@ -36,7 +36,6 @@
 ::msgcat::mcset fr {ArcSec} 
 ::msgcat::mcset fr {Architecture} 
 ::msgcat::mcset fr {Archives} 
-::msgcat::mcset fr {Arrow Point} [encoding convertfrom iso8859-1 {Point de flèche}]
 ::msgcat::mcset fr {Arrow} [encoding convertfrom iso8859-1 {Flèche}]
 ::msgcat::mcset fr {Astronomy} 
 ::msgcat::mcset fr {At Startup} 
@@ -81,8 +80,7 @@
 ::msgcat::mcset fr {Border} {Bordure}
 ::msgcat::mcset fr {Box Annulus} [encoding convertfrom iso8859-1 {Anneau de boîte}]
 ::msgcat::mcset fr {Box Panda} 
-::msgcat::mcset fr {Box Point} 
-::msgcat::mcset fr {BoxCircle Point} 
+::msgcat::mcset fr {BoxCircle} 
 ::msgcat::mcset fr {Boxcar} 
 ::msgcat::mcset fr {Box} [encoding convertfrom iso8859-1 {Boîte}]
 ::msgcat::mcset fr {Broadcast} 
@@ -106,8 +104,6 @@
 ::msgcat::mcset fr {Center} {Centrer}
 ::msgcat::mcset fr {Centroid Parameters} 
 ::msgcat::mcset fr {Centroid} 
-::msgcat::mcset fr {Circle Point} {Point de cercle}
-::msgcat::mcset fr {Circle3d} 
 ::msgcat::mcset fr {Circle} {Cercle}
 ::msgcat::mcset fr {Clear All} {Tout effacer}
 ::msgcat::mcset fr {Clear Analysis Commands} {Effacer les commandes d'analyse}
@@ -143,6 +139,7 @@
 ::msgcat::mcset fr {Contours} 
 ::msgcat::mcset fr {Contour} 
 ::msgcat::mcset fr {Contrast} {Contraste}
+::msgcat::mcset fr {Contributed} 
 ::msgcat::mcset fr {Convert to Polygons} {Convertir en polygones}
 ::msgcat::mcset fr {Coordinate Grid Parameters} [encoding convertfrom iso8859-1 {Paramètres de grille de coordonnées}]
 ::msgcat::mcset fr {Coordinate Grid} [encoding convertfrom iso8859-1 {Grille de coordonnées}]
@@ -152,11 +149,11 @@
 ::msgcat::mcset fr {Copy Contours} {Copier les contours}
 ::msgcat::mcset fr {Copy to Regions} [encoding convertfrom iso8859-1 {Copier vers Régions}]
 ::msgcat::mcset fr {Copy} {Copier}
+::msgcat::mcset fr {Create Movie} 
 ::msgcat::mcset fr {Create New Frame on Download} [encoding convertfrom iso8859-1 {Créer une nouvelle fenêtre au téléchargement}]
 ::msgcat::mcset fr {Create} 
 ::msgcat::mcset fr {Crop Parameters} 
 ::msgcat::mcset fr {Crop} 
-::msgcat::mcset fr {Cross Point} {Point de croisement}
 ::msgcat::mcset fr {Crosshair To} [encoding convertfrom iso8859-1 {Réticule vers}]
 ::msgcat::mcset fr {Crosshair} [encoding convertfrom iso8859-1 {Réticule}]
 ::msgcat::mcset fr {Cross} {Croisement}
@@ -196,7 +193,6 @@
 ::msgcat::mcset fr {Depth} {Profondeur} 
 ::msgcat::mcset fr {Detector} {Detecteur} 
 ::msgcat::mcset fr {Dialog Box} [encoding convertfrom iso8859-1 {Boîte de dialogue}]
-::msgcat::mcset fr {Diamond Point} 
 ::msgcat::mcset fr {Diamond} {Losange} 
 ::msgcat::mcset fr {Dimension} {Dimention} 
 ::msgcat::mcset fr {Disconnect} 
@@ -238,6 +234,7 @@
 ::msgcat::mcset fr {Exclude} {Exclure} 
 ::msgcat::mcset fr {Executing TCL code is not enabled} 
 ::msgcat::mcset fr {Exit} {Sortie} 
+::msgcat::mcset fr {Export Image} 
 ::msgcat::mcset fr {Extention} 
 ::msgcat::mcset fr {Exterior Axes} {Axes exterieurs} 
 ::msgcat::mcset fr {Exterior Numerics} {Chiffres exterieurs}
@@ -265,6 +262,7 @@
 ::msgcat::mcset fr {Front} {Avant} 
 ::msgcat::mcset fr {Full Range} 
 ::msgcat::mcset fr {Function} {Fonction} 
+::msgcat::mcset fr {GUI Font} 
 ::msgcat::mcset fr {Galactic} {Galactiques} 
 ::msgcat::mcset fr {Gap} 
 ::msgcat::mcset fr {Gaussian} {Gaussien} 
@@ -318,6 +316,7 @@
 ::msgcat::mcset fr {Interior Numerics} [encoding convertfrom iso8859-1 {Chiffres intérieur}]
 ::msgcat::mcset fr {Internal Parse Error} 
 ::msgcat::mcset fr {Interval} {Intervalle}
+::msgcat::mcset fr {Invalid Column Name} 
 ::msgcat::mcset fr {Invalid formated multipart/mixed mime type message} {Message invalide de genre mixte/multipart}
 ::msgcat::mcset fr {Invert Colormap} {Plan de couleur inverti}
 ::msgcat::mcset fr {Invert Selection} {Selection inverti}
@@ -395,7 +394,7 @@
 ::msgcat::mcset fr {Low High} {Haut bas}
 ::msgcat::mcset fr {Low} {Bas}
 ::msgcat::mcset fr {MIP} 
-::msgcat::mcset fr {MPEG Quality Factor} [encoding convertfrom iso8859-1 {Le facteur de qualité de MPEG}]
+::msgcat::mcset fr {MPEG} 
 ::msgcat::mcset fr {Magenta} 
 ::msgcat::mcset fr {Magnification} 
 ::msgcat::mcset fr {Magnifier} {Magnificateur}
@@ -425,7 +424,6 @@
 ::msgcat::mcset fr {Math Function} {Fonction mathématique}
 ::msgcat::mcset fr {Max Rows} [encoding convertfrom iso8859-1 {Maximum de rangées}]
 ::msgcat::mcset fr {Max} {Maximum}
-::msgcat::mcset fr {Menu Font} {Font de menu}
 ::msgcat::mcset fr {Menus and Buttons} 
 ::msgcat::mcset fr {Menu} 
 ::msgcat::mcset fr {Message Log} 
@@ -474,7 +472,6 @@
 ::msgcat::mcset fr {Normal} 
 ::msgcat::mcset fr {North} {Nord}
 ::msgcat::mcset fr {Not Found} 
-::msgcat::mcset fr {Not supported} 
 ::msgcat::mcset fr {No} {Non}
 ::msgcat::mcset fr {Number of Samples} [encoding convertfrom iso8859-1 {Nombre d'échantillons}]
 ::msgcat::mcset fr {Number of Threads} 
@@ -530,6 +527,8 @@
 ::msgcat::mcset fr {Play} {Jouer}
 ::msgcat::mcset fr {Please Select a Region} 
 ::msgcat::mcset fr {Please specify width, height, and either name or (ra,dec)} {Specifiez largeur, longeur, et autre noms possibles ou (ra,dec)}
+::msgcat::mcset fr {Plot 2D} 
+::msgcat::mcset fr {Plot 3D} 
 ::msgcat::mcset fr {Plot Title} {Ecrire le titre}
 ::msgcat::mcset fr {Plot Tool} {Ecrire l'outil}
 ::msgcat::mcset fr {Plotting Regions} [encoding convertfrom iso8859-1 {Tracer les régions}]
@@ -603,11 +602,7 @@
 ::msgcat::mcset fr {Save Contrast/Bias} 
 ::msgcat::mcset fr {Save Data} 
 ::msgcat::mcset fr {Save FITS on download} 
-::msgcat::mcset fr {Save FITS} 
-::msgcat::mcset fr {Save Frame as Fits} 
-::msgcat::mcset fr {Save Frames as MPEG} 
 ::msgcat::mcset fr {Save Image} 
-::msgcat::mcset fr {Save MPEG} 
 ::msgcat::mcset fr {Save Regions} 
 ::msgcat::mcset fr {Save Template} 
 ::msgcat::mcset fr {Save} {Enregistrer}
@@ -672,6 +667,7 @@
 ::msgcat::mcset fr {Table} 
 ::msgcat::mcset fr {Tabloid} 
 ::msgcat::mcset fr {Template} 
+::msgcat::mcset fr {Text Font} 
 ::msgcat::mcset fr {Text} {Texte}
 ::msgcat::mcset fr {Theme} 
 ::msgcat::mcset fr {Then} 
@@ -737,11 +733,11 @@
 ::msgcat::mcset fr {Writing Catalog} 
 ::msgcat::mcset fr {X Axis Label} 
 ::msgcat::mcset fr {X Axis} 
-::msgcat::mcset fr {X Point} 
 ::msgcat::mcset fr {XPA Information} 
 ::msgcat::mcset fr {XPA not initialized} 
 ::msgcat::mcset fr {XPA unable to verify hostname, setting XPA_METHOD to LOCAL} 
 ::msgcat::mcset fr {XPA} 
+::msgcat::mcset fr {X} 
 ::msgcat::mcset fr {Y Axis Label} 
 ::msgcat::mcset fr {Y Axis} 
 ::msgcat::mcset fr {Yellow} 
diff --git a/msgs/ja.msg b/msgs/ja.msg
index ee76019..4a77831 100644
--- a/msgs/ja.msg
+++ b/msgs/ja.msg
@@ -16,8 +16,8 @@
 ::msgcat::mcset ja {An error has occurred during backup} 
 ::msgcat::mcset ja {An error has occurred during restore} 
 ::msgcat::mcset ja {An error has occurred invoking the Analysis task} [encoding convertfrom euc-jp "\xb2\xf2\xc0\xcf\xa5\xbf\xa5\xb9\xa5\xaf\xa4\xce\xb5\xaf\xc6\xb0\xa4\xcb\xbc\xba\xc7\xd4\xa4\xb7\xa4\xde\xa4\xb7\xa4\xbf\xa1\xa3"]
-::msgcat::mcset ja {An error has occurred while creating image} [encoding convertfrom euc-jp "\xa5\xa4\xa5\xe1\xa1\xbc\xa5\xb8\xba\xee\xc0\xae\xa4\xcb\xbc\xba\xc7\xd4\xa4\xb7\xa4\xde\xa4\xb7\xa4\xbf\xa1\xa3"]
-::msgcat::mcset ja {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen} [encoding convertfrom euc-jp "\xa5\xa4\xa5\xe1\xa1\xbc\xa5\xb8\xba\xee\xc0\xae\xa4\xcb\xbc\xba\xc7\xd4\xa4\xb7\xa4\xde\xa4\xb7\xa4\xbf\xa1\xa3\xb2\xe8\xcc\xcc\xa4\xcb\xa5\xa4\xa5\xe1\xa1\xbc\xa5\xb8\xc1\xb4\xc2\xce\xa4\xac\xb8\xab\xa4\xa8\xa4\xc6\xa4\xa4\xa4\xeb\xa4\xab\xb3\xce\xc7\xa7\xa4\xb7\xa4\xc6\xa4\xaf\xa4\xc0\xa4\xb5\xa4\xa4\xa1\xa3"]
+::msgcat::mcset ja {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.} 
+::msgcat::mcset ja {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.} 
 ::msgcat::mcset ja {An error has occurred while printing} [encoding convertfrom euc-jp "\xb0\xf5\xba\xfe\xa4\xcb\xbc\xba\xc7\xd4\xa4\xb7\xa4\xde\xa4\xb7\xa4\xbf\xa1\xa3"]
 ::msgcat::mcset ja {An error has occurred while saving} [encoding convertfrom euc-jp "\xca\xdd\xc2\xb8\xa4\xcb\xbc\xba\xc7\xd4\xa4\xb7\xa4\xde\xa4\xb7\xa4\xbf\xa1\xa3"]
 ::msgcat::mcset ja {An internal error has been detected} 
@@ -36,7 +36,6 @@
 ::msgcat::mcset ja {ArcSec} [encoding convertfrom euc-jp "\xc9\xc3"]
 ::msgcat::mcset ja {Architecture} [encoding convertfrom euc-jp "\xa5\xa2\xa1\xbc\xa5\xad\xa5\xc6\xa5\xaf\xa5\xc1\xa5\xe3"]
 ::msgcat::mcset ja {Archives} [encoding convertfrom euc-jp "\xa5\xa2\xa1\xbc\xa5\xab\xa5\xa4\xa5\xd6"]
-::msgcat::mcset ja {Arrow Point} [encoding convertfrom euc-jp "\xcc\xf0\xb0\xf5"]
 ::msgcat::mcset ja {Arrow} [encoding convertfrom euc-jp "\xcc\xf0\xb0\xf5"]
 ::msgcat::mcset ja {Astronomy} [encoding convertfrom euc-jp "\xc5\xb7\xca\xb8\xb3\xd8"]
 ::msgcat::mcset ja {At Startup} 
@@ -81,8 +80,7 @@
 ::msgcat::mcset ja {Border} [encoding convertfrom euc-jp "\xcf\xc8\xc0\xfe"]
 ::msgcat::mcset ja {Box Annulus} [encoding convertfrom euc-jp "\xc3\xe6\xc8\xb4\xa4\xad\xbb\xcd\xb3\xd1\xb7\xc1"]
 ::msgcat::mcset ja {Box Panda} [encoding convertfrom euc-jp "\xc9\xf4\xca\xac\xbb\xcd\xb3\xd1\xb7\xc1"]
-::msgcat::mcset ja {Box Point} [encoding convertfrom euc-jp "\xbb\xcd\xb3\xd1"]
-::msgcat::mcset ja {BoxCircle Point} [encoding convertfrom euc-jp "\xb4\xdd\xbb\xcd\xb3\xd1"]
+::msgcat::mcset ja {BoxCircle} 
 ::msgcat::mcset ja {Boxcar} [encoding convertfrom euc-jp "\xa5\xdc\xa5\xc3\xa5\xaf\xa5\xb9\xa5\xab\xa1\xbc"]
 ::msgcat::mcset ja {Box} [encoding convertfrom euc-jp "\xbb\xcd\xb3\xd1\xb7\xc1"]
 ::msgcat::mcset ja {Broadcast} 
@@ -106,8 +104,6 @@
 ::msgcat::mcset ja {Center} [encoding convertfrom euc-jp "\xc3\xe6\xbf\xb4"]
 ::msgcat::mcset ja {Centroid Parameters} [encoding convertfrom euc-jp "\xc3\xe6\xbf\xb4\xb9\xe7\xa4\xef\xa4\xbb\xc0\xdf\xc4\xea"]
 ::msgcat::mcset ja {Centroid} 
-::msgcat::mcset ja {Circle Point} [encoding convertfrom euc-jp "\xb1\xdf"]
-::msgcat::mcset ja {Circle3d} 
 ::msgcat::mcset ja {Circle} [encoding convertfrom euc-jp "\xb1\xdf"]
 ::msgcat::mcset ja {Clear All} [encoding convertfrom euc-jp "\xc1\xb4\xa4\xc6\xbe\xc3\xb5\xee"]
 ::msgcat::mcset ja {Clear Analysis Commands} [encoding convertfrom euc-jp "\xb2\xf2\xc0\xcf\xa5\xb3\xa5\xde\xa5\xf3\xa5\xc9\xa4\xf2\xbe\xc3\xb5\xee"]
@@ -143,6 +139,7 @@
 ::msgcat::mcset ja {Contours} [encoding convertfrom euc-jp "\xa5\xb3\xa5\xf3\xa5\xc8\xa5\xa2"]
 ::msgcat::mcset ja {Contour} 
 ::msgcat::mcset ja {Contrast} [encoding convertfrom euc-jp "\xa5\xb3\xa5\xf3\xa5\xc8\xa5\xe9\xa5\xb9\xa5\xc8"]
+::msgcat::mcset ja {Contributed} 
 ::msgcat::mcset ja {Convert to Polygons} [encoding convertfrom euc-jp "\xc2\xbf\xb3\xd1\xb7\xc1\xa4\xcb\xca\xd1\xb4\xb9"]
 ::msgcat::mcset ja {Coordinate Grid Parameters} [encoding convertfrom euc-jp "\xba\xc2\xc9\xb8\xa5\xb0\xa5\xea\xa5\xc3\xa5\xc9\xa4\xce\xc0\xdf\xc4\xea"]
 ::msgcat::mcset ja {Coordinate Grid} [encoding convertfrom euc-jp "\xba\xc2\xc9\xb8\xa5\xb0\xa5\xea\xa5\xc3\xa5\xc9"]
@@ -152,11 +149,11 @@
 ::msgcat::mcset ja {Copy Contours} [encoding convertfrom euc-jp "\xa5\xb3\xa5\xf3\xa5\xc8\xa5\xa2\xa4\xf2\xa5\xb3\xa5\xd4\xa1\xbc"]
 ::msgcat::mcset ja {Copy to Regions} [encoding convertfrom euc-jp "\xce\xce\xb0\xe8\xa4\xcb\xa5\xb3\xa5\xd4\xa1\xbc"]
 ::msgcat::mcset ja {Copy} [encoding convertfrom euc-jp "\xa5\xb3\xa5\xd4\xa1\xbc"]
+::msgcat::mcset ja {Create Movie} 
 ::msgcat::mcset ja {Create New Frame on Download} [encoding convertfrom euc-jp "\xa5\xc0\xa5\xa6\xa5\xf3\xa5\xed\xa1\xbc\xa5\xc9\xbb\xfe\xa4\xcb\xbf\xb7\xa4\xb7\xa4\xa4\xa5\xd5\xa5\xec\xa1\xbc\xa5\xe0\xa4\xf2\xba\xee\xc0\xae"]
 ::msgcat::mcset ja {Create} [encoding convertfrom euc-jp "\xba\xee\xc0\xae"]
 ::msgcat::mcset ja {Crop Parameters} 
 ::msgcat::mcset ja {Crop} 
-::msgcat::mcset ja {Cross Point} [encoding convertfrom euc-jp "\xbd\xbd\xbb\xfa"]
 ::msgcat::mcset ja {Crosshair To} [encoding convertfrom euc-jp "\xa4\xbd\xa4\xb3\xa4\xcb\xbd\xbd\xbb\xfa\xc0\xfe"]
 ::msgcat::mcset ja {Crosshair} [encoding convertfrom euc-jp "\xbd\xbd\xbb\xfa\xa5\xab\xa1\xbc\xa5\xbd\xa5\xeb"]
 ::msgcat::mcset ja {Cross} [encoding convertfrom euc-jp "\xbd\xbd\xbb\xfa"]
@@ -196,7 +193,6 @@
 ::msgcat::mcset ja {Depth} [encoding convertfrom euc-jp "\xbf\xbc\xa4\xb5"]
 ::msgcat::mcset ja {Detector} [encoding convertfrom euc-jp "\xb8\xa1\xbd\xd0\xb4\xef\xba\xc2\xc9\xb8"]
 ::msgcat::mcset ja {Dialog Box} [encoding convertfrom euc-jp "\xa5\xdd\xa5\xc3\xa5\xd7\xa5\xa2\xa5\xc3\xa5\xd7\xa5\xe1\xa5\xcb\xa5\xe5\xa1\xbc"]
-::msgcat::mcset ja {Diamond Point} [encoding convertfrom euc-jp "\xc9\xa9\xb7\xc1"]
 ::msgcat::mcset ja {Diamond} [encoding convertfrom euc-jp "\xc9\xa9\xb7\xc1"]
 ::msgcat::mcset ja {Dimension} [encoding convertfrom euc-jp "\xbc\xa1\xb8\xb5"]
 ::msgcat::mcset ja {Disconnect} [encoding convertfrom euc-jp "\xc0\xdc\xc2\xb3\xbd\xaa\xce\xbb"]
@@ -238,6 +234,7 @@
 ::msgcat::mcset ja {Exclude} [encoding convertfrom euc-jp "\xb3\xb0\xc2\xa6"]
 ::msgcat::mcset ja {Executing TCL code is not enabled} [encoding convertfrom euc-jp "\x54\x43\x4c\x20\xa5\xb3\xa1\xbc\xa5\xc9\xa4\xce\xbc\xc2\xb9\xd4\xa4\xac\xb5\xf6\xb2\xc4\xa4\xb5\xa4\xec\xa4\xc6\xa4\xa4\xa4\xde\xa4\xbb\xa4\xf3"]
 ::msgcat::mcset ja {Exit} [encoding convertfrom euc-jp "\xbd\xaa\xce\xbb"]
+::msgcat::mcset ja {Export Image} 
 ::msgcat::mcset ja {Extention} 
 ::msgcat::mcset ja {Exterior Axes} [encoding convertfrom euc-jp "\xbc\xb4\xa4\xf2\xb3\xb0\xc2\xa6\xa4\xcb"]
 ::msgcat::mcset ja {Exterior Numerics} [encoding convertfrom euc-jp "\xbf\xf4\xc3\xcd\xa4\xf2\xb3\xb0\xc2\xa6\xa4\xcb"]
@@ -265,6 +262,7 @@
 ::msgcat::mcset ja {Front} [encoding convertfrom euc-jp "\xc1\xb4\xcc\xcc"]
 ::msgcat::mcset ja {Full Range} [encoding convertfrom euc-jp "\xc1\xb4\xc8\xcf\xb0\xcf"]
 ::msgcat::mcset ja {Function} [encoding convertfrom euc-jp "\xb4\xd8\xbf\xf4"]
+::msgcat::mcset ja {GUI Font} 
 ::msgcat::mcset ja {Galactic} [encoding convertfrom euc-jp "\xb6\xe4\xb2\xcf\xba\xc2\xc9\xb8"]
 ::msgcat::mcset ja {Gap} 
 ::msgcat::mcset ja {Gaussian} [encoding convertfrom euc-jp "\xa5\xac\xa5\xa6\xa5\xb7\xa5\xa2\xa5\xf3"]
@@ -318,6 +316,7 @@
 ::msgcat::mcset ja {Interior Numerics} [encoding convertfrom euc-jp "\xbf\xf4\xc3\xcd\xa4\xf2\xc6\xe2\xc2\xa6\xa4\xcb"]
 ::msgcat::mcset ja {Internal Parse Error} [encoding convertfrom euc-jp "\xc6\xe2\xc9\xf4\xb2\xf2\xbc\xe1\xa5\xa8\xa5\xe9\xa1\xbc"]
 ::msgcat::mcset ja {Interval} [encoding convertfrom euc-jp "\xb4\xd6\xb3\xd6"]
+::msgcat::mcset ja {Invalid Column Name} 
 ::msgcat::mcset ja {Invalid formated multipart/mixed mime type message} 
 ::msgcat::mcset ja {Invert Colormap} [encoding convertfrom euc-jp "\xbf\xa7\xc4\xb4\xa4\xf2\xc8\xbf\xc5\xbe"]
 ::msgcat::mcset ja {Invert Selection} [encoding convertfrom euc-jp "\xc1\xaa\xc2\xf2\xa4\xf2\xc8\xbf\xc5\xbe"]
@@ -395,7 +394,7 @@
 ::msgcat::mcset ja {Low High} [encoding convertfrom euc-jp "\xbe\xe5\xb8\xc2\xa1\xa6\xb2\xbc\xb8\xc2"]
 ::msgcat::mcset ja {Low} [encoding convertfrom euc-jp "\xb2\xbc\xb8\xc2"]
 ::msgcat::mcset ja {MIP} 
-::msgcat::mcset ja {MPEG Quality Factor} [encoding convertfrom euc-jp "\x4d\x50\x45\x47\xa4\xce\xc9\xca\xbc\xc1"]
+::msgcat::mcset ja {MPEG} 
 ::msgcat::mcset ja {Magenta} [encoding convertfrom euc-jp "\xc5\xed\xbf\xa7"]
 ::msgcat::mcset ja {Magnification} 
 ::msgcat::mcset ja {Magnifier} [encoding convertfrom euc-jp "\xb3\xc8\xc2\xe7\xbf\xde"]
@@ -425,7 +424,6 @@
 ::msgcat::mcset ja {Math Function} [encoding convertfrom euc-jp "\xb4\xd8\xbf\xf4"]
 ::msgcat::mcset ja {Max Rows} [encoding convertfrom euc-jp "\xba\xc7\xc2\xe7\xb9\xd4\xbf\xf4"]
 ::msgcat::mcset ja {Max} [encoding convertfrom euc-jp "\xba\xc7\xc2\xe7"]
-::msgcat::mcset ja {Menu Font} [encoding convertfrom euc-jp "\xa5\xe1\xa5\xcb\xa5\xe5\xa1\xbc\xa4\xce\xa5\xd5\xa5\xa9\xa5\xf3\xa5\xc8"]
 ::msgcat::mcset ja {Menus and Buttons} 
 ::msgcat::mcset ja {Menu} [encoding convertfrom euc-jp "\xa5\xe1\xa5\xcb\xa5\xe5\xa1\xbc"]
 ::msgcat::mcset ja {Message Log} [encoding convertfrom euc-jp "\xa5\xe1\xa5\xc3\xa5\xbb\xa1\xbc\xa5\xb8\xa4\xce\xb5\xad\xcf\xbf"]
@@ -474,7 +472,6 @@
 ::msgcat::mcset ja {Normal} [encoding convertfrom euc-jp "\xc9\xb8\xbd\xe0"]
 ::msgcat::mcset ja {North} [encoding convertfrom euc-jp "\xcb\xcc"]
 ::msgcat::mcset ja {Not Found} 
-::msgcat::mcset ja {Not supported} 
 ::msgcat::mcset ja {No} [encoding convertfrom euc-jp "\xa4\xa4\xa4\xa4\xa4\xa8"]
 ::msgcat::mcset ja {Number of Samples} [encoding convertfrom euc-jp "\xa5\xb5\xa5\xf3\xa5\xd7\xa5\xeb\xa4\xce\xbf\xf4"]
 ::msgcat::mcset ja {Number of Threads} 
@@ -530,6 +527,8 @@
 ::msgcat::mcset ja {Play} [encoding convertfrom euc-jp "\xba\xc6\xc0\xb8"]
 ::msgcat::mcset ja {Please Select a Region} [encoding convertfrom euc-jp "\xce\xce\xb0\xe8\xa4\xf2\xbb\xd8\xc4\xea\xa4\xb7\xa4\xc6\xa4\xaf\xa4\xc0\xa4\xb5\xa4\xa4\xa1\xa3"]
 ::msgcat::mcset ja {Please specify width, height, and either name or (ra,dec)} [encoding convertfrom euc-jp "\xc9\xfd\xa1\xa2\xb9\xe2\xa4\xb5\xa1\xa2\xcc\xbe\xc1\xb0\xa4\xe2\xa4\xb7\xa4\xaf\xa4\xcf\x20\x28\x72\x61\x2c\x64\x65\x63\x29\x20\xa4\xf2\xbb\xd8\xc4\xea\xa4\xb7\xa4\xc6\xa4\xaf\xa4\xc0\xa4\xb5\xa4\xa4\xa1\xa3"]
+::msgcat::mcset ja {Plot 2D} 
+::msgcat::mcset ja {Plot 3D} 
 ::msgcat::mcset ja {Plot Title} [encoding convertfrom euc-jp "\xa5\xbf\xa5\xa4\xa5\xc8\xa5\xeb\xc9\xbd\xbc\xa8"]
 ::msgcat::mcset ja {Plot Tool} [encoding convertfrom euc-jp "\xa5\xd7\xa5\xed\xa5\xc3\xa5\xc8\xa5\xc4\xa1\xbc\xa5\xeb"]
 ::msgcat::mcset ja {Plotting Regions} [encoding convertfrom euc-jp "\xce\xce\xb0\xe8\xa4\xf2\xa5\xd7\xa5\xed\xa5\xc3\xa5\xc8\xa4\xb7\xa4\xc6\xa4\xa4\xa4\xde\xa4\xb9"]
@@ -603,11 +602,7 @@
 ::msgcat::mcset ja {Save Contrast/Bias} [encoding convertfrom euc-jp "\xa5\xb3\xa5\xf3\xa5\xc8\xa5\xe9\xa5\xb9\xa5\xc8\xa1\xa6\xa5\xd0\xa5\xa4\xa5\xa2\xa5\xb9\xa4\xf2\xca\xdd\xc2\xb8"]
 ::msgcat::mcset ja {Save Data} [encoding convertfrom euc-jp "\xa5\xc7\xa1\xbc\xa5\xbf\xa4\xf2\xca\xdd\xc2\xb8"]
 ::msgcat::mcset ja {Save FITS on download} [encoding convertfrom euc-jp "\xa5\xc0\xa5\xa6\xa5\xf3\xa5\xed\xa1\xbc\xa5\xc9\xa4\xb7\xa4\xbf\x46\x49\x54\x53\xa4\xf2\xca\xdd\xc2\xb8"]
-::msgcat::mcset ja {Save FITS} [encoding convertfrom euc-jp "\x46\x49\x54\x53\xa4\xf2\xca\xdd\xc2\xb8"]
-::msgcat::mcset ja {Save Frame as Fits} [encoding convertfrom euc-jp "\xa5\xd5\xa5\xec\xa1\xbc\xa5\xe0\xa4\xf2\x46\x49\x54\x53\xa4\xc8\xa4\xb7\xa4\xc6\xca\xdd\xc2\xb8"]
-::msgcat::mcset ja {Save Frames as MPEG} [encoding convertfrom euc-jp "\xa5\xd5\xa5\xec\xa1\xbc\xa5\xe0\xa4\xf2\x4d\x50\x45\x47\xa4\xc8\xa4\xb7\xa4\xc6\xca\xdd\xc2\xb8"]
 ::msgcat::mcset ja {Save Image} [encoding convertfrom euc-jp "\xa5\xa4\xa5\xe1\xa1\xbc\xa5\xb8\xa4\xf2\xca\xdd\xc2\xb8"]
-::msgcat::mcset ja {Save MPEG} [encoding convertfrom euc-jp "\x4d\x50\x45\x47\xa4\xf2\xca\xdd\xc2\xb8"]
 ::msgcat::mcset ja {Save Regions} [encoding convertfrom euc-jp "\xce\xce\xb0\xe8\xa4\xf2\xca\xdd\xc2\xb8"]
 ::msgcat::mcset ja {Save Template} [encoding convertfrom euc-jp "\xbf\xf7\xb7\xc1\xa4\xf2\xca\xdd\xc2\xb8"]
 ::msgcat::mcset ja {Save} [encoding convertfrom euc-jp "\xca\xdd\xc2\xb8"]
@@ -672,6 +667,7 @@
 ::msgcat::mcset ja {Table} 
 ::msgcat::mcset ja {Tabloid} [encoding convertfrom euc-jp "\xa5\xbf\xa5\xd6\xa5\xed\xa5\xa4\xa5\xc9"]
 ::msgcat::mcset ja {Template} [encoding convertfrom euc-jp "\xbf\xf7\xb7\xc1"]
+::msgcat::mcset ja {Text Font} 
 ::msgcat::mcset ja {Text} [encoding convertfrom euc-jp "\xca\xb8\xbb\xfa"]
 ::msgcat::mcset ja {Theme} 
 ::msgcat::mcset ja {Then} [encoding convertfrom euc-jp "\xa4\xca\xa4\xe9"]
@@ -737,11 +733,11 @@
 ::msgcat::mcset ja {Writing Catalog} [encoding convertfrom euc-jp "\xa5\xab\xa5\xbf\xa5\xed\xa5\xb0\xa4\xf2\xbd\xf1\xa4\xad\xbd\xd0\xa4\xb7\xc3\xe6"]
 ::msgcat::mcset ja {X Axis Label} [encoding convertfrom euc-jp "\x58\xbc\xb4\xa5\xe9\xa5\xd9\xa5\xeb"]
 ::msgcat::mcset ja {X Axis} [encoding convertfrom euc-jp "\x58\xbc\xb4"]
-::msgcat::mcset ja {X Point} [encoding convertfrom euc-jp "\xa3\xd8\xbb\xfa"]
 ::msgcat::mcset ja {XPA Information} [encoding convertfrom euc-jp "\x58\x50\x41\xa4\xce\xbe\xf0\xca\xf3"]
 ::msgcat::mcset ja {XPA not initialized} [encoding convertfrom euc-jp "\x58\x50\x41\x20\xa4\xac\xbd\xe9\xb4\xfc\xb2\xbd\xa4\xb5\xa4\xec\xa4\xc6\xa4\xa4\xa4\xde\xa4\xbb\xa4\xf3\xa1\xa3"]
 ::msgcat::mcset ja {XPA unable to verify hostname, setting XPA_METHOD to LOCAL} 
 ::msgcat::mcset ja {XPA} [encoding convertfrom euc-jp "\x58\x50\x41"]
+::msgcat::mcset ja {X} 
 ::msgcat::mcset ja {Y Axis Label} [encoding convertfrom euc-jp "\x59\xbc\xb4\xa5\xe9\xa5\xd9\xa5\xeb"]
 ::msgcat::mcset ja {Y Axis} [encoding convertfrom euc-jp "\x59\xbc\xb4"]
 ::msgcat::mcset ja {Yellow} [encoding convertfrom euc-jp "\xb2\xab\xbf\xa7"]
diff --git a/msgs/pt.msg b/msgs/pt.msg
index d27ed43..464c1f3 100644
--- a/msgs/pt.msg
+++ b/msgs/pt.msg
@@ -16,8 +16,8 @@
 ::msgcat::mcset pt {An error has occurred during backup} 
 ::msgcat::mcset pt {An error has occurred during restore} 
 ::msgcat::mcset pt {An error has occurred invoking the Analysis task}  [encoding convertfrom iso8859-1 {Um erro ocorreu ao chamar a tarefa de Análise}]
-::msgcat::mcset pt {An error has occurred while creating image} [encoding convertfrom iso8859-1 {Um erro ocorreu na criação da imagem}]
-::msgcat::mcset pt {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen}  [encoding convertfrom iso8859-1 {Um erro ocorreu ao criar a imagem. Por favor, certifique-se que a janela inteira está visível na tela.}]
+::msgcat::mcset pt {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.} 
+::msgcat::mcset pt {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.} 
 ::msgcat::mcset pt {An error has occurred while printing} {Um erro ocorreu ao imprimir}
 ::msgcat::mcset pt {An error has occurred while saving} {Um erro ocorreu ao salvar}
 ::msgcat::mcset pt {An internal error has been detected} 
@@ -36,7 +36,6 @@
 ::msgcat::mcset pt {ArcSec} 
 ::msgcat::mcset pt {Architecture} {Arquitetura}
 ::msgcat::mcset pt {Archives} {Arquivos}
-::msgcat::mcset pt {Arrow Point} {Ponto da Seta}
 ::msgcat::mcset pt {Arrow} {Seta}
 ::msgcat::mcset pt {Astronomy} 
 ::msgcat::mcset pt {At Startup} 
@@ -81,8 +80,7 @@
 ::msgcat::mcset pt {Border} {Borda}
 ::msgcat::mcset pt {Box Annulus} {Annulus da Caixa}
 ::msgcat::mcset pt {Box Panda} {Panda Caixa}
-::msgcat::mcset pt {Box Point} {Ponto da Caixa}
-::msgcat::mcset pt {BoxCircle Point} [encoding convertfrom iso8859-1 {Ponto do Círculo-Caixa}]
+::msgcat::mcset pt {BoxCircle} 
 ::msgcat::mcset pt {Boxcar} 
 ::msgcat::mcset pt {Box} {Caixa}
 ::msgcat::mcset pt {Broadcast} 
@@ -106,8 +104,6 @@
 ::msgcat::mcset pt {Center} {Centro}
 ::msgcat::mcset pt {Centroid Parameters} 
 ::msgcat::mcset pt {Centroid} 
-::msgcat::mcset pt {Circle Point} [encoding convertfrom iso8859-1 {Ponto do Círculo}]
-::msgcat::mcset pt {Circle3d} 
 ::msgcat::mcset pt {Circle} {Circulo}
 ::msgcat::mcset pt {Clear All} {Limpar tudo}
 ::msgcat::mcset pt {Clear Analysis Commands} [encoding convertfrom iso8859-1 {Limpar Comandos de Análise}]
@@ -143,6 +139,7 @@
 ::msgcat::mcset pt {Contours} {Contornos}
 ::msgcat::mcset pt {Contour} 
 ::msgcat::mcset pt {Contrast} {Contraste}
+::msgcat::mcset pt {Contributed} 
 ::msgcat::mcset pt {Convert to Polygons} [encoding convertfrom iso8859-1 {Converter para polígonos}]
 ::msgcat::mcset pt {Coordinate Grid Parameters} [encoding convertfrom iso8859-1 {Parâmetros do Grid de Coordenadas}]
 ::msgcat::mcset pt {Coordinate Grid} {Grid de Coordenadas}
@@ -152,11 +149,11 @@
 ::msgcat::mcset pt {Copy Contours} {Copiar Contornos}
 ::msgcat::mcset pt {Copy to Regions} [encoding convertfrom iso8859-1 {Copiar para Regiões}]
 ::msgcat::mcset pt {Copy} {Copiar}
+::msgcat::mcset pt {Create Movie} 
 ::msgcat::mcset pt {Create New Frame on Download} {Criar novo Frame ao carregar}
 ::msgcat::mcset pt {Create} 
 ::msgcat::mcset pt {Crop Parameters} 
 ::msgcat::mcset pt {Crop} 
-::msgcat::mcset pt {Cross Point} {Ponto Transversal}
 ::msgcat::mcset pt {Crosshair To} {Cruz para}
 ::msgcat::mcset pt {Crosshair} {Cruz}
 ::msgcat::mcset pt {Cross} {Cruz}
@@ -196,7 +193,6 @@
 ::msgcat::mcset pt {Depth} {Profundidade}
 ::msgcat::mcset pt {Detector} 
 ::msgcat::mcset pt {Dialog Box} {Box de dialog}
-::msgcat::mcset pt {Diamond Point} {Ponto Diamante}
 ::msgcat::mcset pt {Diamond} {Diamante}
 ::msgcat::mcset pt {Dimension} [encoding convertfrom iso8859-1 {Dimensão}]
 ::msgcat::mcset pt {Disconnect} 
@@ -238,6 +234,7 @@
 ::msgcat::mcset pt {Exclude} {Excluir}
 ::msgcat::mcset pt {Executing TCL code is not enabled} 
 ::msgcat::mcset pt {Exit} {Sair}
+::msgcat::mcset pt {Export Image} 
 ::msgcat::mcset pt {Extention} 
 ::msgcat::mcset pt {Exterior Axes} {Eixos exteriores}
 ::msgcat::mcset pt {Exterior Numerics} [encoding convertfrom iso8859-1 {Numeração exterior}]
@@ -265,6 +262,7 @@
 ::msgcat::mcset pt {Front} {Frente}
 ::msgcat::mcset pt {Full Range} {Intervalo completo}
 ::msgcat::mcset pt {Function} [encoding convertfrom iso8859-1 {Função}]
+::msgcat::mcset pt {GUI Font} 
 ::msgcat::mcset pt {Galactic} [encoding convertfrom iso8859-1 {Galáctico}]
 ::msgcat::mcset pt {Gap} 
 ::msgcat::mcset pt {Gaussian} {Gaussiano}
@@ -318,6 +316,7 @@
 ::msgcat::mcset pt {Interior Numerics} [encoding convertfrom iso8859-1 {Numeração Interior}]
 ::msgcat::mcset pt {Internal Parse Error} 
 ::msgcat::mcset pt {Interval} {Intervalo}
+::msgcat::mcset pt {Invalid Column Name} 
 ::msgcat::mcset pt {Invalid formated multipart/mixed mime type message} [encoding convertfrom iso8859-1 {Mensagem tipo MIME multiparte/mista em formato inválido}]
 ::msgcat::mcset pt {Invert Colormap} {Inverter mapa de cores}
 ::msgcat::mcset pt {Invert Selection} [encoding convertfrom iso8859-1 {Inverter Seleção}]
@@ -395,7 +394,7 @@
 ::msgcat::mcset pt {Low High} {Baixo Alto}
 ::msgcat::mcset pt {Low} {Baixo}
 ::msgcat::mcset pt {MIP} 
-::msgcat::mcset pt {MPEG Quality Factor} {Fator de Qualidade MPEG}
+::msgcat::mcset pt {MPEG} 
 ::msgcat::mcset pt {Magenta} {Magenta}
 ::msgcat::mcset pt {Magnification} 
 ::msgcat::mcset pt {Magnifier} {Lente}
@@ -425,7 +424,6 @@
 ::msgcat::mcset pt {Math Function} [encoding convertfrom iso8859-1 {Função Matemática}]
 ::msgcat::mcset pt {Max Rows} [encoding convertfrom iso8859-1 {Máximas linhas}]
 ::msgcat::mcset pt {Max} [encoding convertfrom iso8859-1 {Máximo}]
-::msgcat::mcset pt {Menu Font} 
 ::msgcat::mcset pt {Menus and Buttons} 
 ::msgcat::mcset pt {Menu} 
 ::msgcat::mcset pt {Message Log} 
@@ -474,7 +472,6 @@
 ::msgcat::mcset pt {Normal} 
 ::msgcat::mcset pt {North} {Norte}
 ::msgcat::mcset pt {Not Found} 
-::msgcat::mcset pt {Not supported} 
 ::msgcat::mcset pt {No} {Não}
 ::msgcat::mcset pt {Number of Samples} 
 ::msgcat::mcset pt {Number of Threads} 
@@ -530,6 +527,8 @@
 ::msgcat::mcset pt {Play} {Execute}
 ::msgcat::mcset pt {Please Select a Region} 
 ::msgcat::mcset pt {Please specify width, height, and either name or (ra,dec)} 
+::msgcat::mcset pt {Plot 2D} 
+::msgcat::mcset pt {Plot 3D} 
 ::msgcat::mcset pt {Plot Title} [encoding convertfrom iso8859-1 {Título}]
 ::msgcat::mcset pt {Plot Tool} {Ferramenta para Graficos}
 ::msgcat::mcset pt {Plotting Regions} 
@@ -603,11 +602,7 @@
 ::msgcat::mcset pt {Save Contrast/Bias} {Salvar Contraste/Bias}
 ::msgcat::mcset pt {Save Data} {Salvar Dados}
 ::msgcat::mcset pt {Save FITS on download} {Salvar FITS ao carregar}
-::msgcat::mcset pt {Save FITS} 
-::msgcat::mcset pt {Save Frame as Fits} {Salvar Frame como Fits}
-::msgcat::mcset pt {Save Frames as MPEG} {Salvar Frames como MPEG}
 ::msgcat::mcset pt {Save Image} {Salvar Imagem}
-::msgcat::mcset pt {Save MPEG} 
 ::msgcat::mcset pt {Save Regions} [encoding convertfrom iso8859-1 {Salvar Regiões}]
 ::msgcat::mcset pt {Save Template} 
 ::msgcat::mcset pt {Save} {Salvar}
@@ -672,6 +667,7 @@
 ::msgcat::mcset pt {Table} 
 ::msgcat::mcset pt {Tabloid} [encoding convertfrom iso8859-1 {Tablóide}]
 ::msgcat::mcset pt {Template} 
+::msgcat::mcset pt {Text Font} 
 ::msgcat::mcset pt {Text} {Texto}
 ::msgcat::mcset pt {Theme} 
 ::msgcat::mcset pt {Then} [encoding convertfrom iso8859-1 {Então}]
@@ -737,11 +733,11 @@
 ::msgcat::mcset pt {Writing Catalog} 
 ::msgcat::mcset pt {X Axis Label} {Legenda do Eixo X}
 ::msgcat::mcset pt {X Axis} {Eixo X}
-::msgcat::mcset pt {X Point} {Ponto X}
 ::msgcat::mcset pt {XPA Information} [encoding convertfrom iso8859-1 {Informação sobre o XPA}]
 ::msgcat::mcset pt {XPA not initialized} [encoding convertfrom iso8859-1 {XPA não inicializado}]
 ::msgcat::mcset pt {XPA unable to verify hostname, setting XPA_METHOD to LOCAL} 
 ::msgcat::mcset pt {XPA} 
+::msgcat::mcset pt {X} 
 ::msgcat::mcset pt {Y Axis Label} {Leganda do Eixo Y}
 ::msgcat::mcset pt {Y Axis} {Eixo Y}
 ::msgcat::mcset pt {Yellow} {Amarelo}
diff --git a/msgs/zh.msg b/msgs/zh.msg
index 175c22d..8212bea 100644
--- a/msgs/zh.msg
+++ b/msgs/zh.msg
@@ -16,8 +16,8 @@
 ::msgcat::mcset zh {An error has occurred during backup} 
 ::msgcat::mcset zh {An error has occurred during restore} 
 ::msgcat::mcset zh {An error has occurred invoking the Analysis task} 
-::msgcat::mcset zh {An error has occurred while creating image} 
-::msgcat::mcset zh {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen} 
+::msgcat::mcset zh {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.} 
+::msgcat::mcset zh {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.} 
 ::msgcat::mcset zh {An error has occurred while printing} 
 ::msgcat::mcset zh {An error has occurred while saving} 
 ::msgcat::mcset zh {An internal error has been detected} 
@@ -36,7 +36,6 @@
 ::msgcat::mcset zh {ArcSec} 
 ::msgcat::mcset zh {Architecture} 
 ::msgcat::mcset zh {Archives} 
-::msgcat::mcset zh {Arrow Point} 
 ::msgcat::mcset zh {Arrow} 
 ::msgcat::mcset zh {Astronomy} 
 ::msgcat::mcset zh {At Startup} 
@@ -81,8 +80,7 @@
 ::msgcat::mcset zh {Border} 
 ::msgcat::mcset zh {Box Annulus} 
 ::msgcat::mcset zh {Box Panda} 
-::msgcat::mcset zh {Box Point} 
-::msgcat::mcset zh {BoxCircle Point} 
+::msgcat::mcset zh {BoxCircle} 
 ::msgcat::mcset zh {Boxcar} 
 ::msgcat::mcset zh {Box} 
 ::msgcat::mcset zh {Broadcast} 
@@ -106,8 +104,6 @@
 ::msgcat::mcset zh {Center} 
 ::msgcat::mcset zh {Centroid Parameters} 
 ::msgcat::mcset zh {Centroid} 
-::msgcat::mcset zh {Circle Point} 
-::msgcat::mcset zh {Circle3d} 
 ::msgcat::mcset zh {Circle} 
 ::msgcat::mcset zh {Clear All} 
 ::msgcat::mcset zh {Clear Analysis Commands} 
@@ -143,6 +139,7 @@
 ::msgcat::mcset zh {Contours} 
 ::msgcat::mcset zh {Contour} 
 ::msgcat::mcset zh {Contrast} 
+::msgcat::mcset zh {Contributed} 
 ::msgcat::mcset zh {Convert to Polygons} 
 ::msgcat::mcset zh {Coordinate Grid Parameters} 
 ::msgcat::mcset zh {Coordinate Grid} 
@@ -152,11 +149,11 @@
 ::msgcat::mcset zh {Copy Contours} 
 ::msgcat::mcset zh {Copy to Regions} 
 ::msgcat::mcset zh {Copy} 
+::msgcat::mcset zh {Create Movie} 
 ::msgcat::mcset zh {Create New Frame on Download} 
 ::msgcat::mcset zh {Create} 
 ::msgcat::mcset zh {Crop Parameters} 
 ::msgcat::mcset zh {Crop} 
-::msgcat::mcset zh {Cross Point} 
 ::msgcat::mcset zh {Crosshair To} 
 ::msgcat::mcset zh {Crosshair} 
 ::msgcat::mcset zh {Cross} 
@@ -196,7 +193,6 @@
 ::msgcat::mcset zh {Depth} 
 ::msgcat::mcset zh {Detector} 
 ::msgcat::mcset zh {Dialog Box} 
-::msgcat::mcset zh {Diamond Point} 
 ::msgcat::mcset zh {Diamond} 
 ::msgcat::mcset zh {Dimension} 
 ::msgcat::mcset zh {Disconnect} 
@@ -238,6 +234,7 @@
 ::msgcat::mcset zh {Exclude} 
 ::msgcat::mcset zh {Executing TCL code is not enabled} 
 ::msgcat::mcset zh {Exit} 
+::msgcat::mcset zh {Export Image} 
 ::msgcat::mcset zh {Extention} 
 ::msgcat::mcset zh {Exterior Axes} 
 ::msgcat::mcset zh {Exterior Numerics} 
@@ -265,6 +262,7 @@
 ::msgcat::mcset zh {Front} 
 ::msgcat::mcset zh {Full Range} 
 ::msgcat::mcset zh {Function} 
+::msgcat::mcset zh {GUI Font} 
 ::msgcat::mcset zh {Galactic} 
 ::msgcat::mcset zh {Gap} 
 ::msgcat::mcset zh {Gaussian} 
@@ -318,6 +316,7 @@
 ::msgcat::mcset zh {Interior Numerics} 
 ::msgcat::mcset zh {Internal Parse Error} 
 ::msgcat::mcset zh {Interval} 
+::msgcat::mcset zh {Invalid Column Name} 
 ::msgcat::mcset zh {Invalid formated multipart/mixed mime type message} 
 ::msgcat::mcset zh {Invert Colormap} 
 ::msgcat::mcset zh {Invert Selection} 
@@ -395,7 +394,7 @@
 ::msgcat::mcset zh {Low High} 
 ::msgcat::mcset zh {Low} 
 ::msgcat::mcset zh {MIP} 
-::msgcat::mcset zh {MPEG Quality Factor} 
+::msgcat::mcset zh {MPEG} 
 ::msgcat::mcset zh {Magenta} 
 ::msgcat::mcset zh {Magnification} 
 ::msgcat::mcset zh {Magnifier} 
@@ -425,7 +424,6 @@
 ::msgcat::mcset zh {Math Function} 
 ::msgcat::mcset zh {Max Rows} 
 ::msgcat::mcset zh {Max} 
-::msgcat::mcset zh {Menu Font} 
 ::msgcat::mcset zh {Menus and Buttons} 
 ::msgcat::mcset zh {Menu} 
 ::msgcat::mcset zh {Message Log} 
@@ -474,7 +472,6 @@
 ::msgcat::mcset zh {Normal} 
 ::msgcat::mcset zh {North} 
 ::msgcat::mcset zh {Not Found} 
-::msgcat::mcset zh {Not supported} 
 ::msgcat::mcset zh {No} 
 ::msgcat::mcset zh {Number of Samples} 
 ::msgcat::mcset zh {Number of Threads} 
@@ -530,6 +527,8 @@
 ::msgcat::mcset zh {Play} 
 ::msgcat::mcset zh {Please Select a Region} 
 ::msgcat::mcset zh {Please specify width, height, and either name or (ra,dec)} 
+::msgcat::mcset zh {Plot 2D} 
+::msgcat::mcset zh {Plot 3D} 
 ::msgcat::mcset zh {Plot Title} 
 ::msgcat::mcset zh {Plot Tool} 
 ::msgcat::mcset zh {Plotting Regions} 
@@ -603,11 +602,7 @@
 ::msgcat::mcset zh {Save Contrast/Bias} 
 ::msgcat::mcset zh {Save Data} 
 ::msgcat::mcset zh {Save FITS on download} 
-::msgcat::mcset zh {Save FITS} 
-::msgcat::mcset zh {Save Frame as Fits} 
-::msgcat::mcset zh {Save Frames as MPEG} 
 ::msgcat::mcset zh {Save Image} 
-::msgcat::mcset zh {Save MPEG} 
 ::msgcat::mcset zh {Save Regions} 
 ::msgcat::mcset zh {Save Template} 
 ::msgcat::mcset zh {Save} 
@@ -672,6 +667,7 @@
 ::msgcat::mcset zh {Table} 
 ::msgcat::mcset zh {Tabloid} 
 ::msgcat::mcset zh {Template} 
+::msgcat::mcset zh {Text Font} 
 ::msgcat::mcset zh {Text} 
 ::msgcat::mcset zh {Theme} 
 ::msgcat::mcset zh {Then} 
@@ -737,11 +733,11 @@
 ::msgcat::mcset zh {Writing Catalog} 
 ::msgcat::mcset zh {X Axis Label} 
 ::msgcat::mcset zh {X Axis} 
-::msgcat::mcset zh {X Point} 
 ::msgcat::mcset zh {XPA Information} 
 ::msgcat::mcset zh {XPA not initialized} 
 ::msgcat::mcset zh {XPA unable to verify hostname, setting XPA_METHOD to LOCAL} 
 ::msgcat::mcset zh {XPA} 
+::msgcat::mcset zh {X} 
 ::msgcat::mcset zh {Y Axis Label} 
 ::msgcat::mcset zh {Y Axis} 
 ::msgcat::mcset zh {Yellow} 
diff --git a/notes.txt b/notes.txt
index 0fdaf72..41ea51f 100644
--- a/notes.txt
+++ b/notes.txt
@@ -42,27 +42,29 @@ Build:
 HTML Comment: <!-- something -->
 	
 Future:
-	VO Image Arcive
+	VO Image Archive
+	VO/Chandra Footprint server
+	FOV (http://aladin.u-strasbg.fr/java/FOVs.xml)
+
 	Illustrate mode
-	Reorder axes
 	Remote Observing
 	Windows64
 	Colorizer
-	TIFF/JPEG/PNG frame support (LoadImage)
-	Save TIFF/JPEG/PNG at high resolution
 	New Postscript print model
 	Non-Model File Browser
 	FITS structure viewer
-	FOV (http://aladin.u-strasbg.fr/java/FOVs.xml)
 	Quick Look Tools (Imexamine)
 	2D surface plot
 	Topcat like plot
-	CHANDRA foot-print server
+
 List
 	-7.0beta
-	  wcs dialog
-	    slice>2
-	    naxis>2
+	  catalog matching
+
+	  command line for # threads
+	    -auto?
+	  prefs for AUTOSCAN value
+	  tracy view grids problem
 
 	  scale dialog (local/global)
 	    cube
@@ -88,31 +90,20 @@ List
 	      number of grid lines
 
 	  3d regions
-	    ellipse
-	    box
-	    polygon
-	    point
 	    line
 
 	  plot
 	    format wcs3
-	    save data in wcs3
 	    ps crops x axis numerics
 
 	  move zmin/zmax params to context level
 	  keyContext vs context vs currentContext
 	  mosaics
-	  faster render
-	    calculate zmin/zmax for each screen pixel
 	  macros $url() | $image(3d)
 	  fix mpeg
 	  epanda issue (ds9.mosaic.fk4.reg)
-	  saveas tests (xpa.sh)
-	  allan's issue
-	  santiago's wcs issue
 	  check saveas fits (LTMV?)
 	  warp cursor weirdness (framebase)
-	  3D-pdf
 	  perspective
 	  Magnifier-  bitbit off by .5?
 	  bin- test reblock
@@ -141,39 +132,26 @@ List
 	    use threads
 
 	  markers
-	    new regions
 	    arrows
 	    composite
 	      handles
 	      cb error
 	      refresh
 
-	  saveas image
-	    use gs for linux/darwin
-	    2d
-	      cube all/current?
-	      crop
-	    3d
-	      cube all/current?
-	      crop
-	    savefitsCmd3d()
-
-	  save frame fits
-	    2d cube current/all?
-	      crop
-	    3d cube
-	      crop
-
-	  saveas mpeg
-	    2d slice movie
-	    3d rotation movie
-
 	  windows
 	    astAnnul too slow (for large data cubes)
 	    refresh rate issue
 
 	-other
-	  consolidate point regions into one
+	  -regions
+	    cleanup- CB procs tcl
+	        rm var(proc,distCB), var(proc,editCB)
+	        line/projection/ruler
+		annulus/ellipse annulus/box annulus
+		panda/bpanda/epanda
+		vector
+		projection
+
 	  xpa-talk
 	  drop frametruecolor
 	    colormap begin/motion/end? (lock colorbar)
@@ -214,6 +192,8 @@ List
 	  HPX
 
 	- 7.1
+	  savefits- crop
+
 	  SIGBUS- look for EXC_BAD_ACCESS also
 
 	  check/update blt
@@ -507,6 +487,15 @@ List
 	solar SOLX/SOLY,HPLN/HPLT,HGLN/HGLT,HRLN/HRLT
 	wcs editor-  astrometry.net
 
+	header	     define		AST (TPN=SCAMP)
+	-----	     ------		---
+	TAN+PV	     old SCAMP		TPN+PV
+		     noscamp		TAN+PV?
+	TNX+Wat	     IRAF		TPN+PV
+	TPV	     new SCAMP		TPN+PV?
+	TAN+QV	     autoastrom		TAN+PV?
+	TAN+SIP	     SIP		PolyMap
+
 	Problem FITS WCS Files
 	  wcssubs ast wcslib
 	  ------- --- ------
diff --git a/saotk/colorbar/colorbar.C b/saotk/colorbar/colorbar.C
index dab8072..909e8ee 100644
--- a/saotk/colorbar/colorbar.C
+++ b/saotk/colorbar/colorbar.C
@@ -179,6 +179,23 @@ void Colorbar::loadCmd(const char* fn, const char* type)
   }
 }
 
+void Colorbar::loadCmd(const char* fn, const char* type, const char* var)
+{
+  ColorMapInfo* map = newColorMap(fn, type);
+
+  if (map && map->load(var)) {
+    // add new colormap to end of the list
+    cmaps.append(map);
+    reset();
+  }
+  else {
+    // something has gone wrong, clean up, and bail out
+    delete map;
+    Tcl_AppendResult(interp, " unable to load colormap: ", fn, NULL);
+    result = TCL_ERROR;
+  }
+}
+
 void Colorbar::mapCmd(char* which)
 {
   char* a = toLower(which);
@@ -291,24 +308,24 @@ void Colorbar::reset()
 
 void Colorbar::loadDefaultCMaps()
 {
-  cmaps.append(new GreyColorMap());
-  cmaps.append(new RedColorMap());
-  cmaps.append(new GreenColorMap());
-  cmaps.append(new BlueColorMap());
-  cmaps.append(new AColorMap());
-  cmaps.append(new BColorMap());
-  cmaps.append(new BBColorMap());
-  cmaps.append(new HEColorMap());
-  cmaps.append(new I8ColorMap());
-  cmaps.append(new AIPSColorMap());
-  cmaps.append(new SLSColorMap());
-  cmaps.append(new HSVColorMap());
-  cmaps.append(new HeatColorMap());
-  cmaps.append(new CoolColorMap());
-  cmaps.append(new RainbowColorMap());
-  cmaps.append(new StandardColorMap());
-  cmaps.append(new StaircaseColorMap());
-  cmaps.append(new ColorColorMap());
+  cmaps.append(new GreyColorMap(this));
+  cmaps.append(new RedColorMap(this));
+  cmaps.append(new GreenColorMap(this));
+  cmaps.append(new BlueColorMap(this));
+  cmaps.append(new AColorMap(this));
+  cmaps.append(new BColorMap(this));
+  cmaps.append(new BBColorMap(this));
+  cmaps.append(new HEColorMap(this));
+  cmaps.append(new I8ColorMap(this));
+  cmaps.append(new AIPSColorMap(this));
+  cmaps.append(new SLSColorMap(this));
+  cmaps.append(new HSVColorMap(this));
+  cmaps.append(new HeatColorMap(this));
+  cmaps.append(new CoolColorMap(this));
+  cmaps.append(new RainbowColorMap(this));
+  cmaps.append(new StandardColorMap(this));
+  cmaps.append(new StaircaseColorMap(this));
+  cmaps.append(new ColorColorMap(this));
 
   cmaps.head();
 }
@@ -335,9 +352,9 @@ ColorMapInfo* Colorbar::newColorMap(const char* fn, const char* type)
     ptr = (char*)type;
 
   if (strncmp(ptr, "lut", 3) == 0)
-    map = new LUTColorMap();
+    map = new LUTColorMap(this);
   else
-    map = new SAOColorMap();
+    map = new SAOColorMap(this);
 
   // Bail out if we don't have a new ColorMap
   if (!map)
diff --git a/saotk/colorbar/colorbar.h b/saotk/colorbar/colorbar.h
index 4e5cf7f..53fb5b3 100644
--- a/saotk/colorbar/colorbar.h
+++ b/saotk/colorbar/colorbar.h
@@ -60,6 +60,7 @@ class Colorbar : public virtual ColorbarBase {
   void listIDCmd();
   void listNameCmd();
   void loadCmd(const char*, const char*);
+  void loadCmd(const char*, const char*, const char*);
   void mapCmd(char*);
   void mapCmd(int);
   void saveCmd(const char*);
diff --git a/saotk/colorbar/colorbarbase.h b/saotk/colorbar/colorbarbase.h
index 15dce67..3cbca6d 100644
--- a/saotk/colorbar/colorbarbase.h
+++ b/saotk/colorbar/colorbarbase.h
@@ -155,6 +155,7 @@ class ColorbarBase : public Widget {
   virtual void listIDCmd() {}
   virtual void listNameCmd() {}
   virtual void loadCmd(const char*, const char*) {}
+  virtual void loadCmd(const char*, const char*, const char*) {}
 
   virtual void mapCmd(char*) {}
   virtual void mapCmd(int) {}
diff --git a/saotk/colorbar/colormap.C b/saotk/colorbar/colormap.C
index ab8f0db..b697ae8 100644
--- a/saotk/colorbar/colormap.C
+++ b/saotk/colorbar/colormap.C
@@ -9,7 +9,7 @@ static int squenceID = 1;
 
 // ColorMapInfo
 
-ColorMapInfo::ColorMapInfo()
+ColorMapInfo::ColorMapInfo(Colorbar* p) : parent_(p)
 {
   id = squenceID++;
   name =NULL;
diff --git a/saotk/colorbar/colormap.h b/saotk/colorbar/colormap.h
index 01441f0..2898831 100644
--- a/saotk/colorbar/colormap.h
+++ b/saotk/colorbar/colormap.h
@@ -15,10 +15,14 @@
 #include <iomanip>
 using namespace std;
 
+class Colorbar;
+
 // ColorMapInfo
 
 class ColorMapInfo {
 protected:
+  Colorbar* parent_;
+
   int id;
   char* name;
   char* fileName;
@@ -26,9 +30,11 @@ protected:
   ColorMapInfo* previous_;
 
 public:
-  ColorMapInfo();
+  ColorMapInfo(Colorbar* p);
   virtual ~ColorMapInfo();
 
+  Colorbar* parent() {return parent_;}
+
   const char* getName() {return name;}
   int getID() {return id;}
   void setName(const char*);
@@ -46,6 +52,7 @@ public:
 
   virtual ColorMapInfo* dup() =0;
   virtual int load() =0;
+  virtual int load(const char*) =0;
   virtual void save(const char*) =0;
 
   virtual unsigned char getRedChar(int, int) =0;
diff --git a/saotk/colorbar/default.C b/saotk/colorbar/default.C
index 826aac8..141b86e 100644
--- a/saotk/colorbar/default.C
+++ b/saotk/colorbar/default.C
@@ -7,7 +7,7 @@
 #include "default.h"
 #include "util.h"
 
-GreyColorMap::GreyColorMap()
+GreyColorMap::GreyColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("grey");
   fileName = dupstr("grey.sao");
@@ -22,7 +22,7 @@ GreyColorMap::GreyColorMap()
   blue.append(new LIColor(1,1));
 }
 
-RedColorMap::RedColorMap()
+RedColorMap::RedColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("red");
   fileName = dupstr("red.sao");
@@ -37,7 +37,7 @@ RedColorMap::RedColorMap()
   blue.append(new LIColor(0,0));
 }
 
-GreenColorMap::GreenColorMap()
+GreenColorMap::GreenColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("green");
   fileName = dupstr("green.sao");
@@ -52,7 +52,7 @@ GreenColorMap::GreenColorMap()
   blue.append(new LIColor(0,0));
 }
 
-BlueColorMap::BlueColorMap()
+BlueColorMap::BlueColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("blue");
   fileName = dupstr("blue.sao");
@@ -67,7 +67,7 @@ BlueColorMap::BlueColorMap()
   blue.append(new LIColor(1,1));
 }
 
-AColorMap::AColorMap()
+AColorMap::AColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("a");
   fileName = dupstr("a.sao");
@@ -91,7 +91,7 @@ AColorMap::AColorMap()
   blue.append(new LIColor(1,0));
 }
 
-BColorMap::BColorMap()
+BColorMap::BColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("b");
   fileName = dupstr("b.sao");
@@ -113,7 +113,7 @@ BColorMap::BColorMap()
   blue.append(new LIColor(1,1));
 }
 
-BBColorMap::BBColorMap()
+BBColorMap::BBColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("bb");
   fileName = dupstr("bb.sao");
@@ -132,7 +132,7 @@ BBColorMap::BBColorMap()
   blue.append(new LIColor(1,1));
 }
 
-HEColorMap::HEColorMap()
+HEColorMap::HEColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("he");
   fileName = dupstr("he.sao");
@@ -158,7 +158,7 @@ HEColorMap::HEColorMap()
   blue.append(new LIColor(1,1));
 }
 
-I8ColorMap::I8ColorMap()
+I8ColorMap::I8ColorMap(Colorbar* p) : LUTColorMap(p)
 {
   name = dupstr("i8");
   fileName = dupstr("i8.lut");
@@ -173,7 +173,7 @@ I8ColorMap::I8ColorMap()
   colors.append(new RGBColor(1,1,1));
 }
 
-AIPSColorMap::AIPSColorMap()
+AIPSColorMap::AIPSColorMap(Colorbar* p) : LUTColorMap(p)
 {
   name = dupstr("aips0");
   fileName = dupstr("aips0.lut");
@@ -189,7 +189,7 @@ AIPSColorMap::AIPSColorMap()
   colors.append(new RGBColor(1.00,.000,.000));
 }
 
-HeatColorMap::HeatColorMap()
+HeatColorMap::HeatColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("heat");
   fileName = dupstr("heat.sao");
@@ -207,7 +207,7 @@ HeatColorMap::HeatColorMap()
   blue.append(new LIColor(1,1));
 }
 
-CoolColorMap::CoolColorMap()
+CoolColorMap::CoolColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("cool");
   fileName = dupstr("cool.sao");
@@ -227,7 +227,7 @@ CoolColorMap::CoolColorMap()
   blue.append(new LIColor(1,1));
 }
 
-RainbowColorMap::RainbowColorMap()
+RainbowColorMap::RainbowColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("rainbow");
   fileName = dupstr("rainbow.sao");
@@ -250,7 +250,7 @@ RainbowColorMap::RainbowColorMap()
   blue.append(new LIColor(1,0));
 }
 
-StandardColorMap::StandardColorMap()
+StandardColorMap::StandardColorMap(Colorbar* p) : SAOColorMap(p)
 {
   name = dupstr("standard");
   fileName = dupstr("standard.sao");
@@ -277,7 +277,7 @@ StandardColorMap::StandardColorMap()
   blue.append(new LIColor(1,.3));
 }
 
-StaircaseColorMap::StaircaseColorMap()
+StaircaseColorMap::StaircaseColorMap(Colorbar* p) : LUTColorMap(p)
 {
   name = dupstr("staircase");
   fileName = dupstr("staircase.lut");
@@ -298,7 +298,7 @@ StaircaseColorMap::StaircaseColorMap()
   }
 }
 
-ColorColorMap::ColorColorMap()
+ColorColorMap::ColorColorMap(Colorbar* p) : LUTColorMap(p)
 {
   name = dupstr("color");
   fileName = dupstr("color.lut");
@@ -321,7 +321,7 @@ ColorColorMap::ColorColorMap()
   colors.append(new RGBColor(0.74902, 0.00000, 0.30980));
 }
 
-SLSColorMap::SLSColorMap()
+SLSColorMap::SLSColorMap(Colorbar* p) : LUTColorMap(p)
 {
   name = dupstr("sls");
   fileName = dupstr("sls.lut");
@@ -528,7 +528,7 @@ SLSColorMap::SLSColorMap()
   colors.append(new RGBColor(1.000000, 1.000000, 1.000000));
 }
 
-HSVColorMap::HSVColorMap()
+HSVColorMap::HSVColorMap(Colorbar* p) : LUTColorMap(p)
 {
   /* HSV: hue varies uniformly from 270 to 360 and back to 270.
    * Value varies from zero to one using a cube root relation
diff --git a/saotk/colorbar/default.h b/saotk/colorbar/default.h
index 36e2ca9..6a2ae48 100644
--- a/saotk/colorbar/default.h
+++ b/saotk/colorbar/default.h
@@ -8,94 +8,96 @@
 #include "sao.h"
 #include "lut.h"
 
+class Colorbar;
+
 class GreyColorMap : public SAOColorMap {
 public:
-  GreyColorMap();
+  GreyColorMap(Colorbar*);
 };
 
 class RedColorMap : public SAOColorMap {
 public:
-  RedColorMap();
+  RedColorMap(Colorbar*);
 };
 
 class GreenColorMap : public SAOColorMap {
 public:
-  GreenColorMap();
+  GreenColorMap(Colorbar*);
 };
 
 class BlueColorMap : public SAOColorMap {
 public:
-  BlueColorMap();
+  BlueColorMap(Colorbar*);
 };
 
 class AColorMap : public SAOColorMap {
 public:
-  AColorMap();
+  AColorMap(Colorbar*);
 };
 
 class BColorMap : public SAOColorMap {
 public:
-  BColorMap();
+  BColorMap(Colorbar*);
 };
 
 class BBColorMap : public SAOColorMap {
 public:
-  BBColorMap();
+  BBColorMap(Colorbar*);
 };
 
 class HEColorMap : public SAOColorMap {
 public:
-  HEColorMap();
+  HEColorMap(Colorbar*);
 };
 
 class I8ColorMap : public LUTColorMap {
 public:
-  I8ColorMap();
+  I8ColorMap(Colorbar*);
 };
 
 class AIPSColorMap : public LUTColorMap {
 public:
-  AIPSColorMap();
+  AIPSColorMap(Colorbar*);
 };
 
 class HeatColorMap : public SAOColorMap {
 public:
-  HeatColorMap();
+  HeatColorMap(Colorbar*);
 };
 
 class CoolColorMap : public SAOColorMap {
 public:
-  CoolColorMap();
+  CoolColorMap(Colorbar*);
 };
 
 class RainbowColorMap : public SAOColorMap {
 public:
-  RainbowColorMap();
+  RainbowColorMap(Colorbar*);
 };
 
 class StandardColorMap : public SAOColorMap {
 public:
-  StandardColorMap();
+  StandardColorMap(Colorbar*);
 };
 
 class StaircaseColorMap : public LUTColorMap {
 public:
-  StaircaseColorMap();
+  StaircaseColorMap(Colorbar*);
 };
 
 class ColorColorMap : public LUTColorMap {
 public:
-  ColorColorMap();
+  ColorColorMap(Colorbar*);
 };
 
 class SLSColorMap : public LUTColorMap {
 public:
-  SLSColorMap();
+  SLSColorMap(Colorbar*);
 };
 
 class HSVColorMap : public LUTColorMap {
 public:
-  HSVColorMap();
+  HSVColorMap(Colorbar*);
 };
 
 #endif
diff --git a/saotk/colorbar/lex.C b/saotk/colorbar/lex.C
index ed7cd09..c29d7a5 100644
--- a/saotk/colorbar/lex.C
+++ b/saotk/colorbar/lex.C
@@ -323,8 +323,8 @@ int yyFlexLexer::yywrap() { return 1; }
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 55
-#define YY_END_OF_BUFFER 56
+#define YY_NUM_RULES 56
+#define YY_END_OF_BUFFER 57
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -332,32 +332,32 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[212] =
+static yyconst flex_int16_t yy_accept[213] =
     {   0,
-        0,    0,   56,   54,   53,   55,   54,   54,   54,   54,
-       54,   45,   45,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   25,   54,   54,   54,   54,   54,   54,
-       54,   43,   54,   53,   52,    0,   52,   49,    0,   52,
-       50,   52,   45,   47,   46,   52,   52,   52,   52,    3,
-       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       17,   52,   52,   52,   52,   52,   52,   52,   27,   52,
-       29,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,    0,   52,   51,   49,   50,   52,   52,   46,
-       48,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-
-       11,   52,   52,   52,   52,   19,   52,   52,   52,   52,
-       24,   52,   28,   52,   52,   52,   34,   52,   52,   52,
-       52,   52,   52,   52,   44,   51,   52,   47,   52,    2,
-       52,    5,   52,   52,   52,   52,   14,   12,   52,   16,
-       52,   52,   21,   22,   52,   26,   52,   52,   52,   52,
-       35,   36,   37,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,   10,   13,   52,   52,   20,   52,   52,   31,
-       32,   52,   38,   52,   40,   41,   52,    1,   52,   52,
-       52,   52,   52,   15,   18,   23,   52,   52,   52,   42,
-        4,   52,   52,   52,   52,   52,   52,   39,    7,    6,
-
-       52,    9,   52,   52,   52,   52,   52,    8,   30,   33,
-        0
+        0,    0,   57,   55,   54,   56,   55,   55,   55,   55,
+       55,   46,   46,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   25,   55,   55,   55,   55,   55,   55,
+       55,   44,   55,   54,   53,    0,   53,   50,    0,   53,
+       51,   53,   46,   48,   47,   53,   53,   53,   53,    3,
+       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+       17,   53,   53,   53,   53,   53,   53,   53,   27,   53,
+       29,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+       53,   53,    0,   53,   52,   50,   51,   53,   53,   47,
+       49,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+
+       11,   53,   53,   53,   53,   19,   53,   53,   53,   53,
+       24,   53,   28,   53,   53,   53,   34,   53,   53,   53,
+       53,   39,   53,   53,   53,   45,   52,   53,   48,   53,
+        2,   53,    5,   53,   53,   53,   53,   14,   12,   53,
+       16,   53,   53,   21,   22,   53,   26,   53,   53,   53,
+       53,   35,   36,   37,   53,   53,   53,   53,   53,   53,
+       53,   53,   53,   10,   13,   53,   53,   20,   53,   53,
+       31,   32,   53,   38,   53,   41,   42,   53,    1,   53,
+       53,   53,   53,   53,   15,   18,   23,   53,   53,   53,
+       43,    4,   53,   53,   53,   53,   53,   53,   40,    7,
+
+        6,   53,    9,   53,   53,   53,   53,   53,    8,   30,
+       33,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -403,63 +403,63 @@ static yyconst flex_int32_t yy_meta[63] =
         3,    3
     } ;
 
-static yyconst flex_int16_t yy_base[219] =
+static yyconst flex_int16_t yy_base[220] =
     {   0,
-        0,    0,  162,  513,  151,  513,    0,   62,   64,   63,
+        0,    0,  162,  514,  151,  514,    0,   62,   64,   63,
        67,   72,   82,   69,   66,   76,   69,   84,   85,   87,
       114,  116,   75,  109,  116,   88,  130,  131,   66,  135,
       114,  133,  154,  116,    0,  111,  176,    0,  100,  178,
         0,  176,  181,  185,  194,  203,  227,  161,  186,    0,
       187,  165,  203,  194,  185,  204,  199,  218,  213,  230,
         0,  214,  217,  216,  220,  243,  247,  232,    0,  241,
-        0,  230,  240,  233,  262,  244,  251,  247,  258,  259,
-      278,  259,   36,  289,    0,  513,  513,  286,  208,  298,
-        0,  260,  275,  285,  291,  288,  286,  287,  290,  304,
-
-        0,  286,  304,  307,  308,    0,  309,  299,  315,  305,
-        0,  316,    0,  303,  310,  325,    0,  320,  306,  336,
-      327,  332,  332,  353,    0,  513,  361,  369,  337,    0,
-      342,    0,  345,  346,  363,  367,    0,    0,  365,    0,
-      359,  365,    0,    0,  360,    0,  364,  364,  365,  373,
-        0,    0,    0,  383,  380,  382,   58,  376,  373,  388,
-      408,  394,    0,    0,  379,  380,    0,  380,  401,    0,
-        0,  385,    0,  396,    0,    0,  396,    0,  408,  423,
-      424,  414,  413,    0,    0,    0,  415,  414,  422,    0,
-        0,  420,  422,  438,  421,  432,  434,    0,    0,    0,
-
-      443,    0,  431,  436,  447,  434,  444,    0,    0,    0,
-      513,   65,  494,  497,  500,  503,  506,  509
+        0,  230,  240,  233,  262,  244,  251,  247,  264,  253,
+      278,  259,   36,  289,    0,  514,  514,  298,  208,  286,
+        0,  260,  281,  288,  292,  292,  289,  289,  292,  306,
+
+        0,  288,  306,  309,  312,    0,  313,  300,  316,  306,
+        0,  317,    0,  305,  311,  325,    0,  323,  307,  342,
+      330,    0,  333,  336,  356,    0,  514,  368,  383,  343,
+        0,  348,    0,  346,  352,  363,  367,    0,    0,  365,
+        0,  359,  365,    0,    0,  360,    0,  370,  370,  371,
+      379,    0,    0,    0,  387,  386,  390,   58,  384,  384,
+      399,  407,  404,    0,    0,  387,  388,    0,  385,  407,
+        0,    0,  391,    0,  402,    0,    0,  396,    0,  409,
+      423,  425,  420,  419,    0,    0,    0,  421,  420,  426,
+        0,    0,  426,  430,  446,  432,  443,  444,    0,    0,
+
+        0,  451,    0,  439,  441,  452,  439,  445,    0,    0,
+        0,  514,   65,  495,  498,  501,  504,  507,  510
     } ;
 
-static yyconst flex_int16_t yy_def[219] =
+static yyconst flex_int16_t yy_def[220] =
     {   0,
-      211,    1,  211,  211,  211,  211,  212,  213,  214,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  215,  211,  212,  216,  213,  212,  217,  214,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  218,  215,  212,  211,  211,  212,  212,  212,
-       47,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  211,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-        0,  211,  211,  211,  211,  211,  211,  211
+      212,    1,  212,  212,  212,  212,  213,  214,  215,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  216,  212,  213,  217,  214,  213,  218,  215,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  219,  216,  213,  212,  212,  213,  213,  213,
+       47,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  212,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+
+      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
+      213,    0,  212,  212,  212,  212,  212,  212,  212
     } ;
 
-static yyconst flex_int16_t yy_nxt[576] =
+static yyconst flex_int16_t yy_nxt[577] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        13,   13,   14,   15,   16,   17,    7,   18,   19,   20,
@@ -467,10 +467,10 @@ static yyconst flex_int16_t yy_nxt[576] =
        29,    7,   30,   31,    7,   32,   14,   15,   16,   17,
         7,   18,   19,   20,   21,    7,    7,   22,   23,   24,
        25,   26,   27,   28,   29,    7,   30,   31,    7,   32,
-       33,    7,   36,   36,   39,   39,   38,   35,  176,   41,
+       33,    7,   36,   36,   39,   39,   38,   35,  177,   41,
        42,   43,   43,   43,   43,   44,   44,   44,   44,   45,
        43,   43,   43,   43,   48,   54,   49,   67,   46,   45,
-       43,   43,   43,   43,   78,   51,   55,  126,   46,   50,
+       43,   43,   43,   43,   78,   51,   55,  127,   46,   50,
 
        52,   57,   53,   59,   56,   87,   47,   60,   48,   54,
        49,   67,   46,   58,   72,   86,   73,   34,   78,   51,
@@ -478,55 +478,55 @@ static yyconst flex_int16_t yy_nxt[576] =
        47,   60,   64,   70,   81,   69,   65,   58,   72,   62,
        73,   71,   66,   76,   63,   68,   74,   79,   75,   82,
        77,   80,   34,   61,   83,   83,   64,   70,   81,   69,
-       65,  211,  211,   62,  211,   71,   66,   76,   63,  211,
+       65,  212,  212,   62,  212,   71,   66,   76,   63,  212,
        74,   79,   75,   82,   77,   80,   36,   36,   39,   39,
-       38,  211,   92,   41,   44,   44,   44,   44,   45,   43,
+       38,  212,   92,   41,   44,   44,   44,   44,   45,   43,
        43,   43,   43,   44,   44,   44,   44,   46,   93,   94,
 
        95,   88,   44,   44,   44,   44,   92,   98,   99,   89,
        46,   90,   90,   90,   90,   85,   90,   90,   90,   90,
-      211,   46,   93,   94,   95,   88,   96,  100,   97,  101,
+      212,   46,   93,   94,   95,   88,   96,  100,   97,  101,
       102,   98,   99,  103,   46,   91,   91,   91,   91,   91,
        91,   91,   91,   91,   91,  104,  105,  106,  107,  108,
        96,  100,   97,  101,  102,  109,  112,  103,  113,  114,
       115,  110,  116,   91,   91,   91,   91,   91,   91,  104,
       105,  106,  107,  108,  111,  117,  118,  119,  120,  109,
-      112,  121,  113,  114,  115,  110,  116,  122,  125,   83,
-       83,  129,  127,  123,  128,  128,  128,  128,  111,  117,
-
-      118,  119,  120,  124,  130,  121,   90,   90,   90,   90,
-      131,  122,  125,  132,  133,  129,  134,  123,  135,  136,
-      137,  138,  139,  140,  141,  142,  211,  124,  130,  143,
-      144,  145,  146,  147,  131,  148,  151,  132,  133,  152,
-      134,  149,  135,  136,  137,  138,  139,  140,  141,  142,
-       85,  150,  153,  143,  144,  145,  146,  147,  154,  148,
-      151,  155,  156,  152,  157,  149,  159,  160,  158,  128,
-      128,  128,  128,  161,  162,  150,  153,  128,  128,  128,
-      128,  163,  154,  164,  165,  155,  156,  166,  167,  168,
-      159,  160,  158,  169,  170,  171,  172,  161,  162,  173,
-
-      174,  175,  177,  178,  179,  163,  183,  164,  165,  184,
-      185,  166,  167,  168,  186,  187,  188,  169,  170,  171,
-      172,  180,  189,  173,  174,  175,  177,  178,  179,  190,
-      183,  191,  181,  184,  185,  192,  193,  182,  186,  187,
-      188,  194,  195,  196,  197,  180,  189,  198,  199,  200,
-      201,  202,  203,  190,  204,  191,  181,  205,  206,  192,
-      193,  182,  207,  208,  209,  194,  195,  196,  197,  210,
-      211,  198,  199,  200,  201,  202,  203,  211,  204,  211,
-      211,  205,  206,  211,  211,  211,  207,  208,  209,  211,
-      211,  211,  211,  210,   37,  211,   37,   40,  211,   40,
-
-       84,  211,   84,   36,  211,   36,   39,  211,   39,   83,
-      211,   83,    3,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211
+      112,  123,  113,  114,  115,  110,  116,  121,  126,   83,
+       83,  130,  122,  124,   90,   90,   90,   90,  111,  117,
+
+      118,  119,  120,  125,  128,  123,  129,  129,  129,  129,
+      131,  121,  126,  132,  133,  130,  122,  124,  134,  135,
+      136,  137,  138,  139,  140,  141,  212,  125,  142,  143,
+      144,  145,  146,  147,  131,  148,  149,  132,  133,  152,
+      153,  150,  134,  135,  136,  137,  138,  139,  140,  141,
+       85,  151,  142,  143,  144,  145,  146,  147,  154,  148,
+      149,  155,  156,  152,  153,  150,  157,  158,  212,  212,
+      212,  159,  160,  161,  162,  151,  129,  129,  129,  129,
+      163,  164,  154,  165,  166,  155,  156,  167,  168,  169,
+      157,  129,  129,  129,  129,  159,  160,  161,  162,  170,
+
+      171,  172,  173,  174,  163,  164,  175,  165,  166,  176,
+      178,  167,  168,  169,  179,  180,  184,  185,  186,  187,
+      181,  188,  189,  170,  171,  172,  173,  174,  190,  191,
+      175,  182,  192,  176,  178,  193,  183,  194,  179,  180,
+      184,  185,  186,  187,  181,  188,  189,  195,  196,  197,
+      198,  199,  190,  191,  200,  182,  192,  201,  202,  193,
+      183,  194,  203,  204,  205,  206,  207,  208,  209,  210,
+      211,  195,  196,  197,  198,  199,  212,  212,  200,  212,
+      212,  201,  202,  212,  212,  212,  203,  204,  205,  206,
+      207,  208,  209,  210,  211,   37,  212,   37,   40,  212,
+
+       40,   84,  212,   84,   36,  212,   36,   39,  212,   39,
+       83,  212,   83,    3,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212
     } ;
 
-static yyconst flex_int16_t yy_chk[576] =
+static yyconst flex_int16_t yy_chk[577] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -534,7 +534,7 @@ static yyconst flex_int16_t yy_chk[576] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    8,    8,    9,    9,    8,  212,  157,    9,
+        1,    1,    8,    8,    9,    9,    8,  213,  158,    9,
        10,   10,   10,   10,   10,   11,   11,   11,   11,   12,
        12,   12,   12,   12,   14,   17,   15,   23,   12,   13,
        13,   13,   13,   13,   29,   16,   18,   83,   13,   15,
@@ -558,39 +558,39 @@ static yyconst flex_int16_t yy_chk[576] =
        53,   56,   53,   57,   58,   66,   68,   59,   70,   72,
        73,   67,   74,   47,   47,   47,   47,   47,   47,   60,
        62,   63,   64,   65,   67,   75,   76,   77,   78,   66,
-       68,   79,   70,   72,   73,   67,   74,   80,   82,   84,
-       84,   92,   88,   81,   88,   88,   88,   88,   67,   75,
-
-       76,   77,   78,   81,   93,   79,   90,   90,   90,   90,
-       94,   80,   82,   95,   96,   92,   97,   81,   98,   99,
-      100,  102,  103,  104,  105,  107,    0,   81,   93,  108,
-      109,  110,  112,  114,   94,  115,  118,   95,   96,  119,
-       97,  116,   98,   99,  100,  102,  103,  104,  105,  107,
-       84,  116,  120,  108,  109,  110,  112,  114,  121,  115,
-      118,  122,  123,  119,  124,  116,  129,  131,  124,  127,
-      127,  127,  127,  133,  134,  116,  120,  128,  128,  128,
-      128,  135,  121,  136,  139,  122,  123,  141,  142,  145,
-      129,  131,  124,  147,  148,  149,  150,  133,  134,  154,
-
-      155,  156,  158,  159,  160,  135,  162,  136,  139,  165,
-      166,  141,  142,  145,  168,  169,  172,  147,  148,  149,
-      150,  161,  174,  154,  155,  156,  158,  159,  160,  177,
-      162,  179,  161,  165,  166,  180,  181,  161,  168,  169,
-      172,  182,  183,  187,  188,  161,  174,  189,  192,  193,
-      194,  195,  196,  177,  197,  179,  161,  201,  203,  180,
-      181,  161,  204,  205,  206,  182,  183,  187,  188,  207,
-        0,  189,  192,  193,  194,  195,  196,    0,  197,    0,
-        0,  201,  203,    0,    0,    0,  204,  205,  206,    0,
-        0,    0,    0,  207,  213,    0,  213,  214,    0,  214,
-
-      215,    0,  215,  216,    0,  216,  217,    0,  217,  218,
-        0,  218,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,  211
+       68,   80,   70,   72,   73,   67,   74,   79,   82,   84,
+       84,   92,   79,   81,   90,   90,   90,   90,   67,   75,
+
+       76,   77,   78,   81,   88,   80,   88,   88,   88,   88,
+       93,   79,   82,   94,   95,   92,   79,   81,   96,   97,
+       98,   99,  100,  102,  103,  104,    0,   81,  105,  107,
+      108,  109,  110,  112,   93,  114,  115,   94,   95,  118,
+      119,  116,   96,   97,   98,   99,  100,  102,  103,  104,
+       84,  116,  105,  107,  108,  109,  110,  112,  120,  114,
+      115,  121,  123,  118,  119,  116,  124,  125,    0,    0,
+        0,  125,  130,  132,  134,  116,  128,  128,  128,  128,
+      135,  136,  120,  137,  140,  121,  123,  142,  143,  146,
+      124,  129,  129,  129,  129,  125,  130,  132,  134,  148,
+
+      149,  150,  151,  155,  135,  136,  156,  137,  140,  157,
+      159,  142,  143,  146,  160,  161,  163,  166,  167,  169,
+      162,  170,  173,  148,  149,  150,  151,  155,  175,  178,
+      156,  162,  180,  157,  159,  181,  162,  182,  160,  161,
+      163,  166,  167,  169,  162,  170,  173,  183,  184,  188,
+      189,  190,  175,  178,  193,  162,  180,  194,  195,  181,
+      162,  182,  196,  197,  198,  202,  204,  205,  206,  207,
+      208,  183,  184,  188,  189,  190,    0,    0,  193,    0,
+        0,  194,  195,    0,    0,    0,  196,  197,  198,  202,
+      204,  205,  206,  207,  208,  214,    0,  214,  215,    0,
+
+      215,  216,    0,  216,  217,    0,  217,  218,    0,  218,
+      219,    0,  219,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
+      212,  212,  212,  212,  212,  212
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -770,13 +770,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 212 )
+				if ( yy_current_state >= 213 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 211 );
+		while ( yy_current_state != 212 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -989,64 +989,69 @@ YY_RULE_SETUP
 case 39:
 YY_RULE_SETUP
 #line 66 "lex.L"
-{return VERSION_;}
+{return VAR_;}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 67 "lex.L"
-{return WIDTH_;}
+{return VERSION_;}
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 68 "lex.L"
-{return WIN32_;}
+{return WIDTH_;}
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 69 "lex.L"
-{return WINDOW_;}
+{return WIN32_;}
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 70 "lex.L"
-{return Y_;}
+{return WINDOW_;}
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 71 "lex.L"
-{return YES_;}
+{return Y_;}
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 73 "lex.L"
+#line 72 "lex.L"
+{return YES_;}
+	YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 74 "lex.L"
 { // Integer
 		  cblval->integer = atoi(yytext);
 		  return INT;
 		}
 	YY_BREAK
-case 46:
-#line 79 "lex.L"
 case 47:
+#line 80 "lex.L"
+case 48:
 YY_RULE_SETUP
-#line 79 "lex.L"
+#line 80 "lex.L"
 { // Real Number
 		  cblval->real = atof(yytext);
 		  return REAL;
 		}
 	YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 84 "lex.L"
+#line 85 "lex.L"
 { // Pointer
 		  cblval->ptr = (void*)strtoul(yytext,NULL,16);
 		  return POINTER;
 		}
 	YY_BREAK
-case 49:
-#line 90 "lex.L"
 case 50:
+#line 91 "lex.L"
+case 51:
 YY_RULE_SETUP
-#line 90 "lex.L"
+#line 91 "lex.L"
 { // Quoted String
 		  int ll = (yyleng-2)<(CBBUFSIZE-1) ? (yyleng-2):(CBBUFSIZE-1);
 		  strncpy(cblval->str,yytext+1,ll); // skip the " " 
@@ -1054,9 +1059,9 @@ YY_RULE_SETUP
 		  return STRING;
 		}
 	YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 97 "lex.L"
+#line 98 "lex.L"
 { // Quoted String
 		  int ll = (yyleng-2)<(CBBUFSIZE-1) ? (yyleng-2):(CBBUFSIZE-1);
 		  strncpy(cblval->str,yytext+1,ll); // skip the '{'
@@ -1064,9 +1069,9 @@ YY_RULE_SETUP
 		  return STRING;
 		}
 	YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 104 "lex.L"
+#line 105 "lex.L"
 { // General String-- at least 2 printable chars
 		  int ll = yyleng <(CBBUFSIZE-1) ? yyleng:(CBBUFSIZE-1);
 		  strncpy(cblval->str,yytext,ll);
@@ -1074,25 +1079,25 @@ YY_RULE_SETUP
 		  return STRING;
 		}
 	YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 111 "lex.L"
+#line 112 "lex.L"
 { // White Spaces
 		} 
 	YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 114 "lex.L"
+#line 115 "lex.L"
 { // Else, return the char
 		  return yytext[0];
 		}
 	YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 118 "lex.L"
+#line 119 "lex.L"
 ECHO;
 	YY_BREAK
-#line 1096 "lex.C"
+#line 1101 "lex.C"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1474,7 +1479,7 @@ int yyFlexLexer::yy_get_next_buffer()
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 212 )
+			if ( yy_current_state >= 213 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1502,11 +1507,11 @@ int yyFlexLexer::yy_get_next_buffer()
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 212 )
+		if ( yy_current_state >= 213 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 211);
+	yy_is_jam = (yy_current_state == 212);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -1991,7 +1996,7 @@ void cbfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 118 "lex.L"
+#line 119 "lex.L"
 
 
 
diff --git a/saotk/colorbar/lex.L b/saotk/colorbar/lex.L
index 9e321f6..a81a666 100644
--- a/saotk/colorbar/lex.L
+++ b/saotk/colorbar/lex.L
@@ -63,6 +63,7 @@ save		{return SAVE_;}
 show		{return SHOW_;}
 true		{return TRUE_;}
 value		{return VALUE_;}
+var		{return VAR_;}
 version		{return VERSION_;}
 width		{return WIDTH_;}
 win32		{return WIN32_;}
diff --git a/saotk/colorbar/lut.C b/saotk/colorbar/lut.C
index 453e8d9..588f2af 100644
--- a/saotk/colorbar/lut.C
+++ b/saotk/colorbar/lut.C
@@ -4,6 +4,7 @@
 
 #include "lut.h"
 #include "lutparser.H"
+#include "colorbar.h"
 
 // LUT Parser Stuf
 #undef yyFlexLexer
@@ -40,9 +41,8 @@ ostream& operator<<(ostream& str, RGBColor& cc)
 
 // LUTColorMap
 
-LUTColorMap::LUTColorMap(const LUTColorMap& a)
+LUTColorMap::LUTColorMap(Colorbar* p) : ColorMapInfo(p)
 {
-  colors = a.colors;
 }
 
 void LUTColorMap::newRGBColor(float r, float g, float b)
@@ -66,6 +66,37 @@ int LUTColorMap::load()
     return 1;  // we found at least one RGBColor
 }
 
+int LUTColorMap::load(const char* var)
+{
+  const char* ccmd = Tcl_GetVar(parent_->getInterp(), var,
+				TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG);
+  if (!ccmd)
+    return 0;
+
+  // only make command string as long as needed
+  // or the rest will be processed as garbage
+  int len = strlen(ccmd)+2;
+  char* buf = new char[len];
+  memcpy(buf, ccmd, len);
+
+  // add terminator to make parser happy
+  buf[len-2] = '\n';
+  buf[len-1] = NULL;
+
+  string x(buf);
+  istringstream istr(x);
+
+  rgbFlexLexer* ll = new rgbFlexLexer(&istr);
+  rgbparse(this, ll);
+  delete ll;
+  delete [] buf;
+
+  if (colors.isEmpty())
+    return 0;  // bailout
+  else
+    return 1;  // we found at least one RGBColor
+}
+
 void LUTColorMap::save(const char* fn)
 {
   ofstream fstr(fn);
diff --git a/saotk/colorbar/lut.h b/saotk/colorbar/lut.h
index dd64ec2..e64a2b3 100644
--- a/saotk/colorbar/lut.h
+++ b/saotk/colorbar/lut.h
@@ -52,11 +52,11 @@ protected:
   List<RGBColor> colors;
 
 public:
-  LUTColorMap() {};
-  LUTColorMap(const LUTColorMap&);
+  LUTColorMap(Colorbar* p);
 
   ColorMapInfo* dup() {return new LUTColorMap(*this);}
   int load();
+  int load(const char* var);
   void save(const char*);
 
   unsigned char getRedChar(int, int);
diff --git a/saotk/colorbar/parser.C b/saotk/colorbar/parser.C
index 3960fa7..0ca28e3 100644
--- a/saotk/colorbar/parser.C
+++ b/saotk/colorbar/parser.C
@@ -116,12 +116,13 @@
      SHOW_ = 297,
      TRUE_ = 298,
      VALUE_ = 299,
-     VERSION_ = 300,
-     WIDTH_ = 301,
-     WIN32_ = 302,
-     WINDOW_ = 303,
-     Y_ = 304,
-     YES_ = 305
+     VAR_ = 300,
+     VERSION_ = 301,
+     WIDTH_ = 302,
+     WIN32_ = 303,
+     WINDOW_ = 304,
+     Y_ = 305,
+     YES_ = 306
    };
 #endif
 /* Tokens.  */
@@ -167,12 +168,13 @@
 #define SHOW_ 297
 #define TRUE_ 298
 #define VALUE_ 299
-#define VERSION_ 300
-#define WIDTH_ 301
-#define WIN32_ 302
-#define WINDOW_ 303
-#define Y_ 304
-#define YES_ 305
+#define VAR_ 300
+#define VERSION_ 301
+#define WIDTH_ 302
+#define WIN32_ 303
+#define WINDOW_ 304
+#define Y_ 305
+#define YES_ 306
 
 
 
@@ -223,7 +225,7 @@ typedef union YYSTYPE
   void* ptr;
 }
 /* Line 193 of yacc.c.  */
-#line 227 "parser.C"
+#line 229 "parser.C"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -236,7 +238,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 240 "parser.C"
+#line 242 "parser.C"
 
 #ifdef short
 # undef short
@@ -449,22 +451,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  81
+#define YYFINAL  82
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   116
+#define YYLAST   123
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  51
+#define YYNTOKENS  52
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  18
+#define YYNNTS  19
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  77
+#define YYNRULES  80
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  116
+#define YYNSTATES  121
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   305
+#define YYMAXUTOK   306
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -502,7 +504,7 @@ static const yytype_uint8 yytranslate[] =
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50
+      45,    46,    47,    48,    49,    50,    51
 };
 
 #if YYDEBUG
@@ -516,46 +518,49 @@ static const yytype_uint8 yyprhs[] =
       76,    78,    80,    82,    84,    89,    98,   101,   104,   105,
      108,   110,   112,   114,   116,   119,   123,   125,   127,   129,
      131,   134,   137,   141,   143,   145,   147,   148,   150,   152,
-     154,   157,   160,   162,   165,   168,   170,   172,   174,   176,
-     179,   182,   185,   188,   190,   192,   194,   196
+     154,   157,   160,   162,   165,   168,   171,   174,   178,   180,
+     182,   184,   186,   189,   192,   195,   198,   200,   202,   204,
+     206
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      52,     0,    -1,    16,    54,    -1,     7,    53,    53,    -1,
-      13,    56,    -1,    12,    57,    -1,    17,    59,    -1,    22,
-      -1,    24,    55,    -1,    25,    60,    -1,    27,    61,    -1,
-      28,    62,    -1,    29,    63,    -1,    30,    64,    -1,    36,
-      66,    -1,    38,    -1,    40,    10,     5,    -1,    41,    65,
-      -1,    42,    -1,    45,    -1,    47,    68,    -1,     4,    -1,
-       3,    -1,    35,    -1,    34,    -1,     3,    -1,    50,    -1,
-      49,    -1,    35,    -1,    43,    -1,    33,    -1,    31,    -1,
-      34,    -1,    19,    -1,     3,    53,    53,     3,    -1,    40,
-      53,    53,    53,    53,    53,    53,     3,    -1,    26,    58,
-      -1,    48,     5,    -1,    -1,     3,     6,    -1,     8,    -1,
+      53,     0,    -1,    16,    55,    -1,     7,    54,    54,    -1,
+      13,    57,    -1,    12,    58,    -1,    17,    60,    -1,    22,
+      -1,    24,    56,    -1,    25,    61,    -1,    27,    62,    -1,
+      28,    63,    -1,    29,    65,    -1,    30,    66,    -1,    36,
+      68,    -1,    38,    -1,    40,    10,     5,    -1,    41,    67,
+      -1,    42,    -1,    46,    -1,    48,    70,    -1,     4,    -1,
+       3,    -1,    35,    -1,    34,    -1,     3,    -1,    51,    -1,
+      50,    -1,    35,    -1,    43,    -1,    33,    -1,    31,    -1,
+      34,    -1,    19,    -1,     3,    54,    54,     3,    -1,    40,
+      54,    54,    54,    54,    54,    54,     3,    -1,    26,    59,
+      -1,    49,     5,    -1,    -1,     3,     6,    -1,     8,    -1,
       13,    -1,    12,    -1,    15,    -1,    20,    32,    -1,    20,
       32,     3,    -1,    21,    -1,    23,    -1,    24,    -1,    32,
       -1,    32,     3,    -1,    40,    10,    -1,    44,     3,     3,
-      -1,    46,    -1,     5,    -1,     3,    -1,    -1,    23,    -1,
+      -1,    47,    -1,     5,    -1,     3,    -1,    -1,    23,    -1,
       32,    -1,    25,    -1,    25,    23,    -1,    25,    32,    -1,
-       5,    -1,     5,     5,    -1,    25,     5,    -1,    37,    -1,
+       5,    -1,     5,     5,    -1,    45,    64,    -1,    25,     5,
+      -1,     5,     5,    -1,     5,     5,     5,    -1,    37,    -1,
        5,    -1,     3,    -1,     5,    -1,     3,     5,    -1,    14,
-      67,    -1,    26,     3,    -1,    39,     3,    -1,     9,    -1,
+      69,    -1,    26,     3,    -1,    39,     3,    -1,     9,    -1,
       18,    -1,    40,    -1,    11,    -1,    37,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint8 yyrline[] =
 {
-       0,    89,    89,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   111,   112,   115,   116,   119,   121,   122,   123,   124,
-     126,   127,   128,   129,   132,   133,   137,   138,   141,   142,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   161,   162,   165,   166,   167,   168,
-     169,   170,   173,   174,   175,   178,   185,   186,   189,   190,
-     192,   194,   195,   198,   199,   200,   201,   204
+       0,    90,    90,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   112,   113,   116,   117,   120,   122,   123,   124,   125,
+     127,   128,   129,   130,   133,   134,   138,   139,   142,   143,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   162,   163,   166,   167,   168,   169,
+     170,   171,   174,   175,   176,   177,   180,   181,   184,   191,
+     192,   195,   196,   198,   200,   201,   204,   205,   206,   207,
+     210
 };
 #endif
 
@@ -570,10 +575,10 @@ static const char *const yytname[] =
   "HEIGHT_", "HIDE_", "ID_", "INVERT_", "ITT_", "LEVEL_", "LIST_", "LOAD_",
   "MACOSX_", "MAP_", "N_", "NAME_", "NO_", "OFF_", "ON_", "POSTSCRIPT_",
   "PRINT_", "RESET_", "RESOLUTION_", "RGB_", "SAVE_", "SHOW_", "TRUE_",
-  "VALUE_", "VERSION_", "WIDTH_", "WIN32_", "WINDOW_", "Y_", "YES_",
-  "$accept", "command", "numeric", "debug", "yesno", "colorbar",
-  "colormap", "colormaplevel", "get", "itt", "list", "load", "macosx",
-  "map", "save", "postscript", "pscolorspace", "win32", 0
+  "VALUE_", "VAR_", "VERSION_", "WIDTH_", "WIN32_", "WINDOW_", "Y_",
+  "YES_", "$accept", "command", "numeric", "debug", "yesno", "colorbar",
+  "colormap", "colormaplevel", "get", "itt", "list", "load", "loadVar",
+  "macosx", "map", "save", "postscript", "pscolorspace", "win32", 0
 };
 #endif
 
@@ -587,21 +592,22 @@ static const yytype_uint16 yytoknum[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305
+     305,   306
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    51,    52,    52,    52,    52,    52,    52,    52,    52,
-      52,    52,    52,    52,    52,    52,    52,    52,    52,    52,
-      52,    53,    53,    54,    54,    55,    55,    55,    55,    55,
-      55,    55,    55,    55,    56,    56,    57,    57,    58,    58,
-      59,    59,    59,    59,    59,    59,    59,    59,    59,    59,
-      59,    59,    59,    59,    60,    60,    61,    61,    61,    61,
-      61,    61,    62,    62,    62,    63,    64,    64,    65,    65,
-      66,    66,    66,    67,    67,    67,    67,    68
+       0,    52,    53,    53,    53,    53,    53,    53,    53,    53,
+      53,    53,    53,    53,    53,    53,    53,    53,    53,    53,
+      53,    54,    54,    55,    55,    56,    56,    56,    56,    56,
+      56,    56,    56,    56,    57,    57,    58,    58,    59,    59,
+      60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
+      60,    60,    60,    60,    61,    61,    62,    62,    62,    62,
+      62,    62,    63,    63,    63,    63,    64,    64,    65,    66,
+      66,    67,    67,    68,    68,    68,    69,    69,    69,    69,
+      70
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -613,8 +619,9 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     4,     8,     2,     2,     0,     2,
        1,     1,     1,     1,     2,     3,     1,     1,     1,     1,
        2,     2,     3,     1,     1,     1,     0,     1,     1,     1,
-       2,     2,     1,     2,     2,     1,     1,     1,     1,     2,
-       2,     2,     2,     1,     1,     1,     1,     1
+       2,     2,     1,     2,     2,     2,     2,     3,     1,     1,
+       1,     1,     2,     2,     2,     2,     1,     1,     1,     1,
+       1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -628,45 +635,47 @@ static const yytype_uint8 yydefact[] =
       24,    23,     2,    40,    42,    41,    43,     0,    46,    47,
       48,    49,     0,     0,    53,     6,    25,    33,    31,    30,
       32,    28,    29,    27,    26,     8,    55,    54,     9,    57,
-      59,    58,    10,    62,     0,    11,    65,    12,    67,    66,
-      13,     0,     0,     0,    14,     0,     0,    68,    17,    77,
-      20,     1,     3,     0,    36,    37,     0,     0,    44,    50,
-      51,     0,    60,    61,    63,    64,    73,    76,    74,    75,
-      70,    71,    72,    16,    69,    39,     0,     0,    45,    52,
-      34,     0,     0,     0,     0,    35
+      59,    58,    10,    62,     0,     0,    11,    68,    12,    70,
+      69,    13,     0,     0,     0,    14,     0,     0,    71,    17,
+      80,    20,     1,     3,     0,    36,    37,     0,     0,    44,
+      50,    51,     0,    60,    61,    63,    65,     0,    64,    76,
+      79,    77,    78,    73,    74,    75,    16,    72,    39,     0,
+       0,    45,    52,    66,    34,     0,    67,     0,     0,     0,
+      35
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
-      -1,    20,    23,    32,    55,    29,    26,    84,    45,    58,
-      62,    65,    67,    70,    78,    74,   100,    80
+      -1,    20,    23,    32,    55,    29,    26,    85,    45,    58,
+      62,    66,    98,    68,    71,    79,    75,   103,    81
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -30
+#define YYPACT_NINF -31
 static const yytype_int8 yypact[] =
 {
-      69,    21,   -12,    -1,    23,    22,   -30,    -2,    17,   -13,
-       1,   -29,    18,   -11,   -30,     3,    46,   -30,   -30,   -10,
-      38,   -30,   -30,    21,    41,    45,   -30,    21,    21,   -30,
-     -30,   -30,   -30,   -30,   -30,   -30,   -30,    20,   -30,   -30,
-     -30,    50,    49,    52,   -30,   -30,   -30,   -30,   -30,   -30,
-     -30,   -30,   -30,   -30,   -30,   -30,   -30,   -30,   -30,   -30,
-     -16,   -30,   -30,    51,    55,   -30,   -30,   -30,   -30,   -30,
-     -30,     0,    58,    62,   -30,    64,    65,   -30,   -30,   -30,
-     -30,   -30,   -30,    61,   -30,   -30,    21,    21,    68,   -30,
-     -30,    70,   -30,   -30,   -30,   -30,   -30,   -30,   -30,   -30,
-     -30,   -30,   -30,   -30,   -30,   -30,    71,    21,   -30,   -30,
-     -30,    21,    21,    21,    72,   -30
+      30,    41,   -14,    -1,    27,    76,   -31,    -2,     3,    -9,
+       5,   -30,    16,   -11,   -31,    10,    21,   -31,   -31,   -12,
+      34,   -31,   -31,    41,    24,    31,   -31,    41,    41,   -31,
+     -31,   -31,   -31,   -31,   -31,   -31,   -31,     6,   -31,   -31,
+     -31,    48,    43,    53,   -31,   -31,   -31,   -31,   -31,   -31,
+     -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,
+     -10,   -31,   -31,    58,    62,    64,   -31,   -31,   -31,   -31,
+     -31,   -31,     0,    70,    71,   -31,    72,    74,   -31,   -31,
+     -31,   -31,   -31,   -31,    69,   -31,   -31,    41,    41,    77,
+     -31,   -31,    78,   -31,   -31,   -31,   -31,    80,   -31,   -31,
+     -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,    79,
+      41,   -31,   -31,    81,   -31,    41,   -31,    41,    41,    87,
+     -31
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -30,   -30,   -23,   -30,   -30,   -30,   -30,   -30,   -30,   -30,
-     -30,   -30,   -30,   -30,   -30,   -30,   -30,   -30
+     -31,   -31,   -23,   -31,   -31,   -31,   -31,   -31,   -31,   -31,
+     -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31,   -31
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -676,34 +685,36 @@ static const yytype_int8 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint8 yytable[] =
 {
-      82,    46,    27,    71,    86,    87,    63,    92,    66,    96,
-      59,    97,    60,    75,    24,    72,    93,    47,    98,    61,
-      56,    68,    57,    69,    21,    22,    64,    79,    73,    48,
-      33,    49,    50,    51,    34,    35,    25,    36,    81,    28,
-      99,    52,    37,    38,    83,    39,    40,    53,    54,    76,
-      85,    77,    88,    89,    41,    91,    94,    30,    31,    90,
-      95,   101,    42,   106,   107,   102,    43,   105,    44,   103,
-     104,   108,     0,   109,   110,   115,     1,     0,     0,     0,
-       0,     2,     3,     0,   111,     4,     5,     0,   112,   113,
-     114,     6,     0,     7,     8,     0,     9,    10,    11,    12,
-       0,     0,     0,     0,     0,    13,     0,    14,     0,    15,
-      16,    17,     0,     0,    18,     0,    19
+      83,    46,    27,    72,    87,    88,    56,    67,    57,    99,
+      63,   100,    24,    93,    59,    73,    60,    47,   101,    69,
+      76,    70,    94,    61,    77,    80,    78,    84,    74,    48,
+      64,    49,    50,    51,    82,    25,    86,     1,    89,    28,
+     102,    52,     2,     3,    21,    22,     4,     5,    53,    54,
+      65,    90,     6,    91,     7,     8,    92,     9,    10,    11,
+      12,    30,    31,    95,   109,   110,    13,    96,    14,    97,
+      15,    16,    17,   104,   105,   108,    18,   106,    19,   107,
+     111,   112,   114,     0,    33,   113,   116,   115,    34,    35,
+     120,    36,   117,     0,   118,   119,    37,    38,     0,    39,
+      40,     0,     0,     0,     0,     0,     0,     0,    41,     0,
+       0,     0,     0,     0,     0,     0,    42,     0,     0,     0,
+      43,     0,     0,    44
 };
 
 static const yytype_int8 yycheck[] =
 {
-      23,     3,     3,    14,    27,    28,     5,    23,    37,     9,
-      23,    11,    25,    10,    26,    26,    32,    19,    18,    32,
-       3,     3,     5,     5,     3,     4,    25,    37,    39,    31,
-       8,    33,    34,    35,    12,    13,    48,    15,     0,    40,
-      40,    43,    20,    21,     3,    23,    24,    49,    50,     3,
-       5,     5,    32,     3,    32,     3,     5,    34,    35,    10,
-       5,     3,    40,    86,    87,     3,    44,     6,    46,     5,
-       5,     3,    -1,     3,     3,     3,     7,    -1,    -1,    -1,
-      -1,    12,    13,    -1,   107,    16,    17,    -1,   111,   112,
-     113,    22,    -1,    24,    25,    -1,    27,    28,    29,    30,
-      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    40,
-      41,    42,    -1,    -1,    45,    -1,    47
+      23,     3,     3,    14,    27,    28,     3,    37,     5,     9,
+       5,    11,    26,    23,    23,    26,    25,    19,    18,     3,
+      10,     5,    32,    32,     3,    37,     5,     3,    39,    31,
+      25,    33,    34,    35,     0,    49,     5,     7,    32,    40,
+      40,    43,    12,    13,     3,     4,    16,    17,    50,    51,
+      45,     3,    22,    10,    24,    25,     3,    27,    28,    29,
+      30,    34,    35,     5,    87,    88,    36,     5,    38,     5,
+      40,    41,    42,     3,     3,     6,    46,     5,    48,     5,
+       3,     3,     3,    -1,     8,     5,     5,   110,    12,    13,
+       3,    15,   115,    -1,   117,   118,    20,    21,    -1,    23,
+      24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,
+      44,    -1,    -1,    47
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -711,17 +722,18 @@ static const yytype_int8 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,     7,    12,    13,    16,    17,    22,    24,    25,    27,
-      28,    29,    30,    36,    38,    40,    41,    42,    45,    47,
-      52,     3,     4,    53,    26,    48,    57,     3,    40,    56,
-      34,    35,    54,     8,    12,    13,    15,    20,    21,    23,
-      24,    32,    40,    44,    46,    59,     3,    19,    31,    33,
-      34,    35,    43,    49,    50,    55,     3,     5,    60,    23,
-      25,    32,    61,     5,    25,    62,    37,    63,     3,     5,
-      64,    14,    26,    39,    66,    10,     3,     5,    65,    37,
-      68,     0,    53,     3,    58,     5,    53,    53,    32,     3,
-      10,     3,    23,    32,     5,     5,     9,    11,    18,    40,
-      67,     3,     3,     5,     5,     6,    53,    53,     3,     3,
-       3,    53,    53,    53,    53,     3
+      28,    29,    30,    36,    38,    40,    41,    42,    46,    48,
+      53,     3,     4,    54,    26,    49,    58,     3,    40,    57,
+      34,    35,    55,     8,    12,    13,    15,    20,    21,    23,
+      24,    32,    40,    44,    47,    60,     3,    19,    31,    33,
+      34,    35,    43,    50,    51,    56,     3,     5,    61,    23,
+      25,    32,    62,     5,    25,    45,    63,    37,    65,     3,
+       5,    66,    14,    26,    39,    68,    10,     3,     5,    67,
+      37,    70,     0,    54,     3,    59,     5,    54,    54,    32,
+       3,    10,     3,    23,    32,     5,     5,     5,    64,     9,
+      11,    18,    40,    69,     3,     3,     5,     5,     6,    54,
+      54,     3,     3,     5,     3,    54,     5,    54,    54,    54,
+       3
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1549,257 +1561,267 @@ yyreduce:
   switch (yyn)
     {
         case 3:
-#line 91 "parser.Y"
+#line 92 "parser.Y"
     {cb->adjustCmd((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real));;}
     break;
 
   case 7:
-#line 95 "parser.Y"
+#line 96 "parser.Y"
     {cb->hideCmd();;}
     break;
 
   case 8:
-#line 96 "parser.Y"
+#line 97 "parser.Y"
     {cb->invertCmd((yyvsp[(2) - (2)].integer) );;}
     break;
 
   case 15:
-#line 103 "parser.Y"
+#line 104 "parser.Y"
     {cb->resetCmd();;}
     break;
 
   case 16:
-#line 104 "parser.Y"
+#line 105 "parser.Y"
     {cb->setRGBChannelCmd((yyvsp[(3) - (3)].str));;}
     break;
 
   case 18:
-#line 106 "parser.Y"
+#line 107 "parser.Y"
     {cb->showCmd();;}
     break;
 
   case 19:
-#line 107 "parser.Y"
+#line 108 "parser.Y"
     {cb->msg("Colorbar 1.0");;}
     break;
 
   case 21:
-#line 111 "parser.Y"
+#line 112 "parser.Y"
     {(yyval.real)=(yyvsp[(1) - (1)].real);;}
     break;
 
   case 22:
-#line 112 "parser.Y"
+#line 113 "parser.Y"
     {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 23:
-#line 115 "parser.Y"
+#line 116 "parser.Y"
     {yydebug=1;;}
     break;
 
   case 24:
-#line 116 "parser.Y"
+#line 117 "parser.Y"
     {yydebug=0;;}
     break;
 
   case 25:
-#line 119 "parser.Y"
+#line 120 "parser.Y"
     {(yyval.integer)=((yyvsp[(1) - (1)].integer) ? 1 : 0);;}
     break;
 
   case 26:
-#line 121 "parser.Y"
+#line 122 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 27:
-#line 122 "parser.Y"
+#line 123 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 28:
-#line 123 "parser.Y"
+#line 124 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 29:
-#line 124 "parser.Y"
+#line 125 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 30:
-#line 126 "parser.Y"
+#line 127 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 31:
-#line 127 "parser.Y"
+#line 128 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 32:
-#line 128 "parser.Y"
+#line 129 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 33:
-#line 129 "parser.Y"
+#line 130 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 34:
-#line 132 "parser.Y"
+#line 133 "parser.Y"
     {cb->setColorbarCmd((yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].real), (yyvsp[(3) - (4)].real), (yyvsp[(4) - (4)].integer));;}
     break;
 
   case 35:
-#line 134 "parser.Y"
+#line 135 "parser.Y"
     {cb->setColorbarCmd((yyvsp[(2) - (8)].real), (yyvsp[(3) - (8)].real), (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].real), (yyvsp[(6) - (8)].real), (yyvsp[(7) - (8)].real), (yyvsp[(8) - (8)].integer));;}
     break;
 
   case 37:
-#line 138 "parser.Y"
+#line 139 "parser.Y"
     {cb->setColormapWindowCmd((yyvsp[(2) - (2)].str));;}
     break;
 
   case 38:
-#line 141 "parser.Y"
+#line 142 "parser.Y"
     {cb->setColormapLevelCmd();;}
     break;
 
   case 39:
-#line 142 "parser.Y"
+#line 143 "parser.Y"
     {cb->setColormapLevelCmd((yyvsp[(1) - (2)].integer), (double*)(yyvsp[(2) - (2)].ptr));;}
     break;
 
   case 40:
-#line 145 "parser.Y"
+#line 146 "parser.Y"
     {cb->getBiasCmd();;}
     break;
 
   case 41:
-#line 146 "parser.Y"
+#line 147 "parser.Y"
     {cb->getColorbarCmd();;}
     break;
 
   case 42:
-#line 147 "parser.Y"
+#line 148 "parser.Y"
     {cb->getColormapCmd();;}
     break;
 
   case 43:
-#line 148 "parser.Y"
+#line 149 "parser.Y"
     {cb->getContrastCmd();;}
     break;
 
   case 44:
-#line 149 "parser.Y"
+#line 150 "parser.Y"
     {cb->getCurrentFileNameCmd();;}
     break;
 
   case 45:
-#line 150 "parser.Y"
+#line 151 "parser.Y"
     {cb->getColormapFileNameCmd((yyvsp[(3) - (3)].integer));;}
     break;
 
   case 46:
-#line 151 "parser.Y"
+#line 152 "parser.Y"
     {cb->getHeightCmd();;}
     break;
 
   case 47:
-#line 152 "parser.Y"
+#line 153 "parser.Y"
     {cb->getCurrentIDCmd();;}
     break;
 
   case 48:
-#line 153 "parser.Y"
+#line 154 "parser.Y"
     {cb->getInvertCmd();;}
     break;
 
   case 49:
-#line 154 "parser.Y"
+#line 155 "parser.Y"
     {cb->getCurrentNameCmd();;}
     break;
 
   case 50:
-#line 155 "parser.Y"
+#line 156 "parser.Y"
     {cb->getColormapNameCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 51:
-#line 156 "parser.Y"
+#line 157 "parser.Y"
     {cb->getRGBChannelCmd();;}
     break;
 
   case 52:
-#line 157 "parser.Y"
+#line 158 "parser.Y"
     {cb->getValueCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
   case 53:
-#line 158 "parser.Y"
+#line 159 "parser.Y"
     {cb->getWidthCmd();;}
     break;
 
   case 54:
-#line 161 "parser.Y"
+#line 162 "parser.Y"
     {;}
     break;
 
   case 55:
-#line 162 "parser.Y"
+#line 163 "parser.Y"
     {;}
     break;
 
   case 56:
-#line 165 "parser.Y"
+#line 166 "parser.Y"
     {cb->listNameCmd();;}
     break;
 
   case 57:
-#line 166 "parser.Y"
+#line 167 "parser.Y"
     {cb->listIDCmd();;}
     break;
 
   case 58:
-#line 167 "parser.Y"
+#line 168 "parser.Y"
     {cb->listNameCmd();;}
     break;
 
   case 59:
-#line 168 "parser.Y"
+#line 169 "parser.Y"
     {;}
     break;
 
   case 60:
-#line 169 "parser.Y"
+#line 170 "parser.Y"
     {;}
     break;
 
   case 61:
-#line 170 "parser.Y"
+#line 171 "parser.Y"
     {;}
     break;
 
   case 62:
-#line 173 "parser.Y"
+#line 174 "parser.Y"
     {cb->loadCmd((yyvsp[(1) - (1)].str),NULL);;}
     break;
 
   case 63:
-#line 174 "parser.Y"
+#line 175 "parser.Y"
     {cb->loadCmd((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].str));;}
     break;
 
-  case 64:
-#line 175 "parser.Y"
+  case 65:
+#line 177 "parser.Y"
     {;}
     break;
 
-  case 65:
-#line 178 "parser.Y"
+  case 66:
+#line 180 "parser.Y"
+    {cb->loadCmd((yyvsp[(1) - (2)].str),NULL,(yyvsp[(2) - (2)].str));;}
+    break;
+
+  case 67:
+#line 181 "parser.Y"
+    {cb->loadCmd((yyvsp[(1) - (3)].str),(yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str));;}
+    break;
+
+  case 68:
+#line 184 "parser.Y"
     {
 #ifdef _MACOSX
 	cb->macosxPrintCmd();
@@ -1807,63 +1829,63 @@ yyreduce:
 	;}
     break;
 
-  case 66:
-#line 185 "parser.Y"
+  case 69:
+#line 191 "parser.Y"
     {cb->mapCmd((yyvsp[(1) - (1)].str));;}
     break;
 
-  case 67:
-#line 186 "parser.Y"
+  case 70:
+#line 192 "parser.Y"
     {cb->mapCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 68:
-#line 189 "parser.Y"
+  case 71:
+#line 195 "parser.Y"
     {cb->saveCmd((yyvsp[(1) - (1)].str));;}
     break;
 
-  case 69:
-#line 190 "parser.Y"
+  case 72:
+#line 196 "parser.Y"
     {cb->saveCmd((yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].str));;}
     break;
 
-  case 70:
-#line 193 "parser.Y"
+  case 73:
+#line 199 "parser.Y"
     {cb->psColorSpaceCmd((Widget::PSColorSpace)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 71:
-#line 194 "parser.Y"
+  case 74:
+#line 200 "parser.Y"
     {cb->psLevelCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 72:
-#line 195 "parser.Y"
+  case 75:
+#line 201 "parser.Y"
     {cb->psResolutionCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 73:
-#line 198 "parser.Y"
+  case 76:
+#line 204 "parser.Y"
     {(yyval.integer) = Widget::BW;;}
     break;
 
-  case 74:
-#line 199 "parser.Y"
+  case 77:
+#line 205 "parser.Y"
     {(yyval.integer) = Widget::GRAY;;}
     break;
 
-  case 75:
-#line 200 "parser.Y"
+  case 78:
+#line 206 "parser.Y"
     {(yyval.integer) = Widget::RGB;;}
     break;
 
-  case 76:
-#line 201 "parser.Y"
+  case 79:
+#line 207 "parser.Y"
     {(yyval.integer) = Widget::CMYK;;}
     break;
 
-  case 77:
-#line 204 "parser.Y"
+  case 80:
+#line 210 "parser.Y"
     {
 #ifdef _WIN32
 	cb->win32PrintCmd();
@@ -1873,7 +1895,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 1877 "parser.C"
+#line 1899 "parser.C"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2087,6 +2109,6 @@ yyreturn:
 }
 
 
-#line 211 "parser.Y"
+#line 217 "parser.Y"
 
 
diff --git a/saotk/colorbar/parser.H b/saotk/colorbar/parser.H
index d26f823..756ef59 100644
--- a/saotk/colorbar/parser.H
+++ b/saotk/colorbar/parser.H
@@ -81,12 +81,13 @@
      SHOW_ = 297,
      TRUE_ = 298,
      VALUE_ = 299,
-     VERSION_ = 300,
-     WIDTH_ = 301,
-     WIN32_ = 302,
-     WINDOW_ = 303,
-     Y_ = 304,
-     YES_ = 305
+     VAR_ = 300,
+     VERSION_ = 301,
+     WIDTH_ = 302,
+     WIN32_ = 303,
+     WINDOW_ = 304,
+     Y_ = 305,
+     YES_ = 306
    };
 #endif
 /* Tokens.  */
@@ -132,12 +133,13 @@
 #define SHOW_ 297
 #define TRUE_ 298
 #define VALUE_ 299
-#define VERSION_ 300
-#define WIDTH_ 301
-#define WIN32_ 302
-#define WINDOW_ 303
-#define Y_ 304
-#define YES_ 305
+#define VAR_ 300
+#define VERSION_ 301
+#define WIDTH_ 302
+#define WIN32_ 303
+#define WINDOW_ 304
+#define Y_ 305
+#define YES_ 306
 
 
 
@@ -153,7 +155,7 @@ typedef union YYSTYPE
   void* ptr;
 }
 /* Line 1529 of yacc.c.  */
-#line 157 "parser.H"
+#line 159 "parser.H"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
diff --git a/saotk/colorbar/parser.Y b/saotk/colorbar/parser.Y
index c9c08a7..388b87f 100644
--- a/saotk/colorbar/parser.Y
+++ b/saotk/colorbar/parser.Y
@@ -77,6 +77,7 @@ extern void cberror(ColorbarBase*, cbFlexLexer*, const char*);
 %token SHOW_
 %token TRUE_
 %token VALUE_
+%token VAR_
 %token VERSION_
 %token WIDTH_
 %token WIN32_
@@ -172,9 +173,14 @@ list	: /* empty */ {cb->listNameCmd();}
 
 load	: STRING {cb->loadCmd($1,NULL);}
 	| STRING STRING {cb->loadCmd($1,$2);}
+	| VAR_ loadVar
 	| ITT_ STRING {}
 	;
 
+loadVar	: STRING STRING {cb->loadCmd($1,NULL,$2);}
+	| STRING STRING STRING {cb->loadCmd($1,$2,$3);}
+	;
+
 macosx	: PRINT_ {
 #ifdef _MACOSX
 	cb->macosxPrintCmd();
diff --git a/saotk/colorbar/sao.C b/saotk/colorbar/sao.C
index 920019f..f3eeaff 100644
--- a/saotk/colorbar/sao.C
+++ b/saotk/colorbar/sao.C
@@ -4,6 +4,7 @@
 
 #include "sao.h"
 #include "saoparser.H"
+#include "colorbar.h"
 
 SAOColorMap* cm;
 
@@ -33,19 +34,11 @@ ostream& operator<<(ostream& s, LIColor& c)
 }
 
 // SAOColorMap
-SAOColorMap::SAOColorMap()
+SAOColorMap::SAOColorMap(Colorbar* p) : ColorMapInfo(p)
 {
   current =&red;
 }
 
-SAOColorMap::SAOColorMap(const SAOColorMap& a)
-{
-  red = a.red;
-  green = a.green;
-  blue = a.blue;
-  current = a.current;
-}
-
 void SAOColorMap::newLIColor(float aa, float bb)
 {
   current->append(new LIColor(aa,bb));
@@ -82,6 +75,37 @@ int SAOColorMap::load()
     return 1;  // we found at least one LIColor for each RGB
 }
 
+int SAOColorMap::load(const char* var)
+{
+  const char* ccmd = Tcl_GetVar(parent_->getInterp(), var,
+				TCL_GLOBAL_ONLY | TCL_LEAVE_ERR_MSG);
+  if (!ccmd)
+    return 0;
+
+  // only make command string as long as needed
+  // or the rest will be processed as garbage
+  int len = strlen(ccmd)+2;
+  char* buf = new char[len];
+  memcpy(buf, ccmd, len);
+
+  // add terminator to make parser happy
+  buf[len-2] = '\n';
+  buf[len-1] = NULL;
+
+  string x(buf);
+  istringstream istr(x);
+
+  liFlexLexer* ll = new liFlexLexer(&istr);
+  liparse(this, ll);
+  delete ll;
+  delete [] buf;
+
+  if (red.isEmpty() || green.isEmpty() || blue.isEmpty())
+    return 0;  // something is missing, bailout
+  else
+    return 1;  // we found at least one LIColor for each RGB
+}
+
 void SAOColorMap::save(const char* fn)
 {
   ofstream f(fn);
diff --git a/saotk/colorbar/sao.h b/saotk/colorbar/sao.h
index 1c2f7b5..300fe4c 100644
--- a/saotk/colorbar/sao.h
+++ b/saotk/colorbar/sao.h
@@ -8,6 +8,8 @@
 #include "colormap.h"
 #include "list.h"
 
+class Colorbar;
+
 // LIColor
 class LIColor {
  private:
@@ -58,11 +60,11 @@ protected:
   unsigned short getColorShrt(int, int, List<LIColor>*);
 
 public:
-  SAOColorMap();
-  SAOColorMap(const SAOColorMap&);
+  SAOColorMap(Colorbar* p);
 
   ColorMapInfo* dup() {return new SAOColorMap(*this);}
   int load();
+  int load(const char* var);
   void save(const char*);
 
   unsigned char getRedChar(int i, int c) {return getColorChar(i,c,&red);}
diff --git a/saotk/fitsy++/Makefile b/saotk/fitsy++/Makefile
index e41fe28..d524466 100644
--- a/saotk/fitsy++/Makefile
+++ b/saotk/fitsy++/Makefile
@@ -30,6 +30,7 @@ SS	= \
 	outfile.C \
 	outfits.C \
 	outsocket.C \
+	photo.C \
 	plio.C \
 	rice.C \
 	share.C \
diff --git a/saotk/fitsy++/analysis.C b/saotk/fitsy++/analysis.C
index d339433..d8b3fa5 100644
--- a/saotk/fitsy++/analysis.C
+++ b/saotk/fitsy++/analysis.C
@@ -38,7 +38,7 @@ FitsAnalysis::FitsAnalysis(FitsFile* src)
     return;
 
   // clear memory
-  memset(data_, '\0', size * sizeof(double));
+  memset(data_, 0, size*sizeof(double));
 
   // made it this far, must be valid
   orgFits_ = 0;
diff --git a/saotk/fitsy++/compress.C b/saotk/fitsy++/compress.C
index 9549d63..86ee9ad 100644
--- a/saotk/fitsy++/compress.C
+++ b/saotk/fitsy++/compress.C
@@ -534,6 +534,70 @@ template <> double FitsCompressm<double>::getValue(long long* ptr, double zs,
   return hasScaling_ ? (*ptr)*zs + zz : *ptr;
 }
 
+// getValue float
+
+template <class T> T FitsCompressm<T>::getValue(float* ptr, double zs,
+						double zz, int blank)
+{
+  return hasScaling_ ? T((*ptr)*zs + zz) : *ptr;
+}
+
+template <> float FitsCompressm<float>::getValue(float* ptr, double zs, 
+						 double zz, int blank)
+{
+  if (!hasBlank_ && !hasScaling_)
+    return *ptr;
+
+  if (hasBlank_ && *ptr == blank)
+    return getnanf();
+
+  return hasScaling_ ? (*ptr)*zs + zz : *ptr;
+}
+
+template <> double FitsCompressm<double>::getValue(float* ptr, double zs, 
+						   double zz, int blank)
+{
+  if (!hasBlank_ && !hasScaling_)
+    return *ptr;
+
+  if (hasBlank_ && *ptr == blank)
+    return getnand();
+
+  return hasScaling_ ? (*ptr)*zs + zz : *ptr;
+}
+
+// getValue double
+
+template <class T> T FitsCompressm<T>::getValue(double* ptr, double zs,
+						double zz, int blank)
+{
+  return hasScaling_ ? T((*ptr)*zs + zz) : *ptr;
+}
+
+template <> float FitsCompressm<float>::getValue(double* ptr, double zs, 
+						 double zz, int blank)
+{
+  if (!hasBlank_ && !hasScaling_)
+    return *ptr;
+
+  if (hasBlank_ && *ptr == blank)
+    return getnanf();
+
+  return hasScaling_ ? (*ptr)*zs + zz : *ptr;
+}
+
+template <> double FitsCompressm<double>::getValue(double* ptr, double zs, 
+						   double zz, int blank)
+{
+  if (!hasBlank_ && !hasScaling_)
+    return *ptr;
+
+  if (hasBlank_ && *ptr == blank)
+    return getnand();
+
+  return hasScaling_ ? (*ptr)*zs + zz : *ptr;
+}
+
 template class FitsCompressm<unsigned char>;
 template class FitsCompressm<short>;
 template class FitsCompressm<unsigned short>;
diff --git a/saotk/fitsy++/compress.h b/saotk/fitsy++/compress.h
index 42904fb..16097af 100644
--- a/saotk/fitsy++/compress.h
+++ b/saotk/fitsy++/compress.h
@@ -20,7 +20,7 @@ class FitsCompress : public FitsFile {
   double bzero_;
   unsigned int blank_;
   char* zmaskcmp_;
-
+  
   off_t tilesize_;
   off_t size_;
 
@@ -58,6 +58,8 @@ class FitsCompressm : public FitsCompress {
   T getValue(short*, double, double, int);
   T getValue(int*, double, double, int);
   T getValue(long long*, double, double, int);
+  T getValue(float*, double, double, int);
+  T getValue(double*, double, double, int);
   
  public:
   FitsCompressm(FitsFile*);
diff --git a/saotk/fitsy++/file.C b/saotk/fitsy++/file.C
index 526489c..03c9c2e 100644
--- a/saotk/fitsy++/file.C
+++ b/saotk/fitsy++/file.C
@@ -329,8 +329,11 @@ void FitsFile::setArrayByteSwap()
   }
 }
 
-int FitsFile::find(const char* name)
+int FitsFile::find(const char* name, FitsHead* alt)
 {
+  if (alt)
+    return alt->find(name) ? 1 : 0;
+
   if (head_)
     if (head_->find(name))
       return 1;
@@ -342,8 +345,11 @@ int FitsFile::find(const char* name)
   return 0;
 }
 
-int FitsFile::getLogical(const char* name, int def)
+int FitsFile::getLogical(const char* name, int def, FitsHead* alt)
 {
+  if (alt)
+    return alt->getLogical(name,def);
+
   if (head_) {
     int r = head_->getLogical(name,def);
     if (r != def)
@@ -356,8 +362,11 @@ int FitsFile::getLogical(const char* name, int def)
   return def;
 }
 
-int FitsFile::getInteger(const char* name, int def)
+int FitsFile::getInteger(const char* name, int def, FitsHead* alt)
 {
+  if (alt)
+    return alt->getInteger(name,def);
+
   if (head_) {
     int r = head_->getInteger(name,def);
     if (r != def)
@@ -370,8 +379,11 @@ int FitsFile::getInteger(const char* name, int def)
   return def;
 }
 
-double FitsFile::getReal(const char* name, double def)
+double FitsFile::getReal(const char* name, double def, FitsHead* alt)
 {
+  if (alt)
+    return alt->getReal(name,def);
+
   if (head_) {
     double r = head_->getReal(name,def);
     if (r != def)
@@ -385,8 +397,13 @@ double FitsFile::getReal(const char* name, double def)
 }
 
 void FitsFile::getComplex(const char* name, double* real, double* img,
-			  double rdef, double idef)
+			  double rdef, double idef, FitsHead* alt)
 {
+  if (alt) {
+    alt->getComplex(name, real, img, rdef, idef);
+    return;
+  }
+
   if (head_) {
     head_->getComplex(name, real, img, rdef, idef);
     if (*real != rdef || *img != idef)
@@ -402,8 +419,11 @@ void FitsFile::getComplex(const char* name, double* real, double* img,
   *img = idef;
 }
 
-char* FitsFile::getString(const char* name)
+char* FitsFile::getString(const char* name, FitsHead* alt)
 {
+  if (alt)
+    return alt->getString(name);
+
   if (head_) {
     char* r = head_->getString(name);
     if (r)
@@ -416,8 +436,11 @@ char* FitsFile::getString(const char* name)
   return NULL;
 }
 
-char* FitsFile::getComment(const char* name)
+char* FitsFile::getComment(const char* name, FitsHead* alt)
 {
+  if (alt)
+    return alt->getComment(name);
+
   if (head_) {
     char* r = head_->getComment(name);
     if (r)
@@ -430,8 +453,11 @@ char* FitsFile::getComment(const char* name)
   return NULL;
 }
 
-char* FitsFile::getKeyword(const char* name)
+char* FitsFile::getKeyword(const char* name, FitsHead* alt)
 {
+  if (alt)
+    return alt->getKeyword(name);
+
   if (head_) {
     char* r = head_->getKeyword(name);
     if (r)
diff --git a/saotk/fitsy++/file.h b/saotk/fitsy++/file.h
index c52a6d4..629b9cd 100644
--- a/saotk/fitsy++/file.h
+++ b/saotk/fitsy++/file.h
@@ -168,15 +168,16 @@ public:
 
   void setColMinMax(const char*, const Vector&);
 
-  int find(const char* name);
-  int getLogical(const char* name, int def);
-  int getInteger(const char* name, int def);
-  double getReal(const char* name, double def);
+  int find(const char* name, FitsHead* alt=NULL);
+
+  int getLogical(const char* name, int def, FitsHead* alt=NULL);
+  int getInteger(const char* name, int def, FitsHead* alt=NULL);
+  double getReal(const char* name, double def, FitsHead* alt=NULL);
   void getComplex(const char* name, double* real, double* img, 
-		  double rdef, double idef);
-  char* getString(const char* name);
-  char* getComment(const char* name);
-  char* getKeyword(const char* name);
+		  double rdef, double idef, FitsHead* alt=NULL);
+  char* getString(const char* name, FitsHead* alt=NULL);
+  char* getComment(const char* name, FitsHead* alt=NULL);
+  char* getKeyword(const char* name, FitsHead* alt=NULL);
 
   int saveFitsImageFile(const char*, int);
   int saveFitsImageChannel(Tcl_Interp*, const char*, int);
diff --git a/saotk/fitsy++/gzip.C b/saotk/fitsy++/gzip.C
index 406f9f4..9d91bde 100644
--- a/saotk/fitsy++/gzip.C
+++ b/saotk/fitsy++/gzip.C
@@ -14,6 +14,15 @@ using namespace std;
 template<class T> FitsGzipm<T>::FitsGzipm(FitsFile* fits) 
   : FitsCompressm<T>(fits)
 {
+  noquantize_ = 0;
+  char keyword[] = "ZQUANTIZ";
+  if (fits->find(keyword)) {
+    char* which = fits->getString(keyword);
+    if (!strncmp(which,"NONE",4))
+      noquantize_ = 1;
+    delete [] which;
+  }
+  
   FitsCompressm<T>::uncompress(fits);
 }
 
@@ -128,27 +137,52 @@ template <class T> int FitsGzipm<T>::compressed(T* dest, char* sptr,
 	  }
       break;
     case 4:
-      for (int kk=kkstart; kk<kkstop; kk++)
-	for (int jj=jjstart; jj<jjstop; jj++)
-	  for (int ii=iistart; ii<iistop; ii++,ll++) {
-	    // swap if needed
-	    if (FitsCompressm<T>::byteswap_) {
-	      const char* p = (const char*)((int*)obuf+ll);
-	      union {
-		char c[4];
-		int i;
-	      } u;
-
-	      u.c[3] = *p++;
-	      u.c[2] = *p++;
-	      u.c[1] = *p++;
-	      u.c[0] = *p;
-
-	      *((int*)obuf+ll) = u.i;
+      // special case
+      if (noquantize_) {
+	for (int kk=kkstart; kk<kkstop; kk++)
+	  for (int jj=jjstart; jj<jjstop; jj++)
+	    for (int ii=iistart; ii<iistop; ii++,ll++) {
+	      // swap if needed
+	      if (FitsCompressm<T>::byteswap_) {
+		const char* p = (const char*)((float*)obuf+ll);
+		union {
+		  char c[4];
+		  float i;
+		} u;
+
+		u.c[3] = *p++;
+		u.c[2] = *p++;
+		u.c[1] = *p++;
+		u.c[0] = *p;
+
+		*((float*)obuf+ll) = u.i;
+	      }
+	      dest[kk*FitsCompressm<T>::width_*FitsCompressm<T>::height_ + jj*FitsCompressm<T>::width_ + ii] = FitsCompressm<T>::getValue((float*)obuf+ll,zs,zz,blank);
 	    }
-
-	    dest[kk*FitsCompressm<T>::width_*FitsCompressm<T>::height_ + jj*FitsCompressm<T>::width_ + ii] = FitsCompressm<T>::getValue((int*)obuf+ll,zs,zz,blank);
-	  }
+      }
+      else {
+	for (int kk=kkstart; kk<kkstop; kk++)
+	  for (int jj=jjstart; jj<jjstop; jj++)
+	    for (int ii=iistart; ii<iistop; ii++,ll++) {
+	      // swap if needed
+	      if (FitsCompressm<T>::byteswap_) {
+		const char* p = (const char*)((int*)obuf+ll);
+		union {
+		  char c[4];
+		  int i;
+		} u;
+
+		u.c[3] = *p++;
+		u.c[2] = *p++;
+		u.c[1] = *p++;
+		u.c[0] = *p;
+
+		*((int*)obuf+ll) = u.i;
+	      }
+
+	      dest[kk*FitsCompressm<T>::width_*FitsCompressm<T>::height_ + jj*FitsCompressm<T>::width_ + ii] = FitsCompressm<T>::getValue((int*)obuf+ll,zs,zz,blank);
+	    }
+      }
       break;
     }
   }
diff --git a/saotk/fitsy++/gzip.h b/saotk/fitsy++/gzip.h
index 772cc51..f4b2781 100644
--- a/saotk/fitsy++/gzip.h
+++ b/saotk/fitsy++/gzip.h
@@ -9,6 +9,9 @@
 
 template<class T>
 class FitsGzipm : public FitsCompressm<T> {
+ protected:
+  int noquantize_;
+
  private:
   int compressed(T*, char*, char*, int, int, int, int, int, int);
 
diff --git a/saotk/fitsy++/head.C b/saotk/fitsy++/head.C
index 00c2811..84ad674 100644
--- a/saotk/fitsy++/head.C
+++ b/saotk/fitsy++/head.C
@@ -12,8 +12,6 @@
 #include "file.h"
 #include "head.h"
 
-#define USEINDEX 1
-
 FitsHead::FitsHead(char* raw, off_t bytes, Memory mem)
 {
   cards_ = raw;
@@ -39,9 +37,7 @@ FitsHead::FitsHead(char* raw, off_t bytes, Memory mem)
       acard_ = ((ncard_+FTY_CARDS-1)/FTY_CARDS) * FTY_CARDS;
       valid_ = 1;
 
-      if (USEINDEX)
-	buildIndex();
-
+      buildIndex();
       updateHDU();
       return;
     }
@@ -74,9 +70,7 @@ FitsHead::FitsHead(char* raw, off_t bytes, char* mm,
       acard_ = ((ncard_+FTY_CARDS-1)/FTY_CARDS) * FTY_CARDS;
       valid_ = 1;
 
-      if (USEINDEX)
-	buildIndex();
-
+      buildIndex();
       updateHDU();
       return;
     }
@@ -117,9 +111,7 @@ FitsHead::FitsHead(int width, int height, int depth, int bitpix, char* xtension)
 
   hdu_ = NULL;
 
-  if (USEINDEX)
-    buildIndex();
-
+  buildIndex();
   updateHDU();
 }
 
@@ -152,9 +144,7 @@ FitsHead::FitsHead(int width, int height, int depth, int bitpix,
 
   hdu_ = NULL;
 
-  if (USEINDEX)
-    buildIndex();
-
+  buildIndex();
   updateHDU();
 }
 
@@ -175,9 +165,7 @@ FitsHead::FitsHead(const FitsHead& a)
 
   hdu_ = NULL;
 
-  if (USEINDEX)
-    buildIndex();
-
+  buildIndex();
   updateHDU();
 }
 
diff --git a/saotk/fitsy++/head.h b/saotk/fitsy++/head.h
index a9c3f3c..16fd669 100644
--- a/saotk/fitsy++/head.h
+++ b/saotk/fitsy++/head.h
@@ -75,9 +75,7 @@ public:
   void updateCards() {if (hdu_) hdu_->updateCards(this);}
 
   char* find(const char* name);
-  char* findNext(const char* name);
   char* findSeq(const char* name);
-  char* fineSeqNext(const char* name);
   char* findIndex(const char* name);
 
   char* cardins(char* card, char* here);
diff --git a/saotk/fitsy++/photo.C b/saotk/fitsy++/photo.C
new file mode 100644
index 0000000..42da468
--- /dev/null
+++ b/saotk/fitsy++/photo.C
@@ -0,0 +1,139 @@
+// Copyright (C) 1999-2012
+// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+// For conditions of distribution and use, see copyright notice in "copyright"
+
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+using namespace std;
+
+#include "photo.h"
+
+FitsPhoto::FitsPhoto(Tcl_Interp* interp, const char* ph)
+{
+  // reset
+  valid_ = 0;
+  
+  if (*ph == '\0') {
+    Tcl_AppendResult(interp, "bad image name ", NULL);
+    return;
+  }
+  Tk_PhotoHandle photo = Tk_FindPhoto(interp, ph);
+  if (!photo) {
+    Tcl_AppendResult(interp, "bad image handle ", NULL);
+    return;
+  }
+  Tk_PhotoImageBlock block;
+  if (!Tk_PhotoGetImage(photo,&block)) {
+    Tcl_AppendResult(interp, "bad image block ", NULL);
+    return;
+  }
+  int width =0;
+  int height =0;
+  Tk_PhotoGetSize(photo, &width, &height);
+
+  // new header
+  head_ = new FitsHead(width, height, 1, 8);
+  if (!head_->isValid())
+    return;
+
+  off_t size = width*height;
+  unsigned char* dest  = new unsigned char[size];
+  data_ = dest;
+
+  unsigned char* src = block.pixelPtr;
+  for (int jj=height-1; jj>=0; jj--)
+    for (int ii=0; ii<width; ii++) {
+      int pp = (jj*width+ii)*block.pixelSize;
+      unsigned char rr = src[pp+block.offset[0]];
+      unsigned char gg = src[pp+block.offset[1]];
+      unsigned char bb = src[pp+block.offset[2]];
+      //unsigned char vv = (rr+gg+bb)/3.;
+      //unsigned char vv = .2126*rr + .7152*gg + .0722*bb;
+      unsigned char vv = .299*rr + .587*gg + .114*bb;
+      *dest++ = vv;
+    }
+
+  // made it this far, must be valid
+  byteswap_ = 0;
+  valid_ = 1;
+  orgFits_ = 0;
+}
+
+FitsPhoto::~FitsPhoto()
+{
+  if (data_)
+    delete [] (unsigned char*)data_;
+}
+
+FitsPhotoCube::FitsPhotoCube(Tcl_Interp* interp, const char* ph)
+{
+  // reset
+  valid_ = 0;
+  
+  if (*ph == '\0') {
+    Tcl_AppendResult(interp, "bad image name ", NULL);
+    return;
+  }
+  Tk_PhotoHandle photo = Tk_FindPhoto(interp, ph);
+  if (!photo) {
+    Tcl_AppendResult(interp, "bad image handle ", NULL);
+    return;
+  }
+  Tk_PhotoImageBlock block;
+  if (!Tk_PhotoGetImage(photo,&block)) {
+    Tcl_AppendResult(interp, "bad image block ", NULL);
+    return;
+  }
+  int width =0;
+  int height =0;
+  int depth =3;
+  Tk_PhotoGetSize(photo, &width, &height);
+
+  // new header
+  head_ = new FitsHead(width, height, depth, 8);
+  if (!head_->isValid())
+    return;
+
+  off_t size = width*height*depth;
+  unsigned char* dest  = new unsigned char[size];
+  data_ = dest;
+
+  for (int kk=0; kk<depth; kk++) {
+    unsigned char* src = block.pixelPtr;
+    for (int jj=height-1; jj>=0; jj--) {
+      for (int ii=0; ii<width; ii++) {
+	int pp = (jj*width+ii)*block.pixelSize;
+	*dest++ = src[pp+block.offset[kk]];
+      }
+    }
+  }
+
+  // made it this far, must be valid
+  byteswap_ = 0;
+  valid_ = 1;
+  orgFits_ = 0;
+}
+
+FitsPhotoCube::~FitsPhotoCube()
+{
+  if (data_)
+    delete [] (unsigned char*)data_;
+}
+
+FitsPhotoCubeNext::FitsPhotoCubeNext(FitsFile* prev)
+{
+  head_ = prev->head();
+  FitsImageHDU* hdu = (FitsImageHDU*)head_->hdu();
+
+  manageHead_ = 0;
+  primary_ = prev->primary();
+  managePrimary_ = 0;
+  ext_ = prev->ext();
+
+  inherit_ = head_->inherit();
+  data_ = (char*)prev->data() + hdu->imgbytes();
+
+  valid_ = 1;
+  return;
+}
diff --git a/saotk/fitsy++/photo.h b/saotk/fitsy++/photo.h
new file mode 100644
index 0000000..95df744
--- /dev/null
+++ b/saotk/fitsy++/photo.h
@@ -0,0 +1,29 @@
+// Copyright (C) 1999-2012
+// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+// For conditions of distribution and use, see copyright notice in "copyright"
+
+#ifndef __fitsphoto_h__
+#define __fitsphoto_h__
+
+#include "vector.h"
+#include "file.h"
+
+class FitsPhoto : public FitsFile {
+ public:
+  FitsPhoto(Tcl_Interp* interp, const char*);
+  ~FitsPhoto();
+};
+
+class FitsPhotoCube : public FitsFile {
+ public:
+  FitsPhotoCube(Tcl_Interp* interp, const char*);
+  ~FitsPhotoCube();
+};
+
+class FitsPhotoCubeNext : public FitsFile {
+ public:
+  FitsPhotoCubeNext(FitsFile*);
+};
+
+#endif
+
diff --git a/saotk/frame/Makefile b/saotk/frame/Makefile
index 37080c2..2bf6b8f 100644
--- a/saotk/frame/Makefile
+++ b/saotk/frame/Makefile
@@ -22,7 +22,6 @@ SS	= \
 	bpanda.C \
 	callback.C \
 	circle.C \
-	circle3d.C \
 	colorscale.C \
 	colorscalergb.C \
 	colorscaletrue8.C \
diff --git a/saotk/frame/annulus.C b/saotk/frame/annulus.C
index 94d8e54..0428a51 100644
--- a/saotk/frame/annulus.C
+++ b/saotk/frame/annulus.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "annulus.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Annulus::Annulus(const Annulus& a) : BaseEllipse(a) {}
@@ -24,7 +23,7 @@ Annulus::Annulus(Base* p, const Vector& ctr,
     annuli_[i] = Vector(r,r);
   }
 
-  strcpy(type, "annulus");
+  strcpy(type_, "annulus");
   numHandle = 4 + numAnnuli_;
 
   updateBBox();
@@ -45,7 +44,7 @@ Annulus::Annulus(Base* p, const Vector& ctr,
     annuli_[i] = Vector(r[i],r[i]);
   sortAnnuli();
 
-  strcpy(type, "annulus");
+  strcpy(type_, "annulus");
   numHandle = 4 + numAnnuli_;
 
   updateBBox();
@@ -91,20 +90,20 @@ int Annulus::addAnnuli(const Vector& v)
 
 // list
 
-void Annulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		   SkyFormat format, int conj, int strip)
+void Annulus::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		   Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',';
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',';
       for (int i=0; i<numAnnuli_; i++) {
 	double r = ptr->mapLenFromRef(annuli_[i][0],sys);
 	str << r;
@@ -118,12 +117,12 @@ void Annulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    str << type << '(' << setprecision(8) << v[0] << ',' << v[1] <<',';
+	    str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] <<',';
 	    for (int i=0; i<numAnnuli_; i++) {
-	      double r = ptr->mapLenFromRef(annuli_[i][0],sys,ARCSEC);
+	      double r = ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCSEC);
 	      str << r << "\"";
 	      if (i!=numAnnuli_-1)
 		str << ',';
@@ -131,7 +130,7 @@ void Annulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	    str << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -141,9 +140,9 @@ void Annulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	    istringstream wcs(x);
 	    wcs >> ra >> dec;
 
-	    str << type << '(' << ra << ',' << dec << ',' ;
+	    str << type_ << '(' << ra << ',' << dec << ',' ;
 	    for (int i=0; i<numAnnuli_; i++) {
-	      double r = ptr->mapLenFromRef(annuli_[i][0],sys,ARCSEC);
+	      double r = ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCSEC);
 	      str << r << "\"";
 	      if (i!=numAnnuli_-1)
 		str << ',';
@@ -155,7 +154,7 @@ void Annulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
       }
       else {
 	Vector v = ptr->mapFromRef(center,sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',';
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',';
 	for (int i=0; i<numAnnuli_; i++) {
 	  double r = ptr->mapLenFromRef(annuli_[i][0],sys);
 	  str << r;
@@ -170,13 +169,13 @@ void Annulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Annulus::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		      SkyFormat format)
+void Annulus::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		      Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadiusX(ptr,sys,annuli_,numAnnuli_);
@@ -185,23 +184,23 @@ void Annulus::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Annulus::listCiao(ostream& str, CoordSystem sys, int strip)
+void Annulus::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,PHYSICAL);
+      Vector v = ptr->mapFromRef(center,Coord::PHYSICAL);
       for (int i=0; i<numAnnuli_-1; i++) {
 	listCiaoPre(str);
 
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
-	    << ptr->mapLenFromRef(annuli_[i][0],PHYSICAL) << ','
-	    << ptr->mapLenFromRef(annuli_[i+1][0],PHYSICAL) << ')';
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	    << ptr->mapLenFromRef(annuli_[i][0],Coord::PHYSICAL) << ','
+	    << ptr->mapLenFromRef(annuli_[i+1][0],Coord::PHYSICAL) << ')';
 
 	listCiaoPost(str, strip);
       }
@@ -211,7 +210,7 @@ void Annulus::listCiao(ostream& str, CoordSystem sys, int strip)
     if (ptr->hasWCSCel(sys)) {
 
       char buf[64];
-      ptr->mapFromRef(center,sys,FK5,SEXAGESIMAL,buf,64);
+      ptr->mapFromRef(center,sys,Coord::FK5,Coord::SEXAGESIMAL,buf,64);
       char ra[16];
       char dec[16];
       string x(buf);
@@ -221,9 +220,9 @@ void Annulus::listCiao(ostream& str, CoordSystem sys, int strip)
       for (int i=0; i<numAnnuli_-1; i++) {
 	listCiaoPre(str);
 
-	str << type << '(' << ra << ',' << dec << ','
-	    << ptr->mapLenFromRef(annuli_[i][0],sys,ARCMIN) << '\'' << ','
-	    << ptr->mapLenFromRef(annuli_[i+1][0],sys,ARCMIN) << '\'' << ')';
+	str << type_ << '(' << ra << ',' << dec << ','
+	    << ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCMIN) << '\'' << ','
+	    << ptr->mapLenFromRef(annuli_[i+1][0],sys,Coord::ARCMIN) << '\'' << ')';
 
 	listCiaoPost(str, strip);
       }
@@ -231,23 +230,23 @@ void Annulus::listCiao(ostream& str, CoordSystem sys, int strip)
   }
 }
 
-void Annulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-		       SkyFormat format, int strip)
+void Annulus::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		       Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
       Vector v = ptr->mapFromRef(center,sys);
-      listProsCoordSystem(str,sys,sky);
-      str << "; " << type << ' ' << setprecision(8) << v;
+      coord.listProsCoordSystem(str,sys,sky);
+      str << "; " << type_ << ' ' << setprecision(8) << v;
       for (int i=0; i<numAnnuli_; i++) {
-	double r = ptr->mapLenFromRef(annuli_[i][0],IMAGE);
+	double r = ptr->mapLenFromRef(annuli_[i][0],Coord::IMAGE);
 	str << r << ' ';
       }
     }
@@ -255,19 +254,19 @@ void Annulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << setprecision(8) 
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << setprecision(8) 
 	      << v[0] << "d " << v[1] <<"d";
 	  for (int i=0; i<numAnnuli_; i++) {
-	    double r = ptr->mapLenFromRef(annuli_[i][0],sys,ARCSEC);
+	    double r = ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCSEC);
 	    str << ' ' << r << '"';
 	  }
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -280,10 +279,10 @@ void Annulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  if (dec[0]=='+')
 	    dec++;
 
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << ra << ' ' << dec;
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << ra << ' ' << dec;
 	  for (int i=0; i<numAnnuli_; i++) {
-	    double r = ptr->mapLenFromRef(annuli_[i][0],sys,ARCSEC);
+	    double r = ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCSEC);
 	    str << ' ' << r << '"';
 	  }
 	}
@@ -300,11 +299,11 @@ void Annulus::listSAOimage(ostream& str, int strip)
   FitsImage* ptr = parent->findFits();
   listSAOimagePre(str);
 
-  Vector v = ptr->mapFromRef(center,IMAGE);
-  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',';
+  Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',';
 
   for (int i=0; i<numAnnuli_; i++) {
-    double r = ptr->mapLenFromRef(annuli_[i][0],IMAGE);
+    double r = ptr->mapLenFromRef(annuli_[i][0],Coord::IMAGE);
     str << r;
     if (i!=numAnnuli_-1)
       str << ',';
diff --git a/saotk/frame/annulus.h b/saotk/frame/annulus.h
index 9dd65ce..e5b228e 100644
--- a/saotk/frame/annulus.h
+++ b/saotk/frame/annulus.h
@@ -33,10 +33,10 @@ class Annulus : public BaseEllipse {
   void rotate(const Vector& v, int h) {}
   void rotateEnd() {}
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listCiao(ostream&, CoordSystem, int);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void listCiao(ostream&, Coord::CoordSystem, int);
+  void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
   void listSAOimage(ostream&, int);
 
   // special composite funtionality
diff --git a/saotk/frame/base.C b/saotk/frame/base.C
index 97cc6b6..d57306e 100644
--- a/saotk/frame/base.C
+++ b/saotk/frame/base.C
@@ -64,7 +64,7 @@ Base::Base(Tcl_Interp* i, Tk_Canvas c, Tk_Item* item)
   keyContext = NULL;
   keyContextSet =0;
 
-  orientation = NORMAL;
+  orientation = Coord::NORMAL;
   zoom_ = Vector(1,1);
   rotation = 0;
 
@@ -82,8 +82,8 @@ Base::Base(Tcl_Interp* i, Tk_Canvas c, Tk_Item* item)
   pannerWidth = 0;
   pannerHeight = 0;
   pannerName[0] = '\0';
-  pannerSystem = WCS;
-  pannerSky = FK5;
+  pannerSystem = Coord::WCS;
+  pannerSky = Coord::FK5;
   usePanner = 0;
   pannerGC = XCreateGC(display, Tk_WindowId(tkwin), 0, NULL);
   XSetLineAttributes(display, pannerGC, 1, LineSolid, CapButt, JoinMiter);
@@ -99,19 +99,19 @@ Base::Base(Tcl_Interp* i, Tk_Canvas c, Tk_Item* item)
   useMagnifierCursor = 1;
   magnifierColorName = dupstr("white");
 
-  wcsSystem_ = WCS;
-  wcsSky_ = FK5;
-  wcsSkyFormat_ = DEGREES;
+  wcsSystem_ = Coord::WCS;
+  wcsSky_ = Coord::FK5;
+  wcsSkyFormat_ = Coord::DEGREES;
 
   wcsAlign_ = 0;
   wcsAlt_ =0;
 
-  xySystem_ = IMAGE;
-  xySky_ = FK5;
+  xySystem_ = Coord::IMAGE;
+  xySky_ = Coord::FK5;
 
-  wcsOrientation = NORMAL;
+  wcsOrientation = Coord::NORMAL;
   wcsRotation = 0;
-  irafOrientation = (Orientation)-1;
+  irafOrientation = (Coord::Orientation)-1;
 
   maskColorName = dupstr("red");
   maskAlpha = 1;
@@ -249,7 +249,7 @@ Base::~Base()
 void Base::alignWCS()
 {
   if (!wcsAlign_ || !context->cfits || !hasWCS(wcsSystem_)) {
-    wcsOrientation = NORMAL;
+    wcsOrientation = Coord::NORMAL;
     wcsOrientationMatrix.identity();
     wcsRotation = 0;
     return;
@@ -259,10 +259,10 @@ void Base::alignWCS()
 	       &wcsOrientation, &wcsOrientationMatrix, &wcsRotation);
 }
 
-void Base::alignWCS(CoordSystem sys, SkyFrame sky)
+void Base::alignWCS(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!wcsAlign_ || !context->cfits || !hasWCS(sys)) {
-    wcsOrientation = NORMAL;
+    wcsOrientation = Coord::NORMAL;
     wcsOrientationMatrix.identity();
     wcsRotation = 0;
     return;
@@ -272,10 +272,10 @@ void Base::alignWCS(CoordSystem sys, SkyFrame sky)
 	       &wcsOrientation, &wcsOrientationMatrix, &wcsRotation);
 }
 
-void Base::alignWCS(FitsImage* ptr, CoordSystem sys)
+void Base::alignWCS(FitsImage* ptr, Coord::CoordSystem sys)
 {
   if (!wcsAlign_ || !ptr || !context->cfits || !hasWCS(wcsSystem_)) {
-    wcsOrientation = NORMAL;
+    wcsOrientation = Coord::NORMAL;
     wcsOrientationMatrix.identity();
     wcsRotation = 0;
     return;
@@ -286,12 +286,12 @@ void Base::alignWCS(FitsImage* ptr, CoordSystem sys)
 }
 
 void Base::calcAlignWCS(FitsImage* fits1, 
-			CoordSystem sys1, SkyFrame sky,
-			Orientation* orientation, Matrix* oo,
+			Coord::CoordSystem sys1, Coord::SkyFrame sky,
+			Coord::Orientation* orientation, Matrix* oo,
 			double* rotation)
 {
   // init
-  *orientation = NORMAL;
+  *orientation = Coord::NORMAL;
   oo->identity();
   *rotation = 0;
 
@@ -301,10 +301,10 @@ void Base::calcAlignWCS(FitsImage* fits1,
   // orientation
   *orientation = fits1->getWCSOrientation(sys1,sky);
   switch (*orientation) {
-  case NORMAL:
+  case Coord::NORMAL:
     oo->identity();
     break;
-  case XX:
+  case Coord::XX:
     *oo = FlipX();
     break;
   }
@@ -314,12 +314,13 @@ void Base::calcAlignWCS(FitsImage* fits1,
 }
 
 void Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2, 
-			CoordSystem sys1, CoordSystem sys2, SkyFrame sky,
-			Orientation* orientation, Matrix* oo,
+			Coord::CoordSystem sys1, Coord::CoordSystem sys2, 
+			Coord::SkyFrame sky,
+			Coord::Orientation* orientation, Matrix* oo,
 			double* rotation, Vector* zoom)
 {
   // init
-  *orientation = NORMAL;
+  *orientation = Coord::NORMAL;
   oo->identity();
   *rotation = 0;
 
@@ -335,10 +336,10 @@ void Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
   // orientation
   *orientation = fits2->getWCSOrientation(sys2,sky);
   switch (*orientation) {
-  case NORMAL:
+  case Coord::NORMAL:
     oo->identity();
     break;
-  case XX:
+  case Coord::XX:
     *oo = FlipX();
     break;
   }
@@ -359,7 +360,7 @@ void Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
       (east[0]==0 && east[1]==0) ||
       (diff[0]<.01 && diff[1]<.01)) {
     *rotation = 0;
-    *orientation = NORMAL;
+    *orientation = Coord::NORMAL;
     oo->identity();
     return;
   }
@@ -377,7 +378,8 @@ void Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
 }
 
 Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2, 
-			  CoordSystem sys1, CoordSystem sys2, SkyFrame sky)
+			  Coord::CoordSystem sys1, Coord::CoordSystem sys2, 
+			  Coord::SkyFrame sky)
 {
   if ((!fits1 || !fits2) || 
       (fits1 == fits2) ||
@@ -386,38 +388,40 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
     return Matrix();
 
   Vector org1 = fits1->center();
+  //  Vector org1 = fits1->getWCScrpix(sys1);
   Vector orval1 = fits1->pix2wcs(org1,sys1,sky);
 
   Vector org2 = fits2->center();
+  //  Vector org2 = fits2->getWCScrpix(sys2);
   Vector orval2 = fits2->pix2wcs(org2,sys2,sky);
 
   // orientation
-  Orientation orientation =NORMAL;
+  Coord::Orientation orientation =Coord::NORMAL;
   {
-    Orientation o1 = fits1->getWCSOrientation(sys1,sky);
-    Orientation o2 = fits2->getWCSOrientation(sys2,sky);
+    Coord::Orientation o1 = fits1->getWCSOrientation(sys1,sky);
+    Coord::Orientation o2 = fits2->getWCSOrientation(sys2,sky);
 
     switch (o1) {
-    case NORMAL:
+    case Coord::NORMAL:
       {
 	switch (o2) {
-	case NORMAL:
-	  orientation = NORMAL;
+	case Coord::NORMAL:
+	  orientation = Coord::NORMAL;
 	  break;
-	case XX:
-	  orientation = XX;
+	case Coord::XX:
+	  orientation = Coord::XX;
 	  break;
 	}
       }
       break;
-    case XX:
+    case Coord::XX:
       {
 	switch (o2) {
-	case NORMAL:
-	  orientation = XX;
+	case Coord::NORMAL:
+	  orientation = Coord::XX;
 	  break;
-	case XX:
-	  orientation = NORMAL;
+	case Coord::XX:
+	  orientation = Coord::NORMAL;
 	  break;
 	}
       }
@@ -484,7 +488,10 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
 	r2 = -(north.angle()-M_PI_2);
     }
 
-    rotation = r1-r2;
+    if ((fits1->getWCS(sys1))->imflip)
+      rotation = -(r1-r2);
+    else
+      rotation = r1-r2;
   }
 
   // origin
@@ -492,6 +499,8 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
   {
     Vector orpix1 = fits1->wcs2pix(orval2,sys1,sky) * imageToData;
     Vector orpix2 = fits2->wcs2pix(orval2,sys2,sky) * imageToData;
+    //    Vector orpix1 = fits1->getWCScrpix(sys1) * imageToData;
+    //    Vector orpix2 = fits2->getWCScrpix(sys2) * imageToData;
     origin = orpix1 - orpix2;
   }
 
@@ -499,14 +508,17 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
   {
     Matrix flip;
     switch (orientation) {
-    case NORMAL:
+    case Coord::NORMAL:
       break;
-    case XX:
+    case Coord::XX:
       flip = FlipX();
       break;
     }
 
     Vector orpix2 = fits2->wcs2pix(orval2,sys2,sky) * imageToData;
+    //    Vector orpix2 = fits2->center() * imageToData;
+
+    //    cerr << orpix2 << radToDeg(rotation) << origin << endl;
     return
       Translate(-orpix2) *
       flip *
@@ -559,11 +571,11 @@ void Base::centerImage()
   // always center to center of pixel, even for even sized image
   Vector bb = (aa*Translate(.5,.5)).floor();
   // cursor is in REF coords
-  cursor = keyContext->fits->mapToRef(bb,IMAGE,FK5);
+  cursor = keyContext->fits->mapToRef(bb,Coord::IMAGE,Coord::FK5);
 }
 
 void Base::coordToTclArray(FitsImage* ptr, const Vector3d& vv, 
-			   CoordSystem out, Precision pp, 
+			   Coord::CoordSystem out, Precision pp, 
 			   const char* var, const char* base)
 {
   Vector rr = ptr->mapFromRef(vv, out);
@@ -572,7 +584,7 @@ void Base::coordToTclArray(FitsImage* ptr, const Vector3d& vv,
 }
 
 void Base::coord3ToTclArray(FitsImage* ptr, const Vector3d& vv, 
-			    CoordSystem out, Precision pp, 
+			    Coord::CoordSystem out, Precision pp, 
 			    const char* var, const char* base)
 {
   double ss = ptr->mapFromRef3(((Vector3d&)vv)[2]+.5,out,2);
@@ -615,13 +627,13 @@ FitsImage* Base::findFits()
   return keyContext->fits;
 }
 
-FitsImage* Base::findFits(CoordSystem sys, const Vector& vv)
+FitsImage* Base::findFits(Coord::CoordSystem sys, const Vector& vv)
 {
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     return findFits(vv);
   default:
     if (keyContext->fits && keyContext->fits->hasWCSCel(sys))
@@ -758,17 +770,17 @@ int Base::hasLTMV()
   return currentContext->cfits && currentContext->cfits->hasLTMV();
 }
 
-int Base::hasWCS(CoordSystem sys)
+int Base::hasWCS(Coord::CoordSystem sys)
 { 
   return currentContext->cfits && currentContext->cfits->hasWCS(sys);
 }
 
-int Base::hasWCSEqu(CoordSystem sys)
+int Base::hasWCSEqu(Coord::CoordSystem sys)
 { 
   return currentContext->cfits && currentContext->cfits->hasWCSEqu(sys);
 }
 
-int Base::hasWCSCel(CoordSystem sys)
+int Base::hasWCSCel(Coord::CoordSystem sys)
 { 
   return currentContext->cfits && currentContext->cfits->hasWCSCel(sys);
 }
@@ -832,7 +844,7 @@ int Base::isMosaic()
   return currentContext->isMosaic();
 }
 
-FitsImage* Base::isInFits(const Vector& vv, InternalSystem ref, Vector* rv)
+FitsImage* Base::isInFits(const Vector& vv, Coord::InternalSystem ref, Vector* rv)
 {
   Vector ss = mapToRef(vv,ref);
   FitsImage* ptr = currentContext->cfits;
@@ -868,9 +880,9 @@ void Base::invalidPixmap()
   needsUpdate = MATRIX;
 }
 
-Orientation Base::IRAFOrientation(Orientation oo)
+Coord::Orientation Base::IRAFOrientation(Coord::Orientation oo)
 {
-  if (irafOrientation == (Orientation)-1)
+  if (irafOrientation == (Coord::Orientation)-1)
     irafOrientation = oo;
   return irafOrientation;
 }
@@ -1006,9 +1018,9 @@ int Base::postscriptProc(int prepass)
   return TCL_OK;
 }
 
-void Base::printCoordSystem(CoordSystem sys)
+void Base::printCoordSystem(Coord::CoordSystem sys)
 {
-  Tcl_AppendResult(interp, coordSystemStr_[sys], NULL);
+  Tcl_AppendResult(interp, coord.coordSystemStr(sys), NULL);
 }
 
 void Base::printDouble(double d, Precision p)
@@ -1038,19 +1050,19 @@ void Base::printInteger(int i)
   Tcl_AppendResult(interp, str.str().c_str(), NULL);
 }
 
-void Base::printSkyFrame(SkyFrame sky)
+void Base::printSkyFrame(Coord::SkyFrame sky)
 {
-  Tcl_AppendResult(interp, skyFrameStr_[sky], NULL);
+  Tcl_AppendResult(interp, coord.skyFrameStr(sky), NULL);
 }
 
-void Base::printSkyFormat(SkyFormat format)
+void Base::printSkyFormat(Coord::SkyFormat format)
 {
-  Tcl_AppendResult(interp, skyFormatStr_[format], NULL);
+  Tcl_AppendResult(interp, coord.skyFormatStr(format), NULL);
 }
 
-void Base::printSkyDist(SkyDist dist)
+void Base::printSkyDist(Coord::SkyDist dist)
 {
-  Tcl_AppendResult(interp, skyDistStr_[dist], NULL);
+  Tcl_AppendResult(interp, coord.skyDistStr(dist), NULL);
 }
 
 void Base::printVector(const Vector& v, Precision p)
@@ -1077,24 +1089,25 @@ void Base::printVector(const Vector& v, Precision p)
 }
 
 void Base::printFromRef(FitsImage* ptr, const Vector& v,
-			CoordSystem sys, SkyFrame sky, SkyFormat format,
+			Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			Coord::SkyFormat format,
 			Precision p)
 {
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     printVector(ptr->mapFromRef(v, sys, sky), p);
     return;
   default:
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	    printVector(ptr->mapFromRef(v, sys, sky), p);
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    buf[0] = '\0';
@@ -1202,7 +1215,7 @@ void Base::psCrosshair(PSColorSpace mode)
   if (!useCrosshair)
     return;
 
-  Vector rr = mapFromRef(crosshair,WIDGET);
+  Vector rr = mapFromRef(crosshair, Coord::WIDGET);
   Vector aa = Vector(rr[0],1) * widgetToCanvas;
   Vector bb = Vector(rr[0],options->height) * widgetToCanvas;
   Vector cc = Vector(1,rr[1]) * widgetToCanvas;
@@ -1256,7 +1269,7 @@ void Base::psImage(Filter& filter, PSColorSpace mode,
 {
   pushPSMatrices(scale, width, height);
 
-  unsigned char* img = fillImage(width, height, PS);
+  unsigned char* img = fillImage(width, height, Coord::PS);
   if (!img)
     return;
   unsigned char* ptr = img;
@@ -1375,7 +1388,7 @@ void Base::pushPSMatrices(float scale, int width, int height)
   }
 }
 
-void Base::renderContours(Pixmap pm, InternalSystem sys, int width, int height)
+void Base::renderContours(Pixmap pm, Coord::InternalSystem sys, int width, int height)
 {
   // render from back to front
   // aux contours
@@ -1390,7 +1403,7 @@ void Base::renderContours(Pixmap pm, InternalSystem sys, int width, int height)
     currentContext->contour->render(pm, sys, width, height);
 }
 
-void Base::renderCrosshair(Pixmap pm, InternalSystem sys, int width, int height)
+void Base::renderCrosshair(Pixmap pm, Coord::InternalSystem sys, int width, int height)
 {
   if (useCrosshair) {
     Vector rr = mapFromRef(crosshair,sys);
@@ -1429,7 +1442,7 @@ void Base::reset()
   crosshair = cursor;
   invert = 0;
 
-  orientation = NORMAL;
+  orientation = Coord::NORMAL;
   orientationMatrix.identity();
   zoom_ = Vector(1,1);
   rotation = 0;
@@ -1437,7 +1450,7 @@ void Base::reset()
   wcsAlign_ = 0;
   wcsAlt_ =0;
 
-  wcsOrientation = NORMAL;
+  wcsOrientation = Coord::NORMAL;
   wcsOrientationMatrix.identity();
   wcsRotation = 0;
   
@@ -1521,7 +1534,7 @@ void Base::unloadFits()
     delete grid;
   grid = NULL;
 
-  irafOrientation = (Orientation)-1;
+  irafOrientation = (Coord::Orientation)-1;
 
   updateColorScale();
 }
@@ -1593,7 +1606,7 @@ void Base::updateBase()
   }
 
   if (doRender())
-    ximageToPixmap(basePixmap, baseXImage, WIDGET);
+    ximageToPixmap(basePixmap, baseXImage, Coord::WIDGET);
   else {
     XSetForeground(display, gc, getColor(bgColorName));
     XFillRectangle(display, basePixmap, gc, 0,0,options->width,options->height);
@@ -1740,11 +1753,11 @@ void Base::updateMagnifier(const Vector& vv)
 
 	// render crosshair
 	if (useCrosshair)
-	  renderCrosshair(magnifierPixmap, MAGNIFIER, 
+	  renderCrosshair(magnifierPixmap, Coord::MAGNIFIER, 
 			  magnifierWidth, magnifierHeight);
 
 	// render contours
-	renderContours(magnifierPixmap, MAGNIFIER, 
+	renderContours(magnifierPixmap, Coord::MAGNIFIER, 
 		       magnifierWidth, magnifierHeight);
       }
 
@@ -1908,7 +1921,7 @@ void Base::updatePanner()
 {
   if (usePanner) {
     if (doRender())
-      ximageToPixmap(pannerPixmap, pannerXImage, PANNER);
+      ximageToPixmap(pannerPixmap, pannerXImage, Coord::PANNER);
     else {
       XSetForeground(display, pannerGC, getColor(bgColorName));
       XFillRectangle(display, pannerPixmap, pannerGC, 0, 0,
@@ -1978,7 +1991,7 @@ void Base::updatePM(const BBox& bbox)
     grid->render();
 
   // contours
-  renderContours(pixmap, WIDGET, options->width, options->height);
+  renderContours(pixmap, Coord::WIDGET, options->width, options->height);
 
   // markers
   if (showMarkers) {
@@ -1987,7 +2000,7 @@ void Base::updatePM(const BBox& bbox)
   }
 
   // crosshair
-  renderCrosshair(pixmap, WIDGET, options->width, options->height);
+  renderCrosshair(pixmap, Coord::WIDGET, options->width, options->height);
 
   // highlite bbox
   renderHighlite();
@@ -2006,7 +2019,7 @@ char* Base::varcat(char* buf, char* base, char id, char* mod)
   return buf;
 }
 
-void Base::ximageToPixmap(Pixmap pmap, XImage* xmap, InternalSystem sys)
+void Base::ximageToPixmap(Pixmap pmap, XImage* xmap, Coord::InternalSystem sys)
 {
   buildXImage(xmap, sys);
   XPutImage(display, pmap, gc, xmap, 0, 0, 0, 0, xmap->width, xmap->height);
@@ -2014,7 +2027,7 @@ void Base::ximageToPixmap(Pixmap pmap, XImage* xmap, InternalSystem sys)
 
 void Base::ximageToPixmapMagnifier()
 {
-  ximageToPixmap (magnifierPixmap, magnifierXImage, MAGNIFIER);
+  ximageToPixmap (magnifierPixmap, magnifierXImage, Coord::MAGNIFIER);
 }
 
 #ifdef _MACOSX
@@ -2174,7 +2187,7 @@ void Base::win32Crosshair()
   if (!useCrosshair)
     return;
 
-  Vector rr = mapFromRef(crosshair,WIDGET);
+  Vector rr = mapFromRef(crosshair,Coord::WIDGET);
   Vector aa = Vector(rr[0],1) * widgetToCanvas;
   Vector bb = Vector(rr[0],options->height) * widgetToCanvas;
   Vector cc = Vector(1,rr[1]) * widgetToCanvas;
@@ -2196,7 +2209,7 @@ void Base::win32Image(float scale, int width, int height,
   pushPSMatrices(scale, width, height);
 
   // source
-  unsigned char* src = fillImage(width, height, PS);
+  unsigned char* src = fillImage(width, height, Coord::PS);
   if (!src)
     return;
 
diff --git a/saotk/frame/base.h b/saotk/frame/base.h
index 600d485..8794682 100644
--- a/saotk/frame/base.h
+++ b/saotk/frame/base.h
@@ -19,6 +19,7 @@
 #include "list.h"
 #include "tag.h"
 #include "util.h"
+#include "point.h"
 
 extern int DebugAST;
 extern int DebugMosaic;
@@ -66,15 +67,7 @@ class EllipseAnnulus;
 class Epanda;
 class Line;
 class Point;
-class CirclePoint;
-class BoxPoint;
-class DiamondPoint;
-class CrossPoint;
-class ExPoint;
-class ArrowPoint;
-class BoxCirclePoint;
 class Projection;
-class Circle3d;
 class Polygon;
 class Ruler;
 class Text;
@@ -109,15 +102,7 @@ class Base : public Widget {
   friend class Epanda;
   friend class Line;
   friend class Point;
-  friend class CirclePoint;
-  friend class BoxPoint;
-  friend class DiamondPoint;
-  friend class CrossPoint;
-  friend class ExPoint;
-  friend class ArrowPoint;
-  friend class BoxCirclePoint;
   friend class Projection;
-  friend class Circle3d;
   friend class Polygon;
   friend class Ruler;
   friend class Text;
@@ -133,10 +118,11 @@ public:
   enum UpdateType {MATRIX, BASE, PIXMAP, NOUPDATE};
 
   enum MemType {ALLOC, ALLOCGZ, CHANNEL, MMAP, SMMAP, MMAPINCR, 
-		SHARE, SSHARE, SOCKET, SOCKETGZ, VAR, HIST, COMPRESS};
+		SHARE, SSHARE, SOCKET, SOCKETGZ, VAR, HIST, COMPRESS, PHOTO};
   enum MosaicType {NOMOSAIC, IRAF, WCSMOSAIC, WFPC2};
   enum LayerType {IMG, MASK};
   enum LoadMethod {LOADALL, INCR};
+  enum Precision {DEFAULT, FIXED, SCIENTIFIC, INTEGER};
 
  private:
   InverseScale* inverseScale;
@@ -178,7 +164,7 @@ public:
   Context* keyContext;
   int keyContextSet;
 
-  Orientation orientation;   // current image orientation
+  Coord::Orientation orientation;   // current image orientation
   Matrix orientationMatrix;  // current image orientation matrix
   double rotation;           // current image rotation angle
 
@@ -199,8 +185,8 @@ public:
   int pannerWidth;           // panner width
   int pannerHeight;          // panner height
   char pannerName[32];       // panner widget name
-  CoordSystem pannerSystem;  // panner wcs coord system
-  SkyFrame pannerSky;        // panner wcs sky frame
+  Coord::CoordSystem pannerSystem;  // panner wcs coord system
+  Coord::SkyFrame pannerSky;        // panner wcs sky frame
   int usePanner;             // panner status
   GC pannerGC;
 
@@ -219,20 +205,20 @@ public:
   Vector cropBegin;
   Vector cropEnd;
 
-  CoordSystem wcsSystem_;
-  SkyFrame wcsSky_;
-  SkyFormat wcsSkyFormat_;
+  Coord::CoordSystem wcsSystem_;
+  Coord::SkyFrame wcsSky_;
+  Coord::SkyFormat wcsSkyFormat_;
 
   int wcsAlt_; // flag to indicate an alternative wcs current
   int wcsAlign_; // flag to indicate wcs alignment
 
-  CoordSystem xySystem_; // default marker sys (RAWXY)
-  SkyFrame xySky_; // default marker sky (RAWXY)
+  Coord::CoordSystem xySystem_; // default marker sys (RAWXY)
+  Coord::SkyFrame xySky_; // default marker sky (RAWXY)
 
-  Orientation wcsOrientation; // wcs image orientation
+  Coord::Orientation wcsOrientation; // wcs image orientation
   Matrix wcsOrientationMatrix; // wcs image orientation matrix
   double wcsRotation; // wcs image rotation angle
-  Orientation irafOrientation; // orientation of first iraf segment
+  Coord::Orientation irafOrientation; // orientation of first iraf segment
 
   char* maskColorName;
   float maskAlpha;
@@ -331,23 +317,19 @@ public:
 
  protected:
   virtual void alignWCS();
-  virtual void alignWCS(CoordSystem, SkyFrame);
-  virtual void alignWCS(FitsImage*, CoordSystem);
+  virtual void alignWCS(Coord::CoordSystem, Coord::SkyFrame);
+  virtual void alignWCS(FitsImage*, Coord::CoordSystem);
 
-  void bltCut(char*, char*, Orientation, const Vector&);
-  void bltCutFits(double*, double*, int, Orientation, const Vector&);
-  void bltProjection(char*, char*, char*, char*, Projection*);
-  int bltProjFits(double**, double**, double**, double**, Projection*);
-  void bltCircle3d(char*, char*, char*, Circle3d*);
-  int bltCircle3dFits(double**, double**, double**, Circle3d*);
-  virtual void buildXImage(XImage*, InternalSystem) =0;
+  void bltCut(char*, char*, Coord::Orientation, const Vector&);
+  void bltCutFits(double*, double*, int, Coord::Orientation, const Vector&);
+  virtual void buildXImage(XImage*, Coord::InternalSystem) =0;
 
   virtual void centerImage();
   double calcZoom(Vector,Vector);
   virtual double calcZoomPanner() =0;
-  void coordToTclArray(FitsImage*, const Vector3d&, CoordSystem, Precision, 
+  void coordToTclArray(FitsImage*, const Vector3d&, Coord::CoordSystem, Precision, 
 		       const char*, const char*);
-  void coord3ToTclArray(FitsImage*, const Vector3d&, CoordSystem, Precision, 
+  void coord3ToTclArray(FitsImage*, const Vector3d&, Coord::CoordSystem, Precision, 
 			const char*, const char*);
   void createMarker(Marker*);
   void createTemplate(const Vector&, istream&);
@@ -360,27 +342,27 @@ public:
   virtual void encodeTrueColor(XColor*, char*) =0;
   virtual void encodeTrueColor(unsigned char*, XImage*) =0;
 
-  virtual unsigned char* fillImage(int, int, InternalSystem) =0;
+  virtual unsigned char* fillImage(int, int, Coord::InternalSystem) =0;
 
-  Orientation getOrientation() {return orientation;}
+  Coord::Orientation getOrientation() {return orientation;}
   double getRotation() {return rotation + wcsRotation;}
-  Orientation getWCSOrientation() {return wcsOrientation;}
+  Coord::Orientation getWCSOrientation() {return wcsOrientation;}
 
   int hasATMV();
   int hasContour();
   int hasContourAux();
   int hasDTMV();
   int hasLTMV();
-  int hasWCS(CoordSystem);
-  int hasWCSEqu(CoordSystem); 
-  int hasWCSCel(CoordSystem); 
+  int hasWCS(Coord::CoordSystem);
+  int hasWCSEqu(Coord::CoordSystem); 
+  int hasWCSCel(Coord::CoordSystem); 
 
   virtual BBox imageBBox(FrScale::ScanMode);
   Vector imageCenter(FrScale::ScanMode);
   Vector imageSize(FrScale::ScanMode);
 
   virtual int isIIS();
-  FitsImage* isInFits(const Vector&, InternalSystem, Vector*);
+  FitsImage* isInFits(const Vector&, Coord::InternalSystem, Vector*);
   virtual int isAzElZero() {return 1;}
   virtual int isFrame() {return 0;}
   virtual int isFrame3d() {return 0;}
@@ -388,39 +370,43 @@ public:
 
   void loadDone(int, LayerType);
 
-  double mapDistFromRef(const Vector&, const Vector&, InternalSystem);
-  double mapLenFromRef(double, InternalSystem);
-  Vector mapLenFromRef(const Vector&, InternalSystem);
-  double mapLenToRef(double, InternalSystem);
-  Vector mapLenToRef(const Vector&, InternalSystem);
-  void markerListHeader(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void markerListXMLHeader(ostream&, CoordSystem, SkyFrame, SkyFormat);
+  int markerAnalysisPlot2d(double**, double**, double**, double**, Marker*,
+			   Vector&, Vector&, int);
+  int markerAnalysisPlot3d(double**, double**, Marker*, const BBox&);
+
+  double mapDistFromRef(const Vector&, const Vector&, Coord::InternalSystem);
+  double mapLenFromRef(double, Coord::InternalSystem);
+  Vector mapLenFromRef(const Vector&, Coord::InternalSystem);
+  double mapLenToRef(double, Coord::InternalSystem);
+  Vector mapLenToRef(const Vector&, Coord::InternalSystem);
+  void markerListHeader(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  void markerListXMLHeader(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
   void markerListXMLFooter(ostream&);
-  void markerListCiaoHeader(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void markerListSAOtngHeader(ostream&,CoordSystem, SkyFrame, SkyFormat, int);
-  void markerPrintCoord(const Vector&, InternalSystem);
+  void markerListCiaoHeader(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  void markerListSAOtngHeader(ostream&,Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  void markerPrintCoord(const Vector&, Coord::InternalSystem);
   void markerPrintCoord(const Vector&, const Vector&,
-			CoordSystem, SkyFrame, SkyFormat);
-  void markerPrintDouble(double, InternalSystem);
-  void markerPrintDouble(const Vector&, double, CoordSystem, SkyDist);
-  void markerPrintDouble(const Vector&, const Vector&, InternalSystem);
+			Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void markerPrintDouble(double, Coord::InternalSystem);
+  void markerPrintDouble(const Vector&, double, Coord::CoordSystem, Coord::SkyDist);
+  void markerPrintDouble(const Vector&, const Vector&, Coord::InternalSystem);
   void markerPrintDouble(const Vector&, const Vector&, const Vector&, 
-			 CoordSystem, SkyDist);
-  void markerPrintVector(const Vector&,InternalSystem);
-  void markerPrintVector(const Vector&, const Vector&, CoordSystem, SkyDist);
+			 Coord::CoordSystem, Coord::SkyDist);
+  void markerPrintVector(const Vector&,Coord::InternalSystem);
+  void markerPrintVector(const Vector&, const Vector&, Coord::CoordSystem, Coord::SkyDist);
   void markerUndo(Marker*, UndoMarkerType);
 
   void parseMarker(MarkerFormat,istream&);
   FitsHead* parseWCS(istream&);
   int postscriptProc(int prepass);
-  void printCoordSystem(CoordSystem);
+  void printCoordSystem(Coord::CoordSystem);
   void printDouble(double, Precision);
-  void printFromRef(FitsImage*, const Vector&, CoordSystem, SkyFrame,
-		    SkyFormat, Precision);
+  void printFromRef(FitsImage*, const Vector&, Coord::CoordSystem, Coord::SkyFrame,
+		    Coord::SkyFormat, Precision);
   void printInteger(int);
-  void printSkyFrame(SkyFrame);
-  void printSkyFormat(SkyFormat);
-  void printSkyDist(SkyDist);
+  void printSkyFrame(Coord::SkyFrame);
+  void printSkyFormat(Coord::SkyFormat);
+  void printSkyDist(Coord::SkyDist);
   void printVector(const Vector&, Precision);
   void ps();
   void psContours(PSColorSpace);
@@ -434,8 +420,8 @@ public:
   virtual void pushPannerMatrices();
   virtual void pushPSMatrices(float, int, int);
 
-  void renderContours(Pixmap, InternalSystem, int, int);
-  void renderCrosshair(Pixmap, InternalSystem, int, int);
+  void renderContours(Pixmap, Coord::InternalSystem, int, int);
+  void renderCrosshair(Pixmap, Coord::InternalSystem, int, int);
   void renderDash(GC, int);
   virtual void renderHighlite();
   void renderMagnifierMarkers(List<Marker>*, const BBox& bb);
@@ -487,14 +473,14 @@ public:
   void xmlSetProps(unsigned short*, unsigned short, char*);
   int xmlCount(const char*);
   Vector xmlPoint(FitsImage*, const char* x, const char* y, 
-		  CoordSystem sys, SkyFrame sky, SkyFormat format, int which=0);
+		  Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, int which=0);
   List<Vertex>* xmlVertex(FitsImage*, const char*, const char*, 
-			  CoordSystem, SkyFrame, SkyFormat);
-  double xmlAngle(const char*, int, double, AngleFormat, CoordSystem, SkyFrame);
-  double* xmlAngles(const char*, int, double, int, AngleFormat, CoordSystem, SkyFrame);
-  double* xmlDistance(FitsImage*, const char*, int, CoordSystem, SkyDist);
-  Vector* xmlDistance(FitsImage*, const char*, const char*, int, CoordSystem, SkyDist);
-  void ximageToPixmap(Pixmap pmap, XImage* xmap, InternalSystem);
+			  Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  double xmlAngle(const char*, int, double, Coord::AngleFormat, Coord::CoordSystem, Coord::SkyFrame);
+  double* xmlAngles(const char*, int, double, int, Coord::AngleFormat, Coord::CoordSystem, Coord::SkyFrame);
+  double* xmlDistance(FitsImage*, const char*, int, Coord::CoordSystem, Coord::SkyDist);
+  Vector* xmlDistance(FitsImage*, const char*, const char*, int, Coord::CoordSystem, Coord::SkyDist);
+  void ximageToPixmap(Pixmap pmap, XImage* xmap, Coord::InternalSystem);
   virtual void ximageToPixmapMagnifier();
 
   Vector zoom() {return zoom_;}
@@ -520,43 +506,43 @@ public:
   Base(Tcl_Interp* i, Tk_Canvas c, Tk_Item* item);
   virtual ~Base();
 
-  void calcAlignWCS(FitsImage*, CoordSystem, SkyFrame,
-		    Orientation*, Matrix*, double*);
-  void calcAlignWCS(FitsImage*, FitsImage*, CoordSystem, CoordSystem, SkyFrame,
-		    Orientation*, Matrix*, double*, Vector*);
-  Matrix calcAlignWCS(FitsImage*, FitsImage*, CoordSystem, CoordSystem, SkyFrame);
+  void calcAlignWCS(FitsImage*, Coord::CoordSystem, Coord::SkyFrame,
+		    Coord::Orientation*, Matrix*, double*);
+  void calcAlignWCS(FitsImage*, FitsImage*, Coord::CoordSystem, Coord::CoordSystem, Coord::SkyFrame,
+		    Coord::Orientation*, Matrix*, double*, Vector*);
+  Matrix calcAlignWCS(FitsImage*, FitsImage*, Coord::CoordSystem, Coord::CoordSystem, Coord::SkyFrame);
   Vector centroid(const Vector&);
 
   FitsImage* findFits();
-  FitsImage* findFits(CoordSystem, const Vector&);
+  FitsImage* findFits(Coord::CoordSystem, const Vector&);
   FitsImage* findFits(const Vector&);
   FitsImage* findFits(int);
   int findFits(FitsImage*);
   FitsImage* findAllFits(int);
   int fitsCount();
 
-  Orientation IRAFOrientation(Orientation);
+  Coord::Orientation IRAFOrientation(Coord::Orientation);
   int isMosaic();
   int isCube();
   int isBinTable();
 
-  virtual Vector mapFromRef(const Vector&, InternalSystem) =0;
-  virtual Vector3d mapFromRef3d(const Vector&, InternalSystem) =0;
-  virtual Vector mapToRef(const Vector&, InternalSystem) =0;
-  virtual Vector3d mapToRef3d(const Vector&, InternalSystem) =0;
-  double mapAngleFromRef(double, CoordSystem, SkyFrame =FK5);
-  double mapAngleToRef(double, CoordSystem, SkyFrame =FK5);
+  virtual Vector mapFromRef(const Vector&, Coord::InternalSystem) =0;
+  virtual Vector3d mapFromRef3d(const Vector&, Coord::InternalSystem) =0;
+  virtual Vector mapToRef(const Vector&, Coord::InternalSystem) =0;
+  virtual Vector3d mapToRef3d(const Vector&, Coord::InternalSystem) =0;
+  double mapAngleFromRef(double, Coord::CoordSystem, Coord::SkyFrame =Coord::FK5);
+  double mapAngleToRef(double, Coord::CoordSystem, Coord::SkyFrame =Coord::FK5);
 
   int parse(istringstream&);
 
   void resetCompositeMarker() {compositeMarker = NULL;}
 
-  CoordSystem wcsSystem() {return wcsSystem_;}
-  SkyFrame wcsSky() {return wcsSky_;}
-  SkyFormat wcsSkyFormat() {return wcsSkyFormat_;}
+  Coord::CoordSystem wcsSystem() {return wcsSystem_;}
+  Coord::SkyFrame wcsSky() {return wcsSky_;}
+  Coord::SkyFormat wcsSkyFormat() {return wcsSkyFormat_;}
 
-  CoordSystem xySystem() {return xySystem_;}
-  SkyFrame xySky() {return xySky_;}
+  Coord::CoordSystem xySystem() {return xySystem_;}
+  Coord::SkyFrame xySky() {return xySky_;}
 
   // Background Commands
   void bgColorCmd(const char*);
@@ -592,6 +578,7 @@ public:
   void getBinColsMinMaxCmd(const char*);
   void getBinColsDimCmd(const char*);
   void getBinListCmd();
+  void hasBinColCmd(const char*);
 
   // Clip Commands
   void clipMinMaxModeCmd(FrScale::MinMaxMode);
@@ -639,14 +626,14 @@ public:
   // Contour Commands
   void contourAuxHeadCmd();
   void contourAuxNextCmd();
-  void contourAuxSaveCmd(const char*, CoordSystem, SkyFrame);
-  void contourCopyCmd(CoordSystem, SkyFrame);
+  void contourAuxSaveCmd(const char*, Coord::CoordSystem, Coord::SkyFrame);
+  void contourCopyCmd(Coord::CoordSystem, Coord::SkyFrame);
   void contourCreateCmd(const char*, int, int, FVContour::Method, int, int, FrScale::ColorScaleType, float, float, Vector, const char*);
   void contourDeleteCmd();
   void contourDeleteAllCmd();
-  void contourLoadCmd(const char*, int, int, const char*, CoordSystem,SkyFrame);
-  void contourPasteCmd(const char*, int, int, void*, CoordSystem, SkyFrame);
-  void contourSaveCmd(const char*, CoordSystem, SkyFrame);
+  void contourLoadCmd(const char*, int, int, const char*, Coord::CoordSystem,Coord::SkyFrame);
+  void contourPasteCmd(const char*, int, int, void*, Coord::CoordSystem, Coord::SkyFrame);
+  void contourSaveCmd(const char*, Coord::CoordSystem, Coord::SkyFrame);
   void contourSetDashCmd(int);
   void contourSetColorCmd(const char*);
   void contourSetLineWidthCmd(int);
@@ -654,7 +641,7 @@ public:
   void getContourAuxColorNameCmd();
   void getContourAuxDashCmd();
   void getContourAuxLineWidthCmd();
-  void getContourCmd(CoordSystem sys, SkyFrame sky);
+  void getContourCmd(Coord::CoordSystem sys, Coord::SkyFrame sky);
   void getContourClipCmd();
   void getContourClipModeCmd();
   void getContourColorNameCmd();
@@ -671,48 +658,48 @@ public:
 
   // Coordinate Commands
   void getWCSCmd();
-  void wcsCmd(CoordSystem, SkyFrame, SkyFormat);
-  void getWCSNameCmd(CoordSystem);
+  void wcsCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void getWCSNameCmd(Coord::CoordSystem);
   void getWCSAlignCmd();
   void getWCSAlignPointerCmd();
-  void getCoordCmd(const Vector&, CoordSystem, SkyFrame, SkyFormat);
-  void getCoordFromRefCmd(double, CoordSystem, int);
-  void getCoordToRefCmd(double, CoordSystem, int);
-  virtual void getCursorCmd(InternalSystem) =0;
-  virtual void getCursorCmd(CoordSystem, SkyFrame, SkyFormat, Precision) =0;
-  void hasSystemCmd(CoordSystem);
+  void getCoordCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void getCoordFromRefCmd(double, Coord::CoordSystem, int);
+  void getCoordToRefCmd(double, Coord::CoordSystem, int);
+  virtual void getCursorCmd(Coord::InternalSystem) =0;
+  virtual void getCursorCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Precision) =0;
+  void hasSystemCmd(Coord::CoordSystem);
   void hasAmplifierCmd();
   void hasDetectorCmd();
   void hasPhysicalCmd();
   void hasWCSAltCmd();
-  void hasWCSCmd(CoordSystem);
-  void hasWCSEquCmd(CoordSystem);
-  void hasWCSCelCmd(CoordSystem);
+  void hasWCSCmd(Coord::CoordSystem);
+  void hasWCSEquCmd(Coord::CoordSystem);
+  void hasWCSCelCmd(Coord::CoordSystem);
 
   // Crop Commands
   void cropCmd();
-  void cropCmd(const Vector&, const Vector&, CoordSystem, SkyFrame);
-  void cropCenterCmd(const Vector&, CoordSystem, SkyFrame, const Vector&, CoordSystem, SkyDist);
+  void cropCmd(const Vector&, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
+  void cropCenterCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame, const Vector&, Coord::CoordSystem, Coord::SkyDist);
   void cropBeginCmd(const Vector&);
   void cropMotionCmd(const Vector&);
   void cropEndCmd(const Vector&);
   void crop3dCmd();
-  void crop3dCmd(double, double, CoordSystem);
+  void crop3dCmd(double, double, Coord::CoordSystem);
   virtual void crop3dBeginCmd(const Vector&, int) {}
   virtual void crop3dMotionCmd(const Vector&, int) {}
   virtual void crop3dEndCmd(const Vector&, int) {}
-  void getCropCmd(CoordSystem, SkyFrame, SkyFormat);
-  void getCropCenterCmd(CoordSystem, SkyFrame, SkyFormat, CoordSystem, SkyDist);
-  void getCrop3dCmd(CoordSystem);
+  void getCropCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void getCropCenterCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Coord::CoordSystem, Coord::SkyDist);
+  void getCrop3dCmd(Coord::CoordSystem);
   void hasCropCmd();
 
   // CrossHair Commands
   void crosshairCmd(int);
-  void crosshairCmd(const Vector&, InternalSystem);
-  void crosshairCmd(const Vector&, CoordSystem, SkyFrame =FK5);
+  void crosshairCmd(const Vector&, Coord::InternalSystem);
+  void crosshairCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame =Coord::FK5);
   void crosshairWarpCmd(const Vector&);
-  void getCrosshairCmd(InternalSystem);
-  void getCrosshairCmd(CoordSystem, SkyFrame, SkyFormat, Precision);
+  void getCrosshairCmd(Coord::InternalSystem);
+  void getCrosshairCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Precision);
   void getCrosshairStatusCmd();
 
   // DATASEC Commands
@@ -721,26 +708,26 @@ public:
   void hasDATASECCmd();
 
   // Data Values
-  void getDataValuesCmd(int, const Vector&, CoordSystem, 
-			SkyFrame, const Vector&, char*);
-  void getDataValuesCmd(const Vector&, InternalSystem, const Vector&);
+  void getDataValuesCmd(int, const Vector&, Coord::CoordSystem, 
+			Coord::SkyFrame, const Vector&, char*);
+  void getDataValuesCmd(const Vector&, Coord::InternalSystem, const Vector&);
 
   // Fits Commands
   void getBitpixCmd();
   void getFitsNAxesCmd();
   void getFitsCountCmd();
-  void getFitsCenterCmd(CoordSystem, SkyFrame, SkyFormat, Precision);
+  void getFitsCenterCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Precision);
   void getFitsDepthCmd(int);
-  void getFitsExtCmd(const Vector&, InternalSystem);
+  void getFitsExtCmd(const Vector&, Coord::InternalSystem);
   void getFitsFileNameCmd(FileNameType);
   void getFitsFileNameCmd(int,FileNameType);
-  void getFitsFileNameCmd(const Vector&, InternalSystem, FileNameType);
+  void getFitsFileNameCmd(const Vector&, Coord::InternalSystem, FileNameType);
   void getFitsHeaderCmd(int);
   void getFitsHeaderWCSCmd(int);
   void getFitsHeaderKeywordCmd(int,const char*);
   void getFitsObjectNameCmd();
   void getFitsSizeCmd();
-  void getFitsSizeCmd(CoordSystem, SkyFrame, SkyDist, Precision);
+  void getFitsSizeCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyDist, Precision);
   void getFitsSliceCmd(int);
   void hasFitsCmd();
   void hasFitsHPXCmd();
@@ -770,6 +757,8 @@ public:
   void loadArrSocketGZCmd(int, const char*, LayerType);
   void loadArrVarCmd(const char*, const char*, LayerType);
 
+  virtual void loadPhotoCmd(const char*, const char*);
+
   void loadExtCubeAllocCmd(const char*, const char*);
   void loadExtCubeAllocGZCmd(const char*, const char*);
   void loadExtCubeChannelCmd(const char*, const char*);
@@ -792,47 +781,47 @@ public:
   void loadSliceSocketGZCmd(int, const char*);
   void loadSliceVarCmd(const char*, const char*, LoadMethod);
 
-  void loadMosaicImageAllocCmd(MosaicType, CoordSystem, const char*, 
+  void loadMosaicImageAllocCmd(MosaicType, Coord::CoordSystem, const char*, 
 			       const char*, LayerType);
 
-  void loadMosaicImageAllocGZCmd(MosaicType, CoordSystem, const char*, 
+  void loadMosaicImageAllocGZCmd(MosaicType, Coord::CoordSystem, const char*, 
 				 const char*, LayerType);
-  void loadMosaicImageChannelCmd(MosaicType, CoordSystem, const char*, 
+  void loadMosaicImageChannelCmd(MosaicType, Coord::CoordSystem, const char*, 
 				 const char*, LayerType);
-  void loadMosaicImageMMapCmd(MosaicType, CoordSystem, const char*, 
+  void loadMosaicImageMMapCmd(MosaicType, Coord::CoordSystem, const char*, 
 			      LoadMethod, LayerType);
-  void loadMosaicImageMMapIncrCmd(MosaicType, CoordSystem, const char*, 
+  void loadMosaicImageMMapIncrCmd(MosaicType, Coord::CoordSystem, const char*, 
 				  LoadMethod, LayerType);
-  void loadMosaicImageShareCmd(MosaicType, CoordSystem, ShmType, int, 
+  void loadMosaicImageShareCmd(MosaicType, Coord::CoordSystem, ShmType, int, 
 			       const char*, LoadMethod, LayerType);
-  void loadMosaicImageSocketCmd(MosaicType, CoordSystem, int, const char*, 
+  void loadMosaicImageSocketCmd(MosaicType, Coord::CoordSystem, int, const char*, 
 				LayerType);
-  void loadMosaicImageSocketGZCmd(MosaicType, CoordSystem, int, const char*, 
+  void loadMosaicImageSocketGZCmd(MosaicType, Coord::CoordSystem, int, const char*, 
 				  LayerType);
-  void loadMosaicImageVarCmd(MosaicType, CoordSystem, const char*,const char*, 
+  void loadMosaicImageVarCmd(MosaicType, Coord::CoordSystem, const char*,const char*, 
 			     LoadMethod, LayerType);
 
-  void loadMosaicAllocCmd(MosaicType, CoordSystem, const char*, const char*, 
+  void loadMosaicAllocCmd(MosaicType, Coord::CoordSystem, const char*, const char*, 
 			  LayerType);
-  void loadMosaicAllocGZCmd(MosaicType, CoordSystem, const char*, const char*,
+  void loadMosaicAllocGZCmd(MosaicType, Coord::CoordSystem, const char*, const char*,
 			    LayerType);
-  void loadMosaicChannelCmd(MosaicType, CoordSystem, const char*, const char*,
+  void loadMosaicChannelCmd(MosaicType, Coord::CoordSystem, const char*, const char*,
 			    LayerType);
-  void loadMosaicMMapCmd(MosaicType, CoordSystem, const char*, LoadMethod,
+  void loadMosaicMMapCmd(MosaicType, Coord::CoordSystem, const char*, LoadMethod,
 			 LayerType);
-  void loadMosaicSMMapCmd(MosaicType, CoordSystem, const char*, const char*,
+  void loadMosaicSMMapCmd(MosaicType, Coord::CoordSystem, const char*, const char*,
 			  LoadMethod, LayerType);
-  void loadMosaicMMapIncrCmd(MosaicType, CoordSystem, const char*, LoadMethod,
+  void loadMosaicMMapIncrCmd(MosaicType, Coord::CoordSystem, const char*, LoadMethod,
 			     LayerType);
-  void loadMosaicShareCmd(MosaicType, CoordSystem, ShmType, int, const char*,
+  void loadMosaicShareCmd(MosaicType, Coord::CoordSystem, ShmType, int, const char*,
 			  LoadMethod, LayerType);
-  void loadMosaicSShareCmd(MosaicType, CoordSystem, ShmType, int, int,
+  void loadMosaicSShareCmd(MosaicType, Coord::CoordSystem, ShmType, int, int,
 			   const char*, LoadMethod, LayerType);
-  void loadMosaicSocketCmd(MosaicType, CoordSystem, int, const char*,
+  void loadMosaicSocketCmd(MosaicType, Coord::CoordSystem, int, const char*,
 			   LayerType);
-  void loadMosaicSocketGZCmd(MosaicType, CoordSystem, int, const char*,
+  void loadMosaicSocketGZCmd(MosaicType, Coord::CoordSystem, int, const char*,
 			     LayerType);
-  void loadMosaicVarCmd(MosaicType, CoordSystem, const char*, const char*,
+  void loadMosaicVarCmd(MosaicType, Coord::CoordSystem, const char*, const char*,
 			LoadMethod, LayerType);
 
   void loadMosaicImageWFPC2AllocCmd(const char*, const char*);
@@ -878,6 +867,8 @@ public:
   virtual void loadArrRGBCubeSocketGZCmd(int, const char*) {}
   virtual void loadArrRGBCubeVarCmd(const char*, const char*) {}
 
+  virtual void savePhotoCmd(const char*) {}
+
   void saveFitsImageFileCmd(const char*, int);
   void saveFitsImageChannelCmd(const char*, int);
   void saveFitsImageSocketCmd(int, int);
@@ -909,11 +900,11 @@ public:
   void warpToCmd(const Vector&);
 
   // Graph Commands
-  void getHorzCutCmd(char*, char*, const Vector&, InternalSystem);
-  void getVertCutCmd(char*, char*, const Vector&, InternalSystem);
+  void getHorzCutCmd(char*, char*, const Vector&, Coord::InternalSystem);
+  void getVertCutCmd(char*, char*, const Vector&, Coord::InternalSystem);
 
   // Grid Commands
-  virtual void gridCmd(CoordSystem, SkyFrame, SkyFormat, Grid::GridType, const char*) =0;
+  virtual void gridCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Grid::GridType, const char*) =0;
   void gridDeleteCmd();
   void getGridCmd();
   void getGridOptionCmd();
@@ -930,8 +921,8 @@ public:
   virtual void iisGetFileNameCmd(const Vector&) {}
   virtual void iisMessageCmd(const char*) {}
   virtual void iisSetCmd(const char*, int, int, int, int) {}
-  virtual void iisSetCursorCmd(const Vector&, InternalSystem) {}
-  virtual void iisSetCursorCmd(const Vector&, CoordSystem) {}
+  virtual void iisSetCursorCmd(const Vector&, Coord::InternalSystem) {}
+  virtual void iisSetCursorCmd(const Vector&, Coord::CoordSystem) {}
   virtual void iisSetFileNameCmd(const char*) {}
   virtual void iisSetFileNameCmd(const char*,int) {}
   virtual void iisUpdateCmd() {}
@@ -940,9 +931,9 @@ public:
 
   // Info Commands
   void getInfoCmd(char*);
-  virtual void getInfoCmd(const Vector&, InternalSystem, char*);
+  virtual void getInfoCmd(const Vector&, Coord::InternalSystem, char*);
   void getInfoClipCmd();
-  void getValueCmd(const Vector&, InternalSystem);
+  void getValueCmd(const Vector&, Coord::InternalSystem);
 
   // loadIncr is only used by LICK OBS
   // maintained for backward compatibility
@@ -960,38 +951,94 @@ public:
   void updateMagnifierCmd(const Vector& v);
 
   // Marker Commands
+  // Basic Regions
   void createCircleCmd(const Vector&, 
 		       double,
 		       const char*, int*, int, const char*, 
 		       const char*, unsigned short, const char*,
 		       const List<Tag>&, const List<CallBack>& cb);
-  void createAnnulusCmd(const Vector&, 
-			double, double, int,
+  void createEllipseCmd(const Vector&, 
+			const Vector&, 
+			double, 
 			const char*, int*, int, const char*, 
 			const char*, unsigned short, const char*,
 			const List<Tag>&, const List<CallBack>& cb);
-  void createAnnulusCmd(const Vector&, 
-			int, double*,
+  void createBoxCmd(const Vector&, 
+		    const Vector&, 
+		    double, 
+		    const char*, int*, int, const char*, 
+		    const char*, unsigned short, const char*,
+		    const List<Tag>&, const List<CallBack>& cb);
+  void createPolygonCmd(const Vector&, 
+			const Vector&,
 			const char*, int*, int, const char*, 
 			const char*, unsigned short, const char*,
 			const List<Tag>&, const List<CallBack>& cb);
-  void createCpandaCmd(const Vector&, 
-		       double, double, int, 
-		       double, double, int,
-		       const char*, int*, int, const char*, 
-		       const char*, unsigned short, const char*,
-		       const List<Tag>&, const List<CallBack>& cb);
-  void createCpandaCmd(const Vector&, 
-		       int, double*,
-		       int, double*,
-		       const char*, int*, int, const char*, 
-		       const char*, unsigned short, const char*,
-		       const List<Tag>&, const List<CallBack>& cb);
+  void createPolygonCmd(const List<Vertex>&,
+			const char*, int*, int, const char*, 
+			const char*, unsigned short, const char*,
+			const List<Tag>&, const List<CallBack>& cb);
+  void createContourPolygonCmd(const char*, int*, int, const char*, 
+			       const char*, unsigned short, const char*,
+			       const List<Tag>&, 
+			       const List<CallBack>& cb);
+  void createLineCmd(const Vector&, 
+		     const Vector&, 
+		     int, int,
+		     const char*, int*, int, const char*,
+		     const char*, unsigned short, const char*,
+		     const List<Tag>&, const List<CallBack>& cb);
+  void createVectCmd(const Vector&, 
+		     const Vector&, 
+		     int,
+		     const char*, int*, int, const char*,
+		     const char*, unsigned short, const char*,
+		     const List<Tag>&, const List<CallBack>& cb);
+  void createVectCmd(const Vector&, 
+		     double mag, double ang, 
+		     int,
+		     const char*, int*, int, const char*,
+		     const char*, unsigned short, const char*,
+		     const List<Tag>&, const List<CallBack>& cb);
+  void createTextCmd(const Vector&, 
+		     double, int,
+		     const char*, int*, int, const char*, 
+		     const char*, unsigned short, const char*,
+		     const List<Tag>&, const List<CallBack>& cb);
+  void createPointCmd(const Vector&, Point::PointShape, int,
+		      const char*, int*, int, const char*,
+		      const char*, unsigned short, const char*,
+		      const List<Tag>&, 
+		      const List<CallBack>& cb);
 
+  // Measurement Regions
+  void createRulerCmd(const Vector&, const Vector&, 
+		      Coord::CoordSystem, Coord::SkyFrame, Coord::CoordSystem, Coord::SkyDist,
+		      const char*, int*, int, const char*,
+		      const char*, unsigned short, const char*,
+		      const List<Tag>&, const List<CallBack>& cb);
+  void createCompassCmd(const Vector&, double, 
+			const char*, const char*,
+			int, int,
+			Coord::CoordSystem, Coord::SkyFrame,
+			const char*, int*, int, const char*,
+			const char*, unsigned short, const char*,
+			const List<Tag>&, const List<CallBack>& cb);
+  void createProjectionCmd(const Vector&, const Vector&, 
+			   double, 
+			   const char*, int*, int, const char*,
+			   const char*, unsigned short, const char*,
+			   const List<Tag>&, 
+			   const List<CallBack>& cb);
 
-  void createEllipseCmd(const Vector&, 
-			const Vector&, 
-			double, 
+  // Annulus Regions
+  void createAnnulusCmd(const Vector&, 
+			double, double, int,
+			const char*, int*, int, const char*, 
+			const char*, unsigned short, const char*,
+			const List<Tag>&, const List<CallBack>& cb);
+  void createAnnulusCmd(const Vector&, 
+			int, double*,
 			const char*, int*, int, const char*, 
 			const char*, unsigned short, const char*,
 			const List<Tag>&, const List<CallBack>& cb);
@@ -1009,28 +1056,6 @@ public:
 			       const char*, unsigned short, const char*,
 			       const List<Tag>&, 
 			       const List<CallBack>& cb);
-  void createEpandaCmd(const Vector&, 
-		       double, double, int, 
-		       const Vector&, const Vector&, int, 
-		       double,
-		       const char*, int*, int, const char*, 
-		       const char*, unsigned short, const char*,
-		       const List<Tag>&, const List<CallBack>& cb);
-  void createEpandaCmd(const Vector&, 
-		       int, double*,
-		       int, Vector*,
-		       double,
-		       const char*, int*, int, const char*, 
-		       const char*, unsigned short, const char*,
-		       const List<Tag>&, const List<CallBack>& cb);
-
-
-  void createBoxCmd(const Vector&, 
-		    const Vector&, 
-		    double, 
-		    const char*, int*, int, const char*, 
-		    const char*, unsigned short, const char*,
-		    const List<Tag>&, const List<CallBack>& cb);
   void createBoxAnnulusCmd(const Vector&, 
 			   const Vector&, const Vector&, int, 
 			   double,
@@ -1045,6 +1070,34 @@ public:
 			   const char*, unsigned short, const char*,
 			   const List<Tag>&, 
 			   const List<CallBack>& cb);
+
+  // Panda Regions
+  void createCpandaCmd(const Vector&, 
+		       double, double, int, 
+		       double, double, int,
+		       const char*, int*, int, const char*, 
+		       const char*, unsigned short, const char*,
+		       const List<Tag>&, const List<CallBack>& cb);
+  void createCpandaCmd(const Vector&, 
+		       int, double*,
+		       int, double*,
+		       const char*, int*, int, const char*, 
+		       const char*, unsigned short, const char*,
+		       const List<Tag>&, const List<CallBack>& cb);
+  void createEpandaCmd(const Vector&, 
+		       double, double, int, 
+		       const Vector&, const Vector&, int, 
+		       double,
+		       const char*, int*, int, const char*, 
+		       const char*, unsigned short, const char*,
+		       const List<Tag>&, const List<CallBack>& cb);
+  void createEpandaCmd(const Vector&, 
+		       int, double*,
+		       int, Vector*,
+		       double,
+		       const char*, int*, int, const char*, 
+		       const char*, unsigned short, const char*,
+		       const List<Tag>&, const List<CallBack>& cb);
   void createBpandaCmd(const Vector&, 
 		       double, double, int, 
 		       const Vector&, const Vector&, int, 
@@ -1060,110 +1113,7 @@ public:
 		       const char*, unsigned short, const char*,
 		       const List<Tag>&, const List<CallBack>& cb);
 
-
-  void createLineCmd(const Vector&, 
-		     const Vector&, 
-		     int, int,
-		     const char*, int*, int, const char*,
-		     const char*, unsigned short, const char*,
-		     const List<Tag>&, const List<CallBack>& cb);
-  void createVectCmd(const Vector&, 
-		     const Vector&, 
-		     int,
-		     const char*, int*, int, const char*,
-		     const char*, unsigned short, const char*,
-		     const List<Tag>&, const List<CallBack>& cb);
-  void createVectCmd(const Vector&, 
-		     double mag, double ang, 
-		     int,
-		     const char*, int*, int, const char*,
-		     const char*, unsigned short, const char*,
-		     const List<Tag>&, const List<CallBack>& cb);
-  void createProjectionCmd(const Vector&, 
-			   const Vector&,
-			   double, 
-			   const char*, const char*,
-			   const char*, int*, int, const char*,
-			   const char*, unsigned short, const char*,
-			   const List<Tag>&, 
-			   const List<CallBack>& cb);
-  void createCircle3dCmd(const Vector&, 
-			 double, 
-			 const char*, const char*,
-			 const char*, int*, int, const char*,
-			 const char*, unsigned short, const char*,
-			 const List<Tag>&, 
-			 const List<CallBack>& cb);
-  void createRulerCmd(const Vector&, 
-		      const Vector&, 
-		      CoordSystem, SkyFrame, CoordSystem, SkyDist,
-		      const char*, int*, int, const char*,
-		      const char*, unsigned short, const char*,
-		      const List<Tag>&, const List<CallBack>& cb);
-
-  void createCirclePointCmd(const Vector&, int,
-			    const char*, int*, int, const char*,
-			    const char*, unsigned short, const char*,
-			    const List<Tag>&, 
-			    const List<CallBack>& cb);
-  void createBoxPointCmd(const Vector&, int,
-			 const char*, int*, int, const char*,
-			 const char*, unsigned short, const char*,
-			 const List<Tag>&, const List<CallBack>& cb);
-  void createDiamondPointCmd(const Vector&, int,
-			     const char*, int*, int, const char*, 
-			     const char*, unsigned short, const char*,
-			     const List<Tag>&, 
-			     const List<CallBack>& cb);
-  void createCrossPointCmd(const Vector&, int,
-			   const char*, int*, int, const char*,
-			   const char*, unsigned short, const char*,
-			   const List<Tag>&, 
-			   const List<CallBack>& cb);
-  void createExPointCmd(const Vector&, int,
-			const char*, int*, int, const char*,
-			const char*, unsigned short, const char*,
-			const List<Tag>&, const List<CallBack>& cb);
-  void createArrowPointCmd(const Vector&, int,
-			   const char*, int*, int, const char*,
-			   const char*, unsigned short, const char*,
-			   const List<Tag>&, 
-			   const List<CallBack>& cb);
-  void createBoxCirclePointCmd(const Vector&, int,
-			       const char*, int*, int, const char*,
-			       const char*, unsigned short, const char*,
-			       const List<Tag>&, 
-			       const List<CallBack>& cb);
-
-  void createTextCmd(const Vector&, 
-		     double, int,
-		     const char*, int*, int, const char*, 
-		     const char*, unsigned short, const char*,
-		     const List<Tag>&, const List<CallBack>& cb);
-
-  void createPolygonCmd(const Vector&, 
-			const Vector&,
-			const char*, int*, int, const char*, 
-			const char*, unsigned short, const char*,
-			const List<Tag>&, const List<CallBack>& cb);
-  void createPolygonCmd(const List<Vertex>&,
-			const char*, int*, int, const char*, 
-			const char*, unsigned short, const char*,
-			const List<Tag>&, const List<CallBack>& cb);
-  void createContourPolygonCmd(const char*, int*, int, const char*, 
-			       const char*, unsigned short, const char*,
-			       const List<Tag>&, 
-			       const List<CallBack>& cb);
-
-  void createCompassCmd(const Vector&, 
-			double, 
-			const char*, const char*,
-			int, int,
-			CoordSystem, SkyFrame,
-			const char*, int*, int, const char*,
-			const char*, unsigned short, const char*,
-			const List<Tag>&, const List<CallBack>& cb);
-
+  // Composite Regions
   void createCompositeCmd(const Vector&, double, int,
 			  const char*, int*, int, const char*, 
 			  const char*, unsigned short, const char*,
@@ -1173,89 +1123,90 @@ public:
 			  const char*, unsigned short, const char*,
 			  const List<Tag>&, const List<CallBack>& cb);
 
+  // Template Regions
   void createTemplateCmd(const Vector&, const char*);
-  void createTemplateCmd(const Vector&, CoordSystem, SkyFrame, const char*);
+  void createTemplateCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame, const char*);
   void createTemplateVarCmd(const Vector&, const char* var);
 
+  void getMarkerAnalysisPlot2dCmd(int, char*, char*, char*, char*);
+  void getMarkerAnalysisPlot3dCmd(int, char*, char*);
+  void getMarkerAnalysisParamCmd(int id);
+  void getMarkerAnalysisSystemCmd(int id);
+
   void getMarkerAngleCmd(int);
-  void getMarkerAngleCmd(int, CoordSystem, SkyFrame);
-  void getMarkerAnnulusRadiusCmd(int, InternalSystem);
-  void getMarkerAnnulusRadiusCmd(int, CoordSystem, SkyDist);
-  void getMarkerBoxAnnulusRadiusCmd(int, InternalSystem);
-  void getMarkerBoxAnnulusRadiusCmd(int, CoordSystem, SkyDist);
-  void getMarkerBoxRadiusCmd(int, InternalSystem);
-  void getMarkerBoxRadiusCmd(int, CoordSystem, SkyDist);
+  void getMarkerAngleCmd(int, Coord::CoordSystem, Coord::SkyFrame);
+  void getMarkerAnnulusRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerAnnulusRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
+  void getMarkerBoxAnnulusRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerBoxAnnulusRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
+  void getMarkerBoxRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerBoxRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerBpandaAnglesCmd(int);
-  void getMarkerBpandaAnglesCmd(int, CoordSystem, SkyFrame);
-  void getMarkerBpandaRadiusCmd(int, InternalSystem);
-  void getMarkerBpandaRadiusCmd(int, CoordSystem, SkyDist);
-  void getMarkerCenterCmd(int, InternalSystem);
-  void getMarkerCenterCmd(int, CoordSystem, SkyFrame, SkyFormat);
+  void getMarkerBpandaAnglesCmd(int, Coord::CoordSystem, Coord::SkyFrame);
+  void getMarkerBpandaRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerBpandaRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
+  void getMarkerCenterCmd(int, Coord::InternalSystem);
+  void getMarkerCenterCmd(int, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
   void getMarkerCentroidAutoCmd();
   void getMarkerCentroidRadiusCmd();
   void getMarkerCentroidIterationCmd();
   void getMarkerCentroidOptionCmd();
-  void getMarkerCircleRadiusCmd(int, InternalSystem);
-  void getMarkerCircleRadiusCmd(int, CoordSystem, SkyDist);
-  void getMarkerCircle3dCmd(int, char*, char*, char*);
-  void getMarkerCircle3dMethodCmd(int);
-  void getMarkerCircle3dRadiusCmd(int, CoordSystem, SkyDist);
-  void getMarkerCircle3dSystemCmd(int);
+  void getMarkerCircleRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerCircleRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerColorCmd();
   void getMarkerColorCmd(const char*);
   void getMarkerColorCmd(int);
   void getMarkerCompassArrowCmd(int);
   void getMarkerCompassLabelCmd(int);
-  void getMarkerCompassRadiusCmd(int, InternalSystem);
-  void getMarkerCompassRadiusCmd(int, CoordSystem, SkyDist);
+  void getMarkerCompassRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerCompassRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerCompassSystemCmd(int);
   void getMarkerCompositeCmd(int);
   void getMarkerCpandaAnglesCmd(int);
-  void getMarkerCpandaAnglesCmd(int, CoordSystem, SkyFrame);
-  void getMarkerCpandaRadiusCmd(int, InternalSystem);
-  void getMarkerCpandaRadiusCmd(int, CoordSystem, SkyDist);
-  void getMarkerEllipseRadiusCmd(int, InternalSystem);
-  void getMarkerEllipseRadiusCmd(int, CoordSystem, SkyDist);
-  void getMarkerEllipseAnnulusRadiusCmd(int, InternalSystem);
-  void getMarkerEllipseAnnulusRadiusCmd(int, CoordSystem, SkyDist);
+  void getMarkerCpandaAnglesCmd(int, Coord::CoordSystem, Coord::SkyFrame);
+  void getMarkerCpandaRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerCpandaRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
+  void getMarkerEllipseRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerEllipseRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
+  void getMarkerEllipseAnnulusRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerEllipseAnnulusRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerEpandaAnglesCmd(int);
-  void getMarkerEpandaAnglesCmd(int, CoordSystem, SkyFrame);
-  void getMarkerEpandaRadiusCmd(int, InternalSystem);
-  void getMarkerEpandaRadiusCmd(int, CoordSystem, SkyDist);
+  void getMarkerEpandaAnglesCmd(int, Coord::CoordSystem, Coord::SkyFrame);
+  void getMarkerEpandaRadiusCmd(int, Coord::InternalSystem);
+  void getMarkerEpandaRadiusCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerFontCmd();
   void getMarkerFontCmd(const char*);
   void getMarkerFontCmd(int);
   void getMarkerIdCmd(const char*);
   void getMarkerIdCmd(const Vector&);
   void getMarkerIdAllCmd();
-  void getMarkerLineCmd(int, InternalSystem);
-  void getMarkerLineCmd(int, CoordSystem, SkyFrame, SkyFormat);
+  void getMarkerLineCmd(int, Coord::InternalSystem);
+  void getMarkerLineCmd(int, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
   void getMarkerLineArrowCmd(int);
-  void getMarkerLineLengthCmd(int, InternalSystem);
-  void getMarkerLineLengthCmd(int, CoordSystem, SkyDist);
+  void getMarkerLineLengthCmd(int, Coord::InternalSystem);
+  void getMarkerLineLengthCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerLineWidthCmd();
   void getMarkerLineWidthCmd(int);
-  void getMarkerMapLenFromRefCmd(int, double, CoordSystem, SkyDist);
+  void getMarkerMapLenFromRefCmd(int, double, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerNumberCmd();
+  void getMarkerPointShapeCmd(int);
   void getMarkerPointSizeCmd(int);
   void getMarkerPolygonSegmentCmd(const Vector&);
   void getMarkerPreserveCmd();
-  void getMarkerProjectionCmd(int, char*, char*, char*, char*);
-  void getMarkerProjectionPointsCmd(int, InternalSystem);
-  void getMarkerProjectionPointsCmd(int, CoordSystem, SkyFrame, SkyFormat);
-  void getMarkerProjectionLengthCmd(int, InternalSystem);
-  void getMarkerProjectionLengthCmd(int, CoordSystem, SkyDist);
+  void getMarkerProjectionPointsCmd(int, Coord::InternalSystem);
+  void getMarkerProjectionPointsCmd(int, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void getMarkerProjectionLengthCmd(int, Coord::InternalSystem);
+  void getMarkerProjectionLengthCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerProjectionMethodCmd(int);
-  void getMarkerProjectionWidthCmd(int, InternalSystem);
-  void getMarkerProjectionWidthCmd(int, CoordSystem, SkyDist);
-  void getMarkerProjectionSystemCmd(int);
+  void getMarkerProjectionWidthCmd(int, Coord::InternalSystem);
+  void getMarkerProjectionWidthCmd(int, Coord::CoordSystem, Coord::SkyDist);
   void getMarkerPropertyCmd(unsigned short);
   void getMarkerPropertyCmd(const char*, unsigned short);
   void getMarkerPropertyCmd(int, unsigned short);
-  void getMarkerRulerLengthCmd(int, InternalSystem);
-  void getMarkerRulerLengthCmd(int, CoordSystem, SkyDist);
-  void getMarkerRulerPointCmd(int, InternalSystem);
-  void getMarkerRulerPointCmd(int, CoordSystem, SkyFrame, SkyFormat);
+  void getMarkerRulerLengthCmd(int, Coord::InternalSystem);
+  void getMarkerRulerLengthCmd(int, Coord::CoordSystem, Coord::SkyDist);
+  void getMarkerRulerPointCmd(int, Coord::InternalSystem);
+  void getMarkerRulerPointCmd(int, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
   void getMarkerRulerSystemCmd(int);
   void getMarkerSelectedCmd();
   void getMarkerSelectedCmd(int);
@@ -1277,11 +1228,11 @@ public:
   void getMarkerTextCmd(int);
   void getMarkerTextRotateCmd(int);
   void getMarkerTypeCmd(int);
-  void getMarkerVectorCmd(int, InternalSystem);
-  void getMarkerVectorCmd(int, CoordSystem, SkyFrame, SkyFormat);
+  void getMarkerVectorCmd(int, Coord::InternalSystem);
+  void getMarkerVectorCmd(int, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
   void getMarkerVectorArrowCmd(int);
-  void getMarkerVectorLengthCmd(int, InternalSystem);
-  void getMarkerVectorLengthCmd(int, CoordSystem, SkyDist);
+  void getMarkerVectorLengthCmd(int, Coord::InternalSystem);
+  void getMarkerVectorLengthCmd(int, Coord::CoordSystem, Coord::SkyDist);
 
   void hasMarkerHighlitedCmd();
   void hasMarkerPasteCmd();
@@ -1290,26 +1241,31 @@ public:
 
   void markerLayerCmd(MarkerLayer);
 
+  void markerAnalysisCmd(int, Marker::AnalysisMethod, int);
+  void markerAnalysisParamCmd(int, Marker::AnalysisParamType);
+  void markerAnalysisSystemCmd(int, Coord::CoordSystem, 
+			       Coord::SkyFrame =Coord::FK5);
+
   void markerAngleCmd(int, double);
-  void markerAngleCmd(int, double, CoordSystem, SkyFrame);
+  void markerAngleCmd(int, double, Coord::CoordSystem, Coord::SkyFrame);
   void markerAnnulusCreateRadiusCmd(int, const Vector&);
   void markerAnnulusDeleteRadiusCmd(int, int);
-  void markerAnnulusRadiusCmd(int, double, double, int, InternalSystem);
-  void markerAnnulusRadiusCmd(int, double, double, int, CoordSystem, SkyDist);
-  void markerAnnulusRadiusCmd(int, const char*, CoordSystem, SkyDist);
+  void markerAnnulusRadiusCmd(int, double, double, int, Coord::InternalSystem);
+  void markerAnnulusRadiusCmd(int, double, double, int, Coord::CoordSystem, Coord::SkyDist);
+  void markerAnnulusRadiusCmd(int, const char*, Coord::CoordSystem, Coord::SkyDist);
 
   void markerBackCmd();
   void markerBackCmd(const char*);
   void markerBackCmd(int);
   void markerBoxAnnulusRadiusCmd(int, const Vector&, const Vector&, int, 
-				 InternalSystem);
+				 Coord::InternalSystem);
   void markerBoxAnnulusRadiusCmd(int, const Vector&, const Vector&, int, 
-				 CoordSystem, SkyDist);
-  void markerBoxAnnulusRadiusCmd(int, const char*, CoordSystem, SkyDist);
+				 Coord::CoordSystem, Coord::SkyDist);
+  void markerBoxAnnulusRadiusCmd(int, const char*, Coord::CoordSystem, Coord::SkyDist);
   void markerBoxAnnulusCreateRadiusCmd(int, const Vector&);
   void markerBoxAnnulusDeleteRadiusCmd(int, int);
-  void markerBoxRadiusCmd(int, const Vector&, InternalSystem);
-  void markerBoxRadiusCmd(int, const Vector&, CoordSystem, SkyDist);
+  void markerBoxRadiusCmd(int, const Vector&, Coord::InternalSystem);
+  void markerBoxRadiusCmd(int, const Vector&, Coord::CoordSystem, Coord::SkyDist);
   void markerBpandaCreateAnglesCmd(int, const Vector&);
   void markerBpandaCreateRadiusCmd(int, const Vector&);
   void markerBpandaDeleteCmd(int, int);
@@ -1317,10 +1273,10 @@ public:
 			   const Vector&, const Vector&, int);
   void markerBpandaEditCmd(int, double, double, int, 
 			   const Vector&, const Vector&, int,
-			   CoordSystem, SkyFrame);
+			   Coord::CoordSystem, Coord::SkyFrame);
   void markerBpandaEditCmd(int, const char*, const char*, 
-			   CoordSystem, SkyFrame,
-			   CoordSystem, SkyDist);
+			   Coord::CoordSystem, Coord::SkyFrame,
+			   Coord::CoordSystem, Coord::SkyDist);
 
   void markerCallBackCmd(int, CallBack::Type, const char*, const char*);
   void markerCentroidCmd();
@@ -1329,19 +1285,16 @@ public:
   void markerCentroidAutoCmd(int);
   void markerCentroidRadiusCmd(float);
   void markerCentroidIterationCmd(int);
-  void markerCircleRadiusCmd(int, double, InternalSystem);
-  void markerCircleRadiusCmd(int, double, CoordSystem, SkyDist);
-  void markerCircle3dCmd(int, double, InternalSystem, int);
-  void markerCircle3dCmd(int, double, CoordSystem, SkyDist,int);
-  void markerCircle3dSystemCmd(int, CoordSystem);
+  void markerCircleRadiusCmd(int, double, Coord::InternalSystem);
+  void markerCircleRadiusCmd(int, double, Coord::CoordSystem, Coord::SkyDist);
   void markerColorCmd(const char*);
   void markerColorCmd(const char*, const char*);
   void markerColorCmd(int, const char*);
   void markerCompassArrowCmd(int, int, int);
   void markerCompassLabelCmd(int, const char*, const char*);
-  void markerCompassRadiusCmd(int, double, InternalSystem);
-  void markerCompassRadiusCmd(int, double, CoordSystem, SkyDist);
-  void markerCompassSystemCmd(int, CoordSystem, SkyFrame);
+  void markerCompassRadiusCmd(int, double, Coord::InternalSystem);
+  void markerCompassRadiusCmd(int, double, Coord::CoordSystem, Coord::SkyDist);
+  void markerCompassSystemCmd(int, Coord::CoordSystem, Coord::SkyFrame);
   void markerCompositeCmd(int, int);
   void markerCompositeDeleteCmd();
   void markerCommandCmd(MarkerFormat, const char*);
@@ -1353,9 +1306,9 @@ public:
   void markerCpandaDeleteCmd(int, int);
   void markerCpandaEditCmd(int, double, double, int, double, double, int);
   void markerCpandaEditCmd(int, double, double, int, double, double, int,
-			   CoordSystem, SkyFrame);
+			   Coord::CoordSystem, Coord::SkyFrame);
   void markerCpandaEditCmd(int, const char*, const char*, 
-			   CoordSystem, SkyFrame,CoordSystem, SkyDist);
+			   Coord::CoordSystem, Coord::SkyFrame,Coord::CoordSystem, Coord::SkyDist);
   void markerCutCmd();
   void markerCutCmd(const char*);
 
@@ -1373,14 +1326,14 @@ public:
   void markerEditBeginCmd(const Vector&, int);
   void markerEditMotionCmd(const Vector&, int);
   void markerEditEndCmd();
-  void markerEllipseRadiusCmd(int, const Vector&, InternalSystem);
-  void markerEllipseRadiusCmd(int, const Vector&, CoordSystem, SkyDist);
+  void markerEllipseRadiusCmd(int, const Vector&, Coord::InternalSystem);
+  void markerEllipseRadiusCmd(int, const Vector&, Coord::CoordSystem, Coord::SkyDist);
   void markerEllipseAnnulusRadiusCmd(int, const Vector&, const Vector&, int, 
-				     InternalSystem);
+				     Coord::InternalSystem);
   void markerEllipseAnnulusRadiusCmd(int, const Vector&, const Vector&, int, 
-				     CoordSystem, SkyDist);
+				     Coord::CoordSystem, Coord::SkyDist);
   void markerEllipseAnnulusRadiusCmd(int, const char*, 
-				     CoordSystem, SkyDist);
+				     Coord::CoordSystem, Coord::SkyDist);
   void markerEllipseAnnulusCreateRadiusCmd(int, const Vector&);
   void markerEllipseAnnulusDeleteRadiusCmd(int, int);
   void markerEpandaCreateAnglesCmd(int, const Vector&);
@@ -1390,10 +1343,10 @@ public:
 			   const Vector&, const Vector&, int);
   void markerEpandaEditCmd(int, double, double, int, 
 			   const Vector&, const Vector&, int,
-			   CoordSystem, SkyFrame);
+			   Coord::CoordSystem, Coord::SkyFrame);
   void markerEpandaEditCmd(int, const char*, const char*, 
-			   CoordSystem, SkyFrame,
-			   CoordSystem, SkyDist);
+			   Coord::CoordSystem, Coord::SkyFrame,
+			   Coord::CoordSystem, Coord::SkyDist);
 
   void markerFontCmd(const char*);
   void markerFontCmd(const char*, const char*);
@@ -1413,18 +1366,18 @@ public:
   void markerKeyCmd();
   void markerKeyCmd(const Vector&);
 
-  void markerLineCmd(int, const Vector&, const Vector&, InternalSystem);
-  void markerLineCmd(int, const Vector&, const Vector&, CoordSystem, SkyFrame);
+  void markerLineCmd(int, const Vector&, const Vector&, Coord::InternalSystem);
+  void markerLineCmd(int, const Vector&, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void markerLineArrowCmd(int, int, int);
   void markerLineWidthCmd(int);
   void markerLineWidthCmd(int, int);
-  void markerListCmd(MarkerFormat, CoordSystem, SkyFrame, SkyFormat, 
+  void markerListCmd(MarkerFormat, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, 
 		     int strip, int select,
 		     unsigned short, unsigned short, List<Tag>&);
   void markerLoadCmd(MarkerFormat,const char*);
-  void markerLoadCmd(MarkerFormat,const char*,CoordSystem,SkyFrame);
+  void markerLoadCmd(MarkerFormat,const char*,Coord::CoordSystem,Coord::SkyFrame);
   void markerLoadCmd(MarkerFormat,int);
-  void markerLoadCmd(MarkerFormat,int,CoordSystem,SkyFrame);
+  void markerLoadCmd(MarkerFormat,int,Coord::CoordSystem,Coord::SkyFrame);
   void markerLoadFitsCmd(const char*, const char*, int*, int, const char*);
 
   void markerMoveCmd(const Vector&);
@@ -1436,44 +1389,44 @@ public:
   void markerMoveMotionCmd(int, const Vector&);
   void markerMoveEndCmd();
   void markerMoveEndCmd(int);
-  void markerMoveToCmd(const Vector&, InternalSystem);
-  void markerMoveToCmd(const Vector&, CoordSystem, SkyFrame);
-  void markerMoveToCmd(const char*, const Vector&, InternalSystem);
-  void markerMoveToCmd(const char*, const Vector&, CoordSystem, SkyFrame);
-  void markerMoveToCmd(int, const Vector&, InternalSystem);
-  void markerMoveToCmd(int, const Vector&, CoordSystem, SkyFrame);
+  void markerMoveToCmd(const Vector&, Coord::InternalSystem);
+  void markerMoveToCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame);
+  void markerMoveToCmd(const char*, const Vector&, Coord::InternalSystem);
+  void markerMoveToCmd(const char*, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
+  void markerMoveToCmd(int, const Vector&, Coord::InternalSystem);
+  void markerMoveToCmd(int, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
 
   void markerPasteCmd();
-  void markerPasteCmd(CoordSystem, CoordSystem);
-  void markerPointSizeCmd(int,int);
+  void markerPasteCmd(Coord::CoordSystem, Coord::CoordSystem);
+  void markerPointShapeCmd(int, Point::PointShape);
+  void markerPointSizeCmd(int, int);
   void markerPolygonCreateVertexCmd(int, int, const Vector&);
   void markerPolygonDeleteVertexCmd(int, int);
-  void markerPolygonResetCmd(int, const Vector&, InternalSystem);
-  void markerPolygonResetCmd(int, const Vector&, CoordSystem, SkyDist);
+  void markerPolygonResetCmd(int, const Vector&, Coord::InternalSystem);
+  void markerPolygonResetCmd(int, const Vector&, Coord::CoordSystem, Coord::SkyDist);
   void markerPreserveCmd(int r) {preserveMarkers = r;}
   void markerPropertyCmd(unsigned short, int);
   void markerPropertyCmd(const char*, unsigned short, int);
   void markerPropertyCmd(int, unsigned short, int);
   void markerPropertyCmd(unsigned short, int, const Vector&);
   void markerProjectionCmd(int, const Vector&, const Vector&, 
-			   InternalSystem, double, int);
+			   Coord::InternalSystem, double);
   void markerProjectionCmd(int, const Vector&, const Vector&, 
-			   CoordSystem, SkyFrame, 
-			   double, int, CoordSystem, SkyDist);
-  void markerProjectionSystemCmd(int, CoordSystem, SkyFrame);
+			   Coord::CoordSystem, Coord::SkyFrame, 
+			   double, Coord::CoordSystem, Coord::SkyDist);
 
   void markerRotateBeginCmd(int);
   void markerRotateBeginCmd(const Vector&);
   void markerRotateMotionCmd(const Vector&, int h);
   void markerRotateEndCmd();
   void markerRulerPointCmd(int, const Vector&, const Vector&, 
-			   CoordSystem, SkyFrame);
-  void markerRulerPointCmd(int, const Vector&, const Vector&, InternalSystem);
-  void markerRulerSystemCmd(int, CoordSystem, SkyFrame, 
-			    CoordSystem, SkyDist);
+			   Coord::CoordSystem, Coord::SkyFrame);
+  void markerRulerPointCmd(int, const Vector&, const Vector&, Coord::InternalSystem);
+  void markerRulerSystemCmd(int, Coord::CoordSystem, Coord::SkyFrame, 
+			    Coord::CoordSystem, Coord::SkyDist);
 
-  void markerSaveCmd(const char*, MarkerFormat, CoordSystem, SkyFrame,
-		     SkyFormat, int strip);
+  void markerSaveCmd(const char*, MarkerFormat, Coord::CoordSystem, Coord::SkyFrame,
+		     Coord::SkyFormat, int strip);
   void markerSaveTemplateCmd(const char*);
   void markerSelectAllCmd();
   void markerSelectCmd(int); // not used
@@ -1503,9 +1456,9 @@ public:
   void markerUnselectCmd(int); // not used
   void markerUnselectCmd(const char*); // not used
 
-  void markerVectorCmd(int, const Vector&, InternalSystem, double, double);
-  void markerVectorCmd(int, const Vector&, CoordSystem, SkyFrame, 
-		       double, CoordSystem, SkyDist, double);
+  void markerVectorCmd(int, const Vector&, Coord::InternalSystem, double, double);
+  void markerVectorCmd(int, const Vector&, Coord::CoordSystem, Coord::SkyFrame, 
+		       double, Coord::CoordSystem, Coord::SkyDist, double);
   void markerVectorArrowCmd(int, int);
 
   void regionHighliteBeginCmd(const Vector& v) {regionSelectBeginCmd(v);}
@@ -1537,12 +1490,12 @@ public:
   void getRotateCmd(Precision);
   void getPanPreserveCmd();
   void getZoomCmd(Precision);
-  void orientCmd(Orientation);
+  void orientCmd(Coord::Orientation);
   virtual void panCmd(const Vector&) =0;
   virtual void panCmd(const Vector&, const Vector&) =0;
-  virtual void panCmd(const Vector&, CoordSystem, SkyFrame) =0;
+  virtual void panCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame) =0;
   virtual void panToCmd(const Vector&) =0;
-  virtual void panToCmd(const Vector&, CoordSystem, SkyFrame) =0;
+  virtual void panToCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame) =0;
   void panBeginCmd(const Vector&);
   void panMotionCmd(const Vector&);
   virtual void panEndCmd(const Vector&) =0;
@@ -1555,26 +1508,26 @@ public:
   void rotateToCmd(double);
   void wcsAlignCmd(int);
   // used by backup
-  void wcsAlignCmd(int, CoordSystem, SkyFrame);
-  void wcsAlignCmd(int, FitsImage*, CoordSystem);
+  void wcsAlignCmd(int, Coord::CoordSystem, Coord::SkyFrame);
+  void wcsAlignCmd(int, FitsImage*, Coord::CoordSystem);
   void zoomCmd(const Vector&);
   void zoomToCmd(const Vector&);
   virtual void zoomAboutCmd(const Vector&, const Vector&) =0;
   virtual void zoomAboutCmd(const Vector&, const Vector&, 
-			    CoordSystem, SkyFrame) =0;
+			    Coord::CoordSystem, Coord::SkyFrame) =0;
   virtual void zoomToAboutCmd(const Vector&, const Vector&) =0;
   virtual void zoomToAboutCmd(const Vector&, const Vector&, 
-			      CoordSystem, SkyFrame) =0;
+			      Coord::CoordSystem, Coord::SkyFrame) =0;
   virtual void zoomToFitCmd(double) =0;
 
   // Panner Commands
   void pannerCmd(int);
   void pannerCmd(char*, int, int);
-  void pannerCmd(CoordSystem, SkyFrame);
+  void pannerCmd(Coord::CoordSystem, Coord::SkyFrame);
   void updatePannerCmd();
 
   // Pixel Table Commands
-  void getPixelTableCmd(const Vector&, InternalSystem, int, int, char*);
+  void getPixelTableCmd(const Vector&, Coord::InternalSystem, int, int, char*);
 
   // Print Commands
 #ifdef _MACOSX
@@ -1589,7 +1542,7 @@ public:
   void colorScaleLogCmd(double);
   void getColorMapLevelCmd(int);
   void getColorMapLevelCmd(int, double, double, FrScale::ColorScaleType, float);
-  void getColorMapLevelCmd(int, const Vector&, InternalSystem);
+  void getColorMapLevelCmd(int, const Vector&, Coord::InternalSystem);
   void getColorScaleCmd();
   void getColorScaleLevelCmd(int, double, double, 
 			     FrScale::ColorScaleType, float);
@@ -1617,7 +1570,7 @@ public:
   virtual void getRGBSystemCmd() =0;
   virtual void setRGBChannelCmd(const char*) {}
   virtual void setRGBViewCmd(int, int, int) {}
-  virtual void setRGBSystemCmd(CoordSystem) {}
+  virtual void setRGBSystemCmd(Coord::CoordSystem) {}
 
   // 3d
   virtual void get3dHighliteCmd() =0;
diff --git a/saotk/frame/basebox.C b/saotk/frame/basebox.C
index ff0a3c0..3eb5516 100644
--- a/saotk/frame/basebox.C
+++ b/saotk/frame/basebox.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "basebox.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 BaseBox::BaseBox(const BaseBox& a) : BaseMarker(a) 
@@ -29,7 +28,7 @@ BaseBox::~BaseBox()
   deleteVertices();
 }
 
-void BaseBox::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void BaseBox::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
 
@@ -54,7 +53,7 @@ void BaseBox::renderPS(int mode)
   newVertices();
   for (int ii=0; ii<numAnnuli_; ii++) {
     for (int jj=0; jj<numPoints_; jj++) {
-      Vector v =  parent->mapFromRef(vertices_[ii][jj],CANVAS);
+      Vector v =  parent->mapFromRef(vertices_[ii][jj],Coord::CANVAS);
 
       ostringstream str;
       if (jj==0)
@@ -98,7 +97,7 @@ void BaseBox::renderWIN32()
   for (int ii=0; ii<numAnnuli_; ii++) {
     Vector vv[numPoints_];
     for (int jj=0; jj<numPoints_; jj++)
-      vv[jj] = parent->mapFromRef(vertices_[ii][jj],CANVAS);
+      vv[jj] = parent->mapFromRef(vertices_[ii][jj],Coord::CANVAS);
     win32DrawLines(vv, numPoints_);
   }
   deleteVertices();
@@ -125,29 +124,28 @@ void BaseBox::updateHandles()
   }
   Vector& s = max;
 
-  handle[0] = fwdMap(Vector(-s[0],-s[1])/2,CANVAS);
-  handle[1] = fwdMap(Vector( s[0],-s[1])/2,CANVAS);
-  handle[2] = fwdMap(Vector( s[0], s[1])/2,CANVAS);
-  handle[3] = fwdMap(Vector(-s[0], s[1])/2,CANVAS);
+  handle[0] = fwdMap(Vector(-s[0],-s[1])/2,Coord::CANVAS);
+  handle[1] = fwdMap(Vector( s[0],-s[1])/2,Coord::CANVAS);
+  handle[2] = fwdMap(Vector( s[0], s[1])/2,Coord::CANVAS);
+  handle[3] = fwdMap(Vector(-s[0], s[1])/2,Coord::CANVAS);
 
   // annuli
   if (numAnnuli_>1)
     for (int ii=0; ii<numAnnuli_; ii++)
-      handle[ii+4] = fwdMap(Vector((annuli_[ii][0])/2.,0),CANVAS);
+      handle[ii+4] = fwdMap(Vector((annuli_[ii][0])/2.,0),Coord::CANVAS);
 }
 
-int BaseBox::isIn(const Vector& v)
+int BaseBox::isIn(const Vector& vv, Coord::InternalSystem sys)
 {
-  // v is in canvas coords
-  Vector s = annuli_[numAnnuli_-1];
+  Vector ss = annuli_[numAnnuli_-1];
 
   // zero radius
-  if (!s[0] || !s[1])
+  if (!ss[0] || !ss[1])
     return 0;
 
-  Vector p = bckMap(v,CANVAS);
+  Vector pp = bckMap(vv,sys);
 
-  if (p[0]<-s[0]/2 || p[0]>s[0]/2 || p[1]<-s[1]/2 || p[1]>s[1]/2)
+  if (pp[0]<-ss[0]/2 || pp[0]>ss[0]/2 || pp[1]<-ss[1]/2 || pp[1]>ss[1]/2)
     return 0;
   else
     return 1;
diff --git a/saotk/frame/basebox.h b/saotk/frame/basebox.h
index 9f31473..2e90c63 100644
--- a/saotk/frame/basebox.h
+++ b/saotk/frame/basebox.h
@@ -27,7 +27,7 @@ protected:
   virtual void updateHandles();
   Vector intersect(Vector, double);
 
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
@@ -48,7 +48,8 @@ public:
 
   virtual Marker* dup() =0;
 
-  int isIn(const Vector&);
+  int isIn(const Vector& vv) {return isIn(vv, Coord::CANVAS);}
+  int isIn(const Vector&, Coord::InternalSystem);
 };
 
 #endif
diff --git a/saotk/frame/basecommand.C b/saotk/frame/basecommand.C
index e45b51b..eb940f7 100644
--- a/saotk/frame/basecommand.C
+++ b/saotk/frame/basecommand.C
@@ -369,6 +369,7 @@ void Base::cropCmd()
     sptr = sptr->nextSlice();
   }
 
+  currentContext->frScale.clearHistogram();
   currentContext->updateClip();
   currentContext->updateContours();
   updateColorScale();
@@ -380,7 +381,7 @@ void Base::cropCmd()
 
 // used for Backup
 void Base::cropCmd(const Vector& aa, const Vector& bb, 
-		   CoordSystem sys, SkyFrame sky)
+		   Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   FitsImage* ptr = currentContext->fits;
   if (!ptr)
@@ -399,6 +400,7 @@ void Base::cropCmd(const Vector& aa, const Vector& bb,
     sptr = sptr->nextSlice();
   }
 
+  currentContext->frScale.clearHistogram();
   currentContext->updateClip();
   currentContext->updateContours();
   updateColorScale();
@@ -408,8 +410,8 @@ void Base::cropCmd(const Vector& aa, const Vector& bb,
   updateMarkerCBs(&catalogMarkers);
 }
 
-void Base::cropCenterCmd(const Vector& vv, CoordSystem sys, SkyFrame sky, 
-			 const Vector& wh, CoordSystem dsys, SkyDist dist)
+void Base::cropCenterCmd(const Vector& vv, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			 const Vector& wh, Coord::CoordSystem dsys, Coord::SkyDist dist)
 {
   FitsImage* ptr = currentContext->fits;
   if (!ptr)
@@ -429,6 +431,7 @@ void Base::cropCenterCmd(const Vector& vv, CoordSystem sys, SkyFrame sky,
     sptr = sptr->nextSlice();
   }
 
+  currentContext->frScale.clearHistogram();
   currentContext->updateClip();
   currentContext->updateContours();
   updateColorScale();
@@ -446,16 +449,16 @@ void Base::cropBeginCmd(const Vector& vv)
 
 void Base::cropMotionCmd(const Vector& vv)
 {
-  Vector ss = mapToRef(cropBegin,CANVAS);
+  Vector ss = mapToRef(cropBegin, Coord::CANVAS);
 
   // erase 
   if (cropBegin[0]!=cropEnd[0] || cropBegin[1]!=cropEnd[1]) {
-    Vector tt = mapToRef(cropEnd,CANVAS);
+    Vector tt = mapToRef(cropEnd, Coord::CANVAS);
 
-    Vector ll = mapFromRef(ss,CANVAS);
-    Vector lr = mapFromRef(Vector(tt[0],ss[1]),CANVAS);
-    Vector ur = mapFromRef(tt,CANVAS);
-    Vector ul = mapFromRef(Vector(ss[0],tt[1]),CANVAS);
+    Vector ll = mapFromRef(ss, Coord::CANVAS);
+    Vector lr = mapFromRef(Vector(tt[0],ss[1]), Coord::CANVAS);
+    Vector ur = mapFromRef(tt, Coord::CANVAS);
+    Vector ul = mapFromRef(Vector(ss[0],tt[1]), Coord::CANVAS);
 
     BBox bb(ll);
     bb.bound(lr);
@@ -468,12 +471,12 @@ void Base::cropMotionCmd(const Vector& vv)
   cropEnd = vv;
   // and draw to window
   {
-    Vector tt = mapToRef(cropEnd,CANVAS);
+    Vector tt = mapToRef(cropEnd, Coord::CANVAS);
 
-    Vector ll = mapFromRef(ss,WINDOW);
-    Vector lr = mapFromRef(Vector(tt[0],ss[1]),WINDOW);
-    Vector ur = mapFromRef(tt,WINDOW);
-    Vector ul = mapFromRef(Vector(ss[0],tt[1]),WINDOW);
+    Vector ll = mapFromRef(ss, Coord::WINDOW);
+    Vector lr = mapFromRef(Vector(tt[0],ss[1]), Coord::WINDOW);
+    Vector ur = mapFromRef(tt, Coord::WINDOW);
+    Vector ul = mapFromRef(Vector(ss[0],tt[1]), Coord::WINDOW);
 
     XDrawLine(display,Tk_WindowId(tkwin),selectGCXOR,ll[0],ll[1],lr[0],lr[1]);
     XDrawLine(display,Tk_WindowId(tkwin),selectGCXOR,lr[0],lr[1],ur[0],ur[1]);
@@ -484,16 +487,16 @@ void Base::cropMotionCmd(const Vector& vv)
 
 void Base::cropEndCmd(const Vector& vv)
 {
-  Vector ss = mapToRef(cropBegin,CANVAS);
+  Vector ss = mapToRef(cropBegin, Coord::CANVAS);
 
   // erase 
   if (cropBegin[0]!=cropEnd[0] || cropBegin[1]!=cropEnd[1]) {
-    Vector tt = mapToRef(cropEnd,CANVAS);
+    Vector tt = mapToRef(cropEnd, Coord::CANVAS);
 
-    Vector ll = mapFromRef(ss,CANVAS);
-    Vector lr = mapFromRef(Vector(tt[0],ss[1]),CANVAS);
-    Vector ur = mapFromRef(tt,CANVAS);
-    Vector ul = mapFromRef(Vector(ss[0],tt[1]),CANVAS);
+    Vector ll = mapFromRef(ss, Coord::CANVAS);
+    Vector lr = mapFromRef(Vector(tt[0],ss[1]), Coord::CANVAS);
+    Vector ur = mapFromRef(tt, Coord::CANVAS);
+    Vector ul = mapFromRef(Vector(ss[0],tt[1]), Coord::CANVAS);
 
     BBox bb(ll);
     bb.bound(lr);
@@ -506,7 +509,7 @@ void Base::cropEndCmd(const Vector& vv)
   cropEnd = vv;
 
   if (cropBegin[0]!=cropEnd[0] || cropBegin[1]!=cropEnd[1]) {
-    Vector tt = mapToRef(cropEnd,CANVAS);
+    Vector tt = mapToRef(cropEnd, Coord::CANVAS);
 
     if (!isMosaic()) {
       currentContext->frScale.setScanMode(FrScale::CROPSEC);
@@ -522,8 +525,8 @@ void Base::cropEndCmd(const Vector& vv)
     else {
       FitsImage* ptr1 =NULL;
       FitsImage* ptr2 =NULL;
-      if ((ptr1=isInFits(cropBegin,CANVAS,NULL)) ==
-	  (ptr2=isInFits(cropEnd,CANVAS,NULL))) {
+      if ((ptr1=isInFits(cropBegin,Coord::CANVAS,NULL)) ==
+	  (ptr2=isInFits(cropEnd,Coord::CANVAS,NULL))) {
 
 	currentContext->frScale.setScanMode(FrScale::CROPSEC);
 	// clear any previous params
@@ -560,6 +563,7 @@ void Base::cropEndCmd(const Vector& vv)
     }
   }
 
+  currentContext->frScale.clearHistogram();
   currentContext->updateClip();
   currentContext->updateContours();
   updateColorScale();
@@ -580,6 +584,7 @@ void Base::crop3dCmd()
     sptr = sptr->nextSlice();
   }
 
+  currentContext->frScale.clearHistogram();
   currentContext->updateClip();
   currentContext->updateContours();
   updateColorScale();
@@ -589,7 +594,7 @@ void Base::crop3dCmd()
   updateMarkerCBs(&catalogMarkers);
 }
 
-void Base::crop3dCmd(double z0, double z1, CoordSystem sys)
+void Base::crop3dCmd(double z0, double z1, Coord::CoordSystem sys)
 {
   // use first slice
   FitsImage* ptr = currentContext->fits;
@@ -618,6 +623,7 @@ void Base::crop3dCmd(double z0, double z1, CoordSystem sys)
     setSlice(2,tt+.5);
 
   currentContext->frScale.setScanMode(FrScale::CROPSEC);
+  currentContext->frScale.clearHistogram();
   currentContext->updateClip();
   updateColorScale();
   update(MATRIX);
@@ -632,14 +638,14 @@ void Base::crosshairCmd(int which)
   update(PIXMAP);
 }
 
-void Base::crosshairCmd(const Vector& vv, InternalSystem sys)
+void Base::crosshairCmd(const Vector& vv, Coord::InternalSystem sys)
 {
   useCrosshair = 1;
   crosshair = mapToRef(vv, sys);
   update(PIXMAP);
 }
 
-void Base::crosshairCmd(const Vector& v, CoordSystem sys, SkyFrame sky)
+void Base::crosshairCmd(const Vector& v, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   useCrosshair = 1;
   if (currentContext->cfits)
@@ -690,7 +696,7 @@ void Base::contourAuxNextCmd()
   currentContext->contourAuxNext();
 }
 
-void Base::contourAuxSaveCmd(const char* fn, CoordSystem sys, SkyFrame sky)
+void Base::contourAuxSaveCmd(const char* fn, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (currentContext->cfits && hasContourAux()) {
     ofstream str(fn);
@@ -712,7 +718,7 @@ void Base::contourAuxSaveCmd(const char* fn, CoordSystem sys, SkyFrame sky)
   }
 }
 
-void Base::contourCopyCmd(CoordSystem sys, SkyFrame sky)
+void Base::contourCopyCmd(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (currentContext->cfits && hasContour()) {
     List<Vertex>* v = new List<Vertex>(currentContext->contour->contours());
@@ -820,7 +826,7 @@ void Base::contourDeleteAllCmd()
 }
 
 void Base::contourLoadCmd(const char* color, int w, int d, const char* fn,
-			       CoordSystem sys, SkyFrame sky)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!currentContext->cfits)
     return;
@@ -856,7 +862,7 @@ void Base::contourLoadCmd(const char* color, int w, int d, const char* fn,
 }
 
 void Base::contourPasteCmd(const char* c, int w, int d, void* u, 
-			    CoordSystem sys, SkyFrame sky)
+			    Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!currentContext->cfits)
     return;
@@ -876,7 +882,7 @@ void Base::contourPasteCmd(const char* c, int w, int d, void* u,
   update(PIXMAP);
 }
 
-void Base::contourSaveCmd(const char* fn, CoordSystem sys, SkyFrame sky)
+void Base::contourSaveCmd(const char* fn, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (currentContext->cfits && hasContour()) {
     ofstream str(fn);
@@ -1185,7 +1191,7 @@ void Base::getColorMapLevelCmd(int count)
 			currentContext->frScale.expo());		
 }
 
-void Base::getColorMapLevelCmd(int count, const Vector& vv, InternalSystem ref)
+void Base::getColorMapLevelCmd(int count, const Vector& vv, Coord::InternalSystem ref)
 {
   if (currentContext->cfits) {
     if (FitsImage* ptr=isInFits(vv,ref,NULL)) {
@@ -1329,7 +1335,7 @@ void Base::getColorScaleLogCmd()
   Tcl_AppendResult(interp, str.str().c_str(), NULL);
 }
 
-void Base::getContourCmd(CoordSystem sys, SkyFrame sky)
+void Base::getContourCmd(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (currentContext->cfits && hasContour()) {
     List<Vertex>& v = (List<Vertex>&)(currentContext->contour->contours());
@@ -1486,14 +1492,14 @@ void Base::getContourScaleLogCmd()
   }
 }
 
-void Base::getCoordCmd(const Vector& vv, CoordSystem out, 
-		       SkyFrame sky, SkyFormat format)
+void Base::getCoordCmd(const Vector& vv, Coord::CoordSystem out, 
+		       Coord::SkyFrame sky, Coord::SkyFormat format)
 {
-  if (FitsImage* ptr=isInFits(vv,CANVAS,NULL))
-    printFromRef(ptr, mapToRef(vv,CANVAS), out, sky, format, DEFAULT);
+  if (FitsImage* ptr=isInFits(vv,Coord::CANVAS,NULL))
+    printFromRef(ptr, mapToRef(vv,Coord::CANVAS), out, sky, format, DEFAULT);
 }
 
-void Base::getCoordFromRefCmd(double vv, CoordSystem out, int ss)
+void Base::getCoordFromRefCmd(double vv, Coord::CoordSystem out, int ss)
 {
   if (currentContext->cfits) 
     // use first slice
@@ -1502,7 +1508,7 @@ void Base::getCoordFromRefCmd(double vv, CoordSystem out, int ss)
     printDouble(0,DEFAULT);
 }
 
-void Base::getCoordToRefCmd(double vv, CoordSystem in, int ss)
+void Base::getCoordToRefCmd(double vv, Coord::CoordSystem in, int ss)
 {
   if (currentContext->cfits)
     // use first slice
@@ -1512,7 +1518,7 @@ void Base::getCoordToRefCmd(double vv, CoordSystem in, int ss)
 }
 
 // used for Backup 
-void Base::getCropCmd(CoordSystem sys, SkyFrame sky, SkyFormat format)
+void Base::getCropCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format)
 {
   FitsImage* ptr = currentContext->fits;
   if (!ptr)
@@ -1527,8 +1533,8 @@ void Base::getCropCmd(CoordSystem sys, SkyFrame sky, SkyFormat format)
   printFromRef(ptr, ur*ptr->dataToRef, sys, sky, format, DEFAULT);
 }
 
-void Base::getCropCenterCmd(CoordSystem sys, SkyFrame sky, SkyFormat format, 
-			    CoordSystem dcoord, SkyDist dist)
+void Base::getCropCenterCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, 
+			    Coord::CoordSystem dcoord, Coord::SkyDist dist)
 {
   FitsImage* ptr = currentContext->fits;
   if (!ptr)
@@ -1545,7 +1551,7 @@ void Base::getCropCenterCmd(CoordSystem sys, SkyFrame sky, SkyFormat format,
   printVector(ptr->mapLenFromImage(dd, dcoord, dist), DEFAULT);
 }
 
-void Base::getCrop3dCmd(CoordSystem sys)
+void Base::getCrop3dCmd(Coord::CoordSystem sys)
 {
   // use first slice
   FitsImage* ptr = currentContext->fits;
@@ -1561,13 +1567,13 @@ void Base::getCrop3dCmd(CoordSystem sys)
   Tcl_AppendResult(interp, str.str().c_str(), NULL);
 }
 
-void Base::getCrosshairCmd(InternalSystem sys)
+void Base::getCrosshairCmd(Coord::InternalSystem sys)
 {
   printVector(mapFromRef(crosshair, sys), DEFAULT);
 }
 
-void Base::getCrosshairCmd(CoordSystem sys, SkyFrame sky, 
-			   SkyFormat format, Precision pp)
+void Base::getCrosshairCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			   Coord::SkyFormat format, Precision pp)
 {
   if (currentContext->cfits)
     printFromRef(currentContext->cfits, crosshair, sys, sky, format, pp);
@@ -1591,7 +1597,7 @@ void Base::getDATASECCmd()
     Tcl_AppendResult(interp, "0", NULL);
 }
 
-void Base::getDataValuesCmd(const Vector& vv, InternalSystem ref,
+void Base::getDataValuesCmd(const Vector& vv, Coord::InternalSystem ref,
 			    const Vector& ss)
 {
   Vector rr;
@@ -1616,8 +1622,8 @@ void Base::getDataValuesCmd(const Vector& vv, InternalSystem ref,
   CLEARSIGBUS
 }
 
-void Base::getDataValuesCmd(int which, const Vector& vv, CoordSystem sys, 
-			    SkyFrame sky, const Vector& dd, char* var)
+void Base::getDataValuesCmd(int which, const Vector& vv, Coord::CoordSystem sys, 
+			    Coord::SkyFrame sky, const Vector& dd, char* var)
 {
   // clear an previous values
   Tcl_UnsetVar(interp,var,0);
@@ -1633,7 +1639,7 @@ void Base::getDataValuesCmd(int which, const Vector& vv, CoordSystem sys,
     result = TCL_ERROR;
     return;
   }
-  Vector ll = base->mapLenToRef(dd,sys,DEGREE);
+  Vector ll = base->mapLenToRef(dd,sys,Coord::DEGREE);
   Vector bb = base->mapToRef(vv,sys,sky);
 
   SETSIGBUS
@@ -1675,7 +1681,7 @@ void Base::getFitsNAxesCmd()
   printInteger(currentContext->naxes());
 }
 
-void Base::getFitsCenterCmd(CoordSystem sys, SkyFrame sky, SkyFormat format,
+void Base::getFitsCenterCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format,
 			    Precision pp)
 {
   if (keyContext && keyContext->fits)
@@ -1701,7 +1707,7 @@ void Base::getFitsDepthCmd(int ii)
     printInteger(1);
 }
 
-void Base::getFitsExtCmd(const Vector& vv, InternalSystem ref)
+void Base::getFitsExtCmd(const Vector& vv, Coord::InternalSystem ref)
 {
   if (FitsImage* ptr=isInFits(vv,ref,NULL)) {
     ostringstream str;
@@ -1817,7 +1823,7 @@ void Base::getFitsFileNameCmd(int which, FileNameType type)
     result = TCL_ERROR;
 }
 
-void Base::getFitsFileNameCmd(const Vector& vv, InternalSystem ref, 
+void Base::getFitsFileNameCmd(const Vector& vv, Coord::InternalSystem ref, 
 			      FileNameType type)
 {
   if (FitsImage* ptr=isInFits(vv,ref,NULL)) {
@@ -1861,7 +1867,7 @@ void Base::getFitsSizeCmd()
     printVector(Vector(), DEFAULT);
 }
 
-void Base::getFitsSizeCmd(CoordSystem sys, SkyFrame sky, SkyDist dist, 
+void Base::getFitsSizeCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyDist dist, 
 			  Precision pp)
 {
   if (keyContext->fits) {
@@ -1911,12 +1917,12 @@ void Base::getFitsSizeCmd(CoordSystem sys, SkyFrame sky, SkyDist dist,
 	      keyContext->fits->wcsdist(wbb.ll,wbb.ul(),sys));
 
     switch (dist) {
-    case DEGREES:
+    case Coord::DEGREE:
       break;
-    case ARCMIN:
+    case Coord::ARCMIN:
       ss *= 60;
       break;
-    case ARCSEC:
+    case Coord::ARCSEC:
       ss *= 60*60;
       break;
     }
@@ -1939,11 +1945,11 @@ void Base::getFitsSliceCmd(int ii)
 void Base::getGridCmd()
 {
   if (grid) {
-    Tcl_AppendElement(interp, coordSystemStr_[(grid->system())]);
+    Tcl_AppendElement(interp, coord.coordSystemStr((grid->system())));
 
-    Tcl_AppendElement(interp, skyFrameStr_[(grid->sky())]);
+    Tcl_AppendElement(interp, coord.skyFrameStr((grid->sky())));
 
-    Tcl_AppendElement(interp, skyFormatStr_[grid->skyFormat()]);
+    Tcl_AppendElement(interp, coord.skyFormatStr(grid->skyFormat()));
 
     switch (grid->type()) {
     case Grid::ANALYSIS:
@@ -1974,16 +1980,15 @@ void Base::getHeightCmd()
 
 void Base::getHistogramCmd(char* xName, char* yName)
 {
-  currentContext->bltHist(interp,xName,yName);
-  printDouble((currentContext->frScale.max()-currentContext->frScale.min())/256., DEFAULT);
+  currentContext->bltHist(xName, yName, 256);
 }
 
 void Base::getHorzCutCmd(char* xx, char* yy, const Vector& vv, 
-			 InternalSystem ref)
+			 Coord::InternalSystem ref)
 {
   Vector rr;
   if (FitsImage* ptr = isInFits(vv, ref, &rr))
-    bltCut(xx, yy, XX, rr);
+    bltCut(xx, yy, Coord::XX, rr);
 }
 
 void Base::getInfoCmd(char* var)
@@ -2004,7 +2009,7 @@ void Base::getInfoCmd(char* var)
   getInfoClearValue(var);
 }
 
-void Base::getInfoCmd(const Vector& vv, InternalSystem ref, char* var)
+void Base::getInfoCmd(const Vector& vv, Coord::InternalSystem ref, char* var)
 {
   FitsBound* params;
   int mosaic;
@@ -2056,18 +2061,18 @@ void Base::getInfoCmd(const Vector& vv, InternalSystem ref, char* var)
       Tcl_SetVar2(interp,var,"value",(char*)sptr->getValue(img),0);
       CLEARSIGBUS
 
-      coordToTclArray(sptr,rr,IMAGE,FIXED,var,"image");
+      coordToTclArray(sptr,rr,Coord::IMAGE,FIXED,var,"image");
       // use first slice
-      coord3ToTclArray(ptr,rr,IMAGE,FIXED,var,"image");
+      coord3ToTclArray(ptr,rr,Coord::IMAGE,FIXED,var,"image");
 
-      coordToTclArray(sptr,rr,PHYSICAL,FIXED,var,"physical");
+      coordToTclArray(sptr,rr,Coord::PHYSICAL,FIXED,var,"physical");
       // use first slice
-      coord3ToTclArray(ptr,rr,PHYSICAL,FIXED,var,"physical");
+      coord3ToTclArray(ptr,rr,Coord::PHYSICAL,FIXED,var,"physical");
 
       if (hasATMV()) {
-	coordToTclArray(sptr,rr,AMPLIFIER,FIXED,var,"amplifier");
+	coordToTclArray(sptr,rr,Coord::AMPLIFIER,FIXED,var,"amplifier");
 	// use first slice
-	coord3ToTclArray(ptr,rr,AMPLIFIER,FIXED,var,"amplifier");
+	coord3ToTclArray(ptr,rr,Coord::AMPLIFIER,FIXED,var,"amplifier");
       }
       else {
 	Tcl_SetVar2(interp,var,"amplifier,x","",0);
@@ -2076,9 +2081,9 @@ void Base::getInfoCmd(const Vector& vv, InternalSystem ref, char* var)
       }
 
       if (hasDTMV()) {
-	coordToTclArray(sptr,rr,DETECTOR,FIXED,var,"detector");
+	coordToTclArray(sptr,rr,Coord::DETECTOR,FIXED,var,"detector");
 	// use first slice
-	coord3ToTclArray(ptr,rr,DETECTOR,FIXED,var,"detector");
+	coord3ToTclArray(ptr,rr,Coord::DETECTOR,FIXED,var,"detector");
       }
       else {
 	Tcl_SetVar2(interp,var,"detector,x","",0);
@@ -2089,7 +2094,7 @@ void Base::getInfoCmd(const Vector& vv, InternalSystem ref, char* var)
       for (int i=0; i<MULTWCS; i++) {
 	char buf[64];
 	char w = !i ? NULL : '`'+i;
-	CoordSystem www = (CoordSystem)(WCS+i);
+	Coord::CoordSystem www = (Coord::CoordSystem)(Coord::WCS+i);
 
 	if (hasWCS(www)) {
 	  char buff[128];
@@ -2194,16 +2199,16 @@ void Base::getNANColorCmd()
 void Base::getOrientCmd()
 {
   switch (orientation) {
-  case NORMAL:
+  case Coord::NORMAL:
     Tcl_AppendResult(interp, "none", NULL);
     return;
-  case XX:
+  case Coord::XX:
     Tcl_AppendResult(interp, "x", NULL);
     return;
-  case YY:
+  case Coord::YY:
     Tcl_AppendResult(interp, "y", NULL);
     return;
-  case XY:
+  case Coord::XY:
     Tcl_AppendResult(interp, "xy", NULL);
     return;
   }
@@ -2217,7 +2222,7 @@ void Base::getPanPreserveCmd()
     Tcl_AppendResult(interp, "0", NULL);
 }
 
-void Base::getPixelTableCmd(const Vector& vv, InternalSystem ref,
+void Base::getPixelTableCmd(const Vector& vv, Coord::InternalSystem ref,
 			    int ww, int hh, char* var)
 {
   Vector rr;
@@ -2332,7 +2337,7 @@ void Base::getSmoothRadiusCmd()
   printInteger(smoothRadius_);
 }
 
-void Base::getValueCmd(const Vector& vv, InternalSystem sys)
+void Base::getValueCmd(const Vector& vv, Coord::InternalSystem sys)
 {
   Vector rr;
   SETSIGBUS
@@ -2342,18 +2347,18 @@ void Base::getValueCmd(const Vector& vv, InternalSystem sys)
 }
 
 void Base::getVertCutCmd(char* xx, char* yy, const Vector& vv,
-			 InternalSystem ref)
+			 Coord::InternalSystem ref)
 {
   Vector rr;
   if (FitsImage* ptr = isInFits(vv, ref, &rr))
-    bltCut(xx, yy, YY, rr);
+    bltCut(xx, yy, Coord::YY, rr);
 }
 
 void Base::getWCSCmd()
 {
-  Tcl_AppendResult(interp, coordSystemStr_[wcsSystem_], " ",
-		   skyFrameStr_[wcsSky_], " ",
-		   skyFormatStr_[wcsSkyFormat_], NULL);
+  Tcl_AppendResult(interp, coord.coordSystemStr(wcsSystem_), " ",
+		   coord.skyFrameStr(wcsSky_), " ",
+		   coord.skyFormatStr(wcsSkyFormat_), NULL);
 }
 
 void Base::getWCSAlignCmd()
@@ -2371,10 +2376,10 @@ void Base::getWCSAlignPointerCmd()
 
   Tcl_AppendResult(interp, (wcsAlign_ ? "1" : "0"), " ", 
 		   str.str().c_str(), " ",
-		   coordSystemStr_[wcsSystem_], NULL);
+		   coord.coordSystemStr(wcsSystem_), NULL);
 }
 
-void Base::getWCSNameCmd(CoordSystem sys)
+void Base::getWCSNameCmd(Coord::CoordSystem sys)
 {
   if (currentContext->cfits && currentContext->cfits->hasWCS(sys)) {
     char* wcsname = (char*)currentContext->cfits->getWCSName(sys);
@@ -2414,6 +2419,17 @@ void Base::hasAmplifierCmd()
     Tcl_AppendResult(interp, "0", NULL);
 }
 
+void Base::hasBinColCmd(const char* str)
+{
+  if (currentContext->fits) {
+    if (currentContext->fits->hasBinCol(str)) {
+      Tcl_AppendResult(interp, "1", NULL);
+      return;
+    }
+  }
+  Tcl_AppendResult(interp, "0", NULL);
+}
+
 void Base::hasContourCmd()
 {
   if (hasContour())
@@ -2547,19 +2563,19 @@ void Base::hasSmoothCmd()
     Tcl_AppendResult(interp, "0", NULL);
 }
 
-void Base::hasSystemCmd(CoordSystem sys)
+void Base::hasSystemCmd(Coord::CoordSystem sys)
 {
   switch (sys) {
-  case IMAGE:
+  case Coord::IMAGE:
     Tcl_AppendResult(interp, "1", NULL);
     return;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     hasPhysicalCmd();
     return;
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     hasAmplifierCmd();
     return;
-  case DETECTOR:
+  case Coord::DETECTOR:
     hasDetectorCmd();
     return;
   default:
@@ -2568,7 +2584,7 @@ void Base::hasSystemCmd(CoordSystem sys)
   }
 }
 
-void Base::hasWCSCmd(CoordSystem sys)
+void Base::hasWCSCmd(Coord::CoordSystem sys)
 {
   Tcl_AppendResult(interp, (hasWCS(sys) ? "1" : "0"), NULL);
 }
@@ -2578,12 +2594,12 @@ void Base::hasWCSAltCmd()
   Tcl_AppendResult(interp, (wcsAlt_ ? "1" : "0"), NULL);
 }
 
-void Base::hasWCSEquCmd(CoordSystem sys)
+void Base::hasWCSEquCmd(Coord::CoordSystem sys)
 {
   Tcl_AppendResult(interp, (hasWCSEqu(sys) ? "1" : "0"), NULL);
 }
 
-void Base::hasWCSCelCmd(CoordSystem sys)
+void Base::hasWCSCelCmd(Coord::CoordSystem sys)
 {
   Tcl_AppendResult(interp, (hasWCSCel(sys) ? "1" : "0"), NULL);
 }
@@ -2749,21 +2765,21 @@ void Base::nanColorCmd(const char* color)
   update(BASE);
 }
 
-void Base::orientCmd(Orientation which)
+void Base::orientCmd(Coord::Orientation which)
 {
   orientation = which;
 
   switch (orientation) {
-  case NORMAL:
+  case Coord::NORMAL:
     orientationMatrix.identity();
     break;
-  case XX:
+  case Coord::XX:
     orientationMatrix = FlipX();
     break;
-  case YY:
+  case Coord::YY:
     orientationMatrix = FlipY();
     break;
-  case XY:
+  case Coord::XY:
     orientationMatrix = FlipXY();
     break;
   }
@@ -2872,7 +2888,7 @@ void Base::pannerCmd(char* n, int w, int h)
   update(MATRIX);
 }
 
-void Base::pannerCmd(CoordSystem sys, SkyFrame sky)
+void Base::pannerCmd(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   pannerSystem = sys;
   pannerSky = sky;
@@ -3052,10 +3068,10 @@ void Base::updateFitsCmd(int which, BBox bb, int now)
   if (ptr) {
     BBox bbb = bb*ptr->imageToRef;
 
-    Vector ll = mapFromRef(bbb.ll,CANVAS);
-    Vector lr = mapFromRef(bbb.lr(),CANVAS);
-    Vector ur = mapFromRef(bbb.ur,CANVAS);
-    Vector ul = mapFromRef(bbb.ul(),CANVAS);
+    Vector ll = mapFromRef(bbb.ll,Coord::CANVAS);
+    Vector lr = mapFromRef(bbb.lr(),Coord::CANVAS);
+    Vector ur = mapFromRef(bbb.ur,Coord::CANVAS);
+    Vector ul = mapFromRef(bbb.ul(),Coord::CANVAS);
 
     BBox rr(ll);
     rr.bound(lr);
@@ -3094,7 +3110,7 @@ void Base::warpToCmd(const Vector& vv)
   XWarpPointer(display, None, Tk_WindowId(tkwin), 0, 0, 0, 0, aa[0], aa[1]);
 }
 
-void Base::wcsCmd(CoordSystem sys, SkyFrame sky, SkyFormat format)
+void Base::wcsCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format)
 {
   wcsSystem_ = sys;
   wcsSky_ = sky;
@@ -3110,7 +3126,7 @@ void Base::wcsAlignCmd(int which)
 }
 
 // used by backup
-void Base::wcsAlignCmd(int which, CoordSystem sys, SkyFrame sky)
+void Base::wcsAlignCmd(int which, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   wcsAlign_ = which;
 
@@ -3118,7 +3134,7 @@ void Base::wcsAlignCmd(int which, CoordSystem sys, SkyFrame sky)
   update(MATRIX);
 }
 
-void Base::wcsAlignCmd(int which, FitsImage* ptr, CoordSystem sys)
+void Base::wcsAlignCmd(int which, FitsImage* ptr, Coord::CoordSystem sys)
 {
   wcsAlign_ = which;
 
@@ -3141,7 +3157,10 @@ void Base::wcsAppendCmd(int which, int fd)
   FitsImage* rr = findAllFits(which);
   if (rr) {
     FitsHead* hh = parseWCS(str);
-    rr->appendWCS(hh);
+    while (rr) {
+      rr->appendWCS(hh);
+      rr=rr->nextSlice();
+    }
     delete hh;
   }
   else
@@ -3163,7 +3182,10 @@ void Base::wcsAppendCmd(int which, const char* fn)
   FitsImage* rr = findAllFits(which);
   if (rr) {
     FitsHead* hh = parseWCS(str);
-    rr->appendWCS(hh);
+    while (rr) {
+      rr->appendWCS(hh);
+      rr=rr->nextSlice();
+    }
     delete hh;
   }
   else
@@ -3185,7 +3207,10 @@ void Base::wcsAppendTxtCmd(int which, const char* txt)
   FitsImage* rr = findAllFits(which);
   if (rr) {
     FitsHead* hh = parseWCS(str);
-    rr->appendWCS(hh);
+    while (rr) {
+      rr->appendWCS(hh);
+      rr=rr->nextSlice();
+    }
     delete hh;
   }
   else
@@ -3201,7 +3226,10 @@ void Base::wcsResetCmd(int which)
 
   FitsImage* rr = findAllFits(which);
   if (rr)
-    rr->resetWCS();
+    while (rr) {
+      rr->resetWCS();
+      rr=rr->nextSlice();
+    }
   else
     result = TCL_ERROR;
 }
@@ -3221,7 +3249,10 @@ void Base::wcsReplaceCmd(int which, int fd)
   FitsImage* rr = findAllFits(which);
   if (rr) {
     FitsHead* hh = parseWCS(str);
-    rr->replaceWCS(hh);
+    while (rr) {
+      rr->replaceWCS(hh);
+      rr=rr->nextSlice();
+    }
     delete hh;
 
     wcsAlt_ =1;
@@ -3245,7 +3276,10 @@ void Base::wcsReplaceCmd(int which, const char* fn)
   FitsImage* rr = findAllFits(which);
   if (rr) {
     FitsHead* hh = parseWCS(str);
-    rr->replaceWCS(hh);
+    while (rr) {
+      rr->replaceWCS(hh);
+      rr=rr->nextSlice();
+    }
     delete hh;
     wcsAlt_ =1;
   }
@@ -3268,7 +3302,10 @@ void Base::wcsReplaceTxtCmd(int which, const char* txt)
   FitsImage* rr = findAllFits(which);
   if (rr) {
     FitsHead* hh = parseWCS(str);
-    rr->replaceWCS(hh);
+    while (rr) {
+      rr->replaceWCS(hh);
+      rr=rr->nextSlice();
+    }
     delete hh;
     wcsAlt_ =1;
   }
@@ -3289,4 +3326,3 @@ void Base::zoomToCmd(const Vector& z)
   zoom_ = ((Vector&)z).abs();
   update(MATRIX);
 }
-
diff --git a/saotk/frame/baseellipse.C b/saotk/frame/baseellipse.C
index 2bf79c1..9af162e 100644
--- a/saotk/frame/baseellipse.C
+++ b/saotk/frame/baseellipse.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "baseellipse.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 BaseEllipse::BaseEllipse(const BaseEllipse& a) : BaseMarker(a) {}
@@ -14,19 +13,23 @@ BaseEllipse::BaseEllipse(Base* p, const Vector& ctr,
 			 int w, const char* f, 
 			 const char* t, unsigned short prop, const char* c,
 			 const List<Tag>& tag, const List<CallBack>& cb)
-  : BaseMarker(p, ctr, ang, clr, dsh, w, f, t, prop, c, tag, cb) {}
+  : BaseMarker(p, ctr, ang, clr, dsh, w, f, t, prop, c, tag, cb)
+{
+}
 
-BaseEllipse::~BaseEllipse() {}
+BaseEllipse::~BaseEllipse()
+{
+}
 
-void BaseEllipse::renderX(Drawable drawable, InternalSystem sys, 
+void BaseEllipse::renderX(Drawable drawable, Coord::InternalSystem sys, 
 			  RenderMode mode)
 {
   double ang = calcAngle();
   Vector r = annuli_[numAnnuli_-1];
   Vector z = parent->zoom();
 
-  int isOrient = parent->getOrientation() == NORMAL && 
-    parent->getWCSOrientation() == NORMAL;
+  int isOrient = parent->getOrientation() == Coord::NORMAL && 
+    parent->getWCSOrientation() == Coord::NORMAL;
   int isRound = r[0] == r[1];
   int isScale = z[0] == z[1];
   int isAngle = teq(ang,0,FLT_EPSILON) || teq(ang,M_PI,FLT_EPSILON);
@@ -39,7 +42,7 @@ void BaseEllipse::renderX(Drawable drawable, InternalSystem sys,
     renderXEllipseCurve(drawable, sys, mode);
 }
 
-void BaseEllipse::renderXCircle(Drawable drawable, InternalSystem sys, 
+void BaseEllipse::renderXCircle(Drawable drawable, Coord::InternalSystem sys, 
 				double ang, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
@@ -75,7 +78,7 @@ void BaseEllipse::renderXCircle(Drawable drawable, InternalSystem sys,
   }
 }
 
-void BaseEllipse::renderXEllipse(Drawable drawable, InternalSystem sys, 
+void BaseEllipse::renderXEllipse(Drawable drawable, Coord::InternalSystem sys, 
 				 double ang, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
@@ -109,7 +112,7 @@ void BaseEllipse::renderXEllipse(Drawable drawable, InternalSystem sys,
   }
 }
 
-void BaseEllipse::renderXEllipseCurve(Drawable drawable, InternalSystem sys,
+void BaseEllipse::renderXEllipseCurve(Drawable drawable, Coord::InternalSystem sys,
 				      RenderMode mode)
 {
   double a1 = startAng_;
@@ -139,7 +142,7 @@ void BaseEllipse::renderXEllipseCurve(Drawable drawable, InternalSystem sys,
   }
 }
 
-void BaseEllipse::renderXEllipsePrep(Drawable drawable, InternalSystem sys, 
+void BaseEllipse::renderXEllipsePrep(Drawable drawable, Coord::InternalSystem sys, 
 				     RenderMode mode, 
 				     double a1, double a2, 
 				     double b1, double b2, 
@@ -158,7 +161,7 @@ void BaseEllipse::renderXEllipsePrep(Drawable drawable, InternalSystem sys,
     renderXEllipseArc(drawable, sys, mode, a1,a2,r);
 }				
 
-void BaseEllipse::renderXEllipseArc(Drawable drawable, InternalSystem sys,
+void BaseEllipse::renderXEllipseArc(Drawable drawable, Coord::InternalSystem sys,
 				    RenderMode mode,
 				    double a1, double a2, Vector& rr)
 {
@@ -190,7 +193,7 @@ void BaseEllipse::renderXEllipseArc(Drawable drawable, InternalSystem sys,
   XDrawCurve(drawable, mode, tt0, xx1, xx2, tt1);
 }
 
-void BaseEllipse::renderXInclude(Drawable drawable, InternalSystem sys, 
+void BaseEllipse::renderXInclude(Drawable drawable, Coord::InternalSystem sys, 
 				 RenderMode mode)
 {
   if (!(properties & INCLUDE)) {
@@ -216,8 +219,8 @@ void BaseEllipse::renderPS(int mode) {
   Vector r = annuli_[numAnnuli_-1];
   Vector z = parent->zoom();
 
-  int isOrient = parent->getOrientation() == NORMAL && 
-    parent->getWCSOrientation() == NORMAL;
+  int isOrient = parent->getOrientation() == Coord::NORMAL && 
+    parent->getWCSOrientation() == Coord::NORMAL;
   int isRound = r[0] == r[1];
   int isScale = z[0] == z[1];
 
@@ -231,13 +234,13 @@ void BaseEllipse::renderPSCircle(int mode)
 {
   renderPSGC(mode);
 
-  Vector cc = parent->mapFromRef(center,CANVAS);
+  Vector cc = parent->mapFromRef(center,Coord::CANVAS);
   double ang = calcAngle();
 
   for (int ii=0; ii<numAnnuli_; ii++) {
     Vector r = annuli_[ii];
 
-    Vector ur = fwdMap(r,CANVAS);
+    Vector ur = fwdMap(r,Coord::CANVAS);
     double l = (ur-cc).length() * cos(M_PI_4);
 
     // don't render zero length arcs
@@ -330,10 +333,10 @@ void BaseEllipse::renderPSEllipseArc(double a1, double a2, Vector& rr)
 		     rr[1]*(sin(aa2)-bcp*cos(aa2)));
   Vector t1 = intersect(rr,a2);
 
-  Vector tt0 = fwdMap(t0*FlipY(),CANVAS);
-  Vector xx1 = fwdMap(x1*FlipY(),CANVAS);
-  Vector xx2 = fwdMap(x2*FlipY(),CANVAS);
-  Vector tt1 = fwdMap(t1*FlipY(),CANVAS);
+  Vector tt0 = fwdMap(t0*FlipY(),Coord::CANVAS);
+  Vector xx1 = fwdMap(x1*FlipY(),Coord::CANVAS);
+  Vector xx2 = fwdMap(x2*FlipY(),Coord::CANVAS);
+  Vector tt1 = fwdMap(t1*FlipY(),Coord::CANVAS);
 
   ostringstream str;
   str <<
@@ -356,10 +359,10 @@ void BaseEllipse::renderPSInclude(int mode)
     double theta = degToRad(45);
     Vector r1 = fwdMap(Vector(annuli_[numAnnuli_-1][0]*cos(theta), 
 					annuli_[numAnnuli_-1][1]*sin(theta)),
-				 CANVAS);
+				 Coord::CANVAS);
     Vector r2 = fwdMap(Vector(-annuli_[numAnnuli_-1][0]*cos(theta), 
 					-annuli_[numAnnuli_-1][1]*sin(theta)),
-				 CANVAS);
+				 Coord::CANVAS);
 
     renderPSColor(mode, parent->getXColor("red"));
 
@@ -377,8 +380,8 @@ void BaseEllipse::renderMACOSX() {
   Vector r = annuli_[numAnnuli_-1];
   Vector z = parent->zoom();
 
-  int isOrient = parent->getOrientation() == NORMAL && 
-    parent->getWCSOrientation() == NORMAL;
+  int isOrient = parent->getOrientation() == Coord::NORMAL && 
+    parent->getWCSOrientation() == Coord::NORMAL;
   int isRound = r[0] == r[1];
   int isScale = z[0] == z[1];
 
@@ -392,13 +395,13 @@ void BaseEllipse::renderMACOSXCircle()
 {
   renderMACOSXGC();
 
-  Vector cc = parent->mapFromRef(center,CANVAS);
+  Vector cc = parent->mapFromRef(center,Coord::CANVAS);
   double ang = calcAngle();
 
   for (int ii=0; ii<numAnnuli_; ii++) {
     Vector r = annuli_[ii];
 
-    Vector ur = fwdMap(r,CANVAS);
+    Vector ur = fwdMap(r,Coord::CANVAS);
     double l = (ur-cc).length() * cos(M_PI_4);
 
     // don't render zero length arcs
@@ -484,10 +487,10 @@ void BaseEllipse::renderMACOSXEllipseArc(double a1, double a2, Vector& rr)
 		     rr[1]*(sin(aa2)-bcp*cos(aa2)));
   Vector t1 = intersect(rr,a2);
 
-  Vector tt0 = fwdMap(t0*FlipY(),CANVAS);
-  Vector xx1 = fwdMap(x1*FlipY(),CANVAS);
-  Vector xx2 = fwdMap(x2*FlipY(),CANVAS);
-  Vector tt1 = fwdMap(t1*FlipY(),CANVAS);
+  Vector tt0 = fwdMap(t0*FlipY(),Coord::CANVAS);
+  Vector xx1 = fwdMap(x1*FlipY(),Coord::CANVAS);
+  Vector xx2 = fwdMap(x2*FlipY(),Coord::CANVAS);
+  Vector tt1 = fwdMap(t1*FlipY(),Coord::CANVAS);
 
   macosxDrawCurve(tt0, xx1, xx2, tt1);
 }
@@ -498,10 +501,10 @@ void BaseEllipse::renderMACOSXInclude()
     double theta = degToRad(45);
     Vector r1 = fwdMap(Vector(annuli_[numAnnuli_-1][0]*cos(theta), 
 					annuli_[numAnnuli_-1][1]*sin(theta)),
-				 CANVAS);
+				 Coord::CANVAS);
     Vector r2 = fwdMap(Vector(-annuli_[numAnnuli_-1][0]*cos(theta), 
 					-annuli_[numAnnuli_-1][1]*sin(theta)),
-				 CANVAS);
+				 Coord::CANVAS);
 
     macosxColor(parent->getXColor("red"));
     macosxDrawLine(r1,r2);
@@ -514,8 +517,8 @@ void BaseEllipse::renderWIN32() {
   Vector r = annuli_[numAnnuli_-1];
   Vector z = parent->zoom();
 
-  int isOrient = parent->getOrientation() == NORMAL && 
-    parent->getWCSOrientation() == NORMAL;
+  int isOrient = parent->getOrientation() == Coord::NORMAL && 
+    parent->getWCSOrientation() == Coord::NORMAL;
   int isRound = r[0] == r[1];
   int isScale = z[0] == z[1];
 
@@ -529,13 +532,13 @@ void BaseEllipse::renderWIN32Circle()
 {
   renderWIN32GC();
 
-  Vector cc = parent->mapFromRef(center,CANVAS);
+  Vector cc = parent->mapFromRef(center,Coord::CANVAS);
   double ang = calcAngle();
 
   for (int i=0; i<numAnnuli_; i++) {
     Vector r = annuli_[i];
 
-    Vector ur = fwdMap(r,CANVAS);
+    Vector ur = fwdMap(r,Coord::CANVAS);
     double l = (ur-cc).length() * cos(M_PI_4);
 
     // don't render zero length arcs
@@ -621,10 +624,10 @@ void BaseEllipse::renderWIN32EllipseArc(double a1, double a2, Vector& rr)
 		     rr[1]*(sin(aa2)-bcp*cos(aa2)));
   Vector t1 = intersect(rr,a2);
 
-  Vector tt0 = fwdMap(t0*FlipY(),CANVAS);
-  Vector xx1 = fwdMap(x1*FlipY(),CANVAS);
-  Vector xx2 = fwdMap(x2*FlipY(),CANVAS);
-  Vector tt1 = fwdMap(t1*FlipY(),CANVAS);
+  Vector tt0 = fwdMap(t0*FlipY(),Coord::CANVAS);
+  Vector xx1 = fwdMap(x1*FlipY(),Coord::CANVAS);
+  Vector xx2 = fwdMap(x2*FlipY(),Coord::CANVAS);
+  Vector tt1 = fwdMap(t1*FlipY(),Coord::CANVAS);
 
   win32DrawCurve(tt0, xx1, xx2, tt1);
 }
@@ -635,10 +638,10 @@ void BaseEllipse::renderWIN32Include()
     double theta = degToRad(45);
     Vector r1 = fwdMap(Vector(annuli_[numAnnuli_-1][0]*cos(theta), 
 					annuli_[numAnnuli_-1][1]*sin(theta)),
-				 CANVAS);
+				 Coord::CANVAS);
     Vector r2 = fwdMap(Vector(-annuli_[numAnnuli_-1][0]*cos(theta), 
 					-annuli_[numAnnuli_-1][1]*sin(theta)),
-				 CANVAS);
+				 Coord::CANVAS);
 
     win32Color(parent->getXColor("red"));
     win32DrawLine(r1,r2);
@@ -662,29 +665,28 @@ void BaseEllipse::updateHandles()
       max = annuli_[ii];
   Vector& r = max;
 
-  handle[0] = fwdMap(Vector(-r[0],-r[1]),CANVAS);
-  handle[1] = fwdMap(Vector( r[0],-r[1]),CANVAS);
-  handle[2] = fwdMap(Vector( r[0], r[1]),CANVAS);
-  handle[3] = fwdMap(Vector(-r[0], r[1]),CANVAS);
+  handle[0] = fwdMap(Vector(-r[0],-r[1]),Coord::CANVAS);
+  handle[1] = fwdMap(Vector( r[0],-r[1]),Coord::CANVAS);
+  handle[2] = fwdMap(Vector( r[0], r[1]),Coord::CANVAS);
+  handle[3] = fwdMap(Vector(-r[0], r[1]),Coord::CANVAS);
 
   // annuli_
   if (numAnnuli_>1)
     for (int ii=0; ii<numAnnuli_; ii++)
-      handle[ii+4] = fwdMap(Vector(annuli_[ii][0],0),CANVAS);
+      handle[ii+4] = fwdMap(Vector(annuli_[ii][0],0),Coord::CANVAS);
 }
 
-int BaseEllipse::isIn(const Vector& v)
+int BaseEllipse::isIn(const Vector& vv, Coord::InternalSystem sys)
 {
-  // v is in canvas coords
-  Vector r = annuli_[numAnnuli_-1];
+  Vector rr = annuli_[numAnnuli_-1];
 
   // zero radius
-  if (!r[0] || !r[1])
+  if (!rr[0] || !rr[1])
     return 0;
 
-  Vector p = bckMap(v,CANVAS);
+  Vector pp = bckMap(vv,sys);
 
-  if ((p[0]*p[0])/(r[0]*r[0]) + (p[1]*p[1])/(r[1]*r[1]) <= 1)
+  if ((pp[0]*pp[0])/(rr[0]*rr[0]) + (pp[1]*pp[1])/(rr[1]*rr[1]) <= 1)
     return 1;
   else
     return 0;
diff --git a/saotk/frame/baseellipse.h b/saotk/frame/baseellipse.h
index 75ba206..ce4e911 100644
--- a/saotk/frame/baseellipse.h
+++ b/saotk/frame/baseellipse.h
@@ -12,14 +12,14 @@ class BaseEllipse : public BaseMarker {
   double xyz(Vector rr, double ang);
   void XDrawCurve(Drawable, RenderMode, Vector&, Vector&, Vector&, Vector&);
 
-  void renderXCircle(Drawable, InternalSystem, double, RenderMode);
-  void renderXEllipse(Drawable, InternalSystem, double, RenderMode);
-  void renderXEllipseCurve(Drawable, InternalSystem, RenderMode);
-  void renderXEllipsePrep(Drawable, InternalSystem, RenderMode,
+  void renderXCircle(Drawable, Coord::InternalSystem, double, RenderMode);
+  void renderXEllipse(Drawable, Coord::InternalSystem, double, RenderMode);
+  void renderXEllipseCurve(Drawable, Coord::InternalSystem, RenderMode);
+  void renderXEllipsePrep(Drawable, Coord::InternalSystem, RenderMode,
 			  double, double, double, double, Vector&);
-  void renderXEllipseArc(Drawable, InternalSystem, RenderMode, 
+  void renderXEllipseArc(Drawable, Coord::InternalSystem, RenderMode, 
 			 double, double, Vector&);
-  void renderXInclude(Drawable, InternalSystem, RenderMode);
+  void renderXInclude(Drawable, Coord::InternalSystem, RenderMode);
 
   void renderPSCircle(int);
   void renderPSEllipseCurve(int);
@@ -44,7 +44,7 @@ class BaseEllipse : public BaseMarker {
 #endif
 
  protected:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
@@ -67,7 +67,9 @@ class BaseEllipse : public BaseMarker {
   virtual ~BaseEllipse();
 
   virtual Marker* dup() =0;
-  int isIn(const Vector&);
+
+  int isIn(const Vector& vv) {return isIn(vv, Coord::CANVAS);}
+  int isIn(const Vector&, Coord::InternalSystem);
 };
 
 #endif
diff --git a/saotk/frame/baseline.C b/saotk/frame/baseline.C
index 1617ef4..e2a121b 100644
--- a/saotk/frame/baseline.C
+++ b/saotk/frame/baseline.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "baseline.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 BaseLine::BaseLine(const BaseLine& a) : Marker(a)
@@ -63,8 +62,8 @@ void BaseLine::moveTo(const Vector& v)
 int BaseLine::isIn(const Vector& v)
 {
   // do this in canvas coords, not ref coords
-  Vector l1 = parent->mapFromRef(p1,CANVAS);
-  Vector l2 = parent->mapFromRef(p2,CANVAS);
+  Vector l1 = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector l2 = parent->mapFromRef(p2,Coord::CANVAS);
   double a = (l2-l1).angle();
 
   Matrix m = Translate(-l1) * Rotate(a);
diff --git a/saotk/frame/baseline.h b/saotk/frame/baseline.h
index 1551060..2801549 100644
--- a/saotk/frame/baseline.h
+++ b/saotk/frame/baseline.h
@@ -12,7 +12,7 @@ protected:
   Vector p1;
   Vector p2;
 
-  void renderXInclude(Drawable, InternalSystem, RenderMode) {}
+  void renderXInclude(Drawable, Coord::InternalSystem, RenderMode) {}
 
   void renderPSInclude(int) {}
 
diff --git a/saotk/frame/basemarker.C b/saotk/frame/basemarker.C
index f6ead56..191915d 100644
--- a/saotk/frame/basemarker.C
+++ b/saotk/frame/basemarker.C
@@ -3,7 +3,7 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "basemarker.h"
-#include "framebase.h"
+#include "base.h"
 
 // Base Markers Public
 
@@ -175,7 +175,7 @@ Matrix BaseMarker::bckMatrix()
     return Marker::bckMatrix();
 }
 
-Vector BaseMarker::fwdMap(const Vector& vv, InternalSystem sys)
+Vector BaseMarker::fwdMap(const Vector& vv, Coord::InternalSystem sys)
 {
   if (properties & FIXED) {
     Vector cc = center * parent->refToCanvas;
@@ -187,7 +187,7 @@ Vector BaseMarker::fwdMap(const Vector& vv, InternalSystem sys)
     return Marker::fwdMap(vv,sys);
 }
 
-Vector BaseMarker::bckMap(const Vector& vv, InternalSystem sys)
+Vector BaseMarker::bckMap(const Vector& vv, Coord::InternalSystem sys)
 {
   if (properties & FIXED) {
     Vector aa = parent->mapToRef(vv,sys);
diff --git a/saotk/frame/basemarker.h b/saotk/frame/basemarker.h
index 53d4fb5..3de5e37 100644
--- a/saotk/frame/basemarker.h
+++ b/saotk/frame/basemarker.h
@@ -24,8 +24,8 @@ protected:
 
   Matrix fwdMatrix();
   Matrix bckMatrix();
-  Vector fwdMap(const Vector&, InternalSystem);
-  Vector bckMap(const Vector&, InternalSystem);
+  Vector fwdMap(const Vector&, Coord::InternalSystem);
+  Vector bckMap(const Vector&, Coord::InternalSystem);
 
 public:
   BaseMarker(const BaseMarker&);
diff --git a/saotk/frame/basepanda.C b/saotk/frame/basepanda.C
index a657331..0cd768a 100644
--- a/saotk/frame/basepanda.C
+++ b/saotk/frame/basepanda.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "basepanda.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 BasePanda::BasePanda(const BasePanda& a)
diff --git a/saotk/frame/box.C b/saotk/frame/box.C
index 386a603..2e44ff3 100644
--- a/saotk/frame/box.C
+++ b/saotk/frame/box.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "box.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Box::Box(const Box& a) : BaseBox(a) {}
@@ -21,7 +20,7 @@ Box::Box(Base* p, const Vector& ctr,
   annuli_ = new Vector[1];
   annuli_[0] = seg;
 
-  strcpy(type,"box");
+  strcpy(type_,"box");
   numHandle = 4;
 
   updateBBox();
@@ -70,23 +69,60 @@ void Box::editEnd()
   doCallBack(CallBack::EDITENDCB);
 }
 
+void Box::analysis(AnalysisMethod mm, int which)
+{
+  switch (mm) {
+  case PLOT3D:
+    if (!analysisPlot3d_ && which) {
+      addCallBack(CallBack::MOVECB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::EDITCB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::ROTATECB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::DELETECB, analysisPlot3dCB_[1], 
+		  parent->options->cmdName);
+    }
+    if (analysisPlot3d_ && !which) {
+      deleteCallBack(CallBack::MOVECB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::EDITCB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::ROTATECB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::DELETECB, analysisPlot3dCB_[1]);
+    }
+
+    analysisPlot3d_ = which;
+    break;
+  }
+}
+
+void Box::analysisPlot3d(char* xname, char* yname)
+{
+  double* x;
+  double* y;
+  Vector ll = -annuli_[0] * Rotate(angle) * Translate(center);
+  Vector ur =  annuli_[0] * Rotate(angle) * Translate(center);
+  BBox bb(ll,ur);
+  int num = parent->markerAnalysisPlot3d(&x, &y, this, bb);
+  analysisPlot3dResult(xname, yname, x, y, num);
+}
+
 // list
 
-void Box::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		   SkyFormat format, int conj, int strip)
+void Box::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		   Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       Vector r = ptr->mapLenFromRef(annuli_[0],sys);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	  << r[0] << ',' << r[1] << ',' 
 	  << radToDeg(parent->mapAngleFromRef(angle,sys)) << ')';
     }
@@ -95,16 +131,16 @@ void Box::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 		<< r[0] << "\"" << ',' << r[1] << "\"" << ',' 
 		<< radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -114,8 +150,8 @@ void Box::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	    istringstream wcs(x);
 	    wcs >> ra >> dec;
 
-	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    str << type << '(' << ra << ',' << dec << ',' 
+	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    str << type_ << '(' << ra << ',' << dec << ',' 
 		<< r[0] << "\""<< ',' << r[1] << "\""<< ',' 
 		<< radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
@@ -125,7 +161,7 @@ void Box::list(ostream& str, CoordSystem sys, SkyFrame sky,
       else {
 	Vector v = ptr->mapFromRef(center,sys);
 	Vector r = ptr->mapLenFromRef(annuli_[0],sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	    << r[0] << ',' << r[1] << ',' 
 	    << radToDeg(parent->mapAngleFromRef(angle,sys)) << ')';
       }
@@ -135,13 +171,13 @@ void Box::list(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Box::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		      SkyFormat format)
+void Box::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		      Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadius(ptr,sys,annuli_[0]);
@@ -151,29 +187,29 @@ void Box::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Box::listCiao(ostream& str, CoordSystem sys, int strip)
+void Box::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listCiaoPre(str);
 
   // radius is always in image coords
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,PHYSICAL);
-      Vector s = ptr->mapLenFromRef(annuli_[0],PHYSICAL);
+      Vector v = ptr->mapFromRef(center,Coord::PHYSICAL);
+      Vector s = ptr->mapLenFromRef(annuli_[0],Coord::PHYSICAL);
       str << "rotbox(" << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	  << s[0] << ',' << s[1] << ',' << radToDeg(angle) << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
-      Vector s = ptr->mapLenFromRef(annuli_[0],sys,ARCMIN);
+      Vector s = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCMIN);
       char buf[64];
-      ptr->mapFromRef(center,sys,FK5,SEXAGESIMAL,buf,64);
+      ptr->mapFromRef(center,sys,Coord::FK5,Coord::SEXAGESIMAL,buf,64);
       char ra[16];
       char dec[16];
       string x(buf);
@@ -188,47 +224,47 @@ void Box::listCiao(ostream& str, CoordSystem sys, int strip)
   listCiaoPost(str, strip);
 }
 
-void Box::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-		     SkyFormat format, int strip)
+void Box::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		     Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listSAOtngPre(str, strip);
 
   // radius is always in image coords
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,IMAGE);
-      Vector s = ptr->mapLenFromRef(annuli_[0],IMAGE);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+      Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+      Vector s = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	  << s[0] << ',' << s[1] << ',' << radToDeg(angle) << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  Vector s = ptr->mapLenFromRef(annuli_[0],IMAGE);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+	  Vector s = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	      << s[0] << ',' << s[1] << ',' << radToDeg(angle) << ')';
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
-	  Vector s = ptr->mapLenFromRef(annuli_[0],IMAGE);
+	  Vector s = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
 	  char ra[16];
 	  char dec[16];
 	  string x(buf);
 	  istringstream wcs(x);
 	  wcs >> ra >> dec;
-	  str << type << '(' << ra << ',' << dec << ',' 
+	  str << type_ << '(' << ra << ',' << dec << ',' 
 	      << s[0] << ',' << s[1] << ',' << radToDeg(angle) << ')';
 	}
 	break;
@@ -239,39 +275,39 @@ void Box::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
   listSAOtngPost(str,strip);
 }
 
-void Box::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-		       SkyFormat format, int strip)
+void Box::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		       Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
       Vector v = ptr->mapFromRef(center,sys);
-      Vector r = ptr->mapLenFromRef(annuli_[0],IMAGE);
-      listProsCoordSystem(str,sys,sky);
-      str << "; "<< type << ' ' << setprecision(8) << v << r 
+      Vector r = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
+      coord.listProsCoordSystem(str,sys,sky);
+      str << "; "<< type_ << ' ' << setprecision(8) << v << r 
 	  << radToDeg(angle);
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << setprecision(8) 
+	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << setprecision(8) 
 	      << v[0] << "d " << v[1] << "d "
 	      << r[0] << "\" " << r[1] << "\" " << radToDeg(angle);
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -284,9 +320,9 @@ void Box::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  if (dec[0]=='+')
 	    dec++;
 
-	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << ra << ' ' << dec << ' ' 
+	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << ra << ' ' << dec << ' ' 
 	      << r[0] << "\" " << r[1] << "\" " << radToDeg(angle);
 	}
 	break;
@@ -302,8 +338,8 @@ void Box::listSAOimage(ostream& str, int strip)
   FitsImage* ptr = parent->findFits();
   listSAOimagePre(str);
 
-  Vector v = ptr->mapFromRef(center,IMAGE);
-  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+  Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
       << annuli_[0][0] << ',' << annuli_[0][1] << ',' 
       << radToDeg(angle) << ')';
 
diff --git a/saotk/frame/box.h b/saotk/frame/box.h
index 32b6c91..9d7524d 100644
--- a/saotk/frame/box.h
+++ b/saotk/frame/box.h
@@ -18,17 +18,20 @@ public:
       unsigned short prop, const char* cmt, 
       const List<Tag>& tg, const List<CallBack>& cb);
 
-  Marker* dup() {return new Box(*this);}
+  virtual Marker* dup() {return new Box(*this);}
   void editBegin(int);
   void edit(const Vector&, int);
   void editEnd();
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listCiao(ostream&, CoordSystem, int);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listSAOimage(ostream&, int);
+  void analysis(AnalysisMethod, int);
+  void analysisPlot3d(char*, char*);
+
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  virtual void listCiao(ostream&, Coord::CoordSystem, int);
+  virtual void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listSAOimage(ostream&, int);
 };
 
 #endif
diff --git a/saotk/frame/boxannulus.C b/saotk/frame/boxannulus.C
index 3c8df5f..241d5b5 100644
--- a/saotk/frame/boxannulus.C
+++ b/saotk/frame/boxannulus.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "boxannulus.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 BoxAnnulus::BoxAnnulus(const BoxAnnulus& a) : BaseBox(a) {}
@@ -21,7 +20,7 @@ BoxAnnulus::BoxAnnulus(Base* p, const Vector& ctr,
   annuli_ = new Vector[1];
   annuli_[0] = s;
 
-  strcpy(type,"boxannulus");
+  strcpy(type_,"boxannulus");
   numHandle = 4;
 
   updateBBox();
@@ -42,7 +41,7 @@ BoxAnnulus::BoxAnnulus(Base* p, const Vector& ctr,
   for (int i=0; i<numAnnuli_; i++)
     annuli_[i] = ((outer-inner)/num)*i+inner;
 
-  strcpy(type,"boxannulus");
+  strcpy(type_,"boxannulus");
   numHandle = 4 + numAnnuli_;
 
   updateBBox();
@@ -64,7 +63,7 @@ BoxAnnulus::BoxAnnulus(Base* p, const Vector& ctr,
     annuli_[i] = s[i];
   sortAnnuli();
 
-  strcpy(type, "boxannulus");
+  strcpy(type_, "boxannulus");
   numHandle = 4 + numAnnuli_;
 
   updateBBox();
@@ -147,17 +146,17 @@ int BoxAnnulus::addAnnuli(const Vector& v)
 
 // list
 
-void BoxAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		   SkyFormat format, int conj, int strip)
+void BoxAnnulus::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		   Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       str << "box(" << setprecision(8) << v[0] << ',' << v[1] << ',';
@@ -172,18 +171,18 @@ void BoxAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
 	    str << "box(" << setprecision(8) << v[0] << ',' << v[1] << ',';
 	    for (int i=0; i<numAnnuli_; i++) {
-	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	      str << r[0] << "\"" << ',' << r[1] << "\"" << ',' ;
 	    }
 	    str << radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -195,7 +194,7 @@ void BoxAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
 
 	    str << "box(" << ra << ',' << dec << ',' ;
 	    for (int i=0; i<numAnnuli_; i++) {
-	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	      str << r[0] << "\""<< ',' << r[1] << "\""<< ',' ;
 	    }
 	    str << radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
@@ -218,13 +217,13 @@ void BoxAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void BoxAnnulus::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-			 SkyFormat format)
+void BoxAnnulus::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			 Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadius(ptr,sys,annuli_,numAnnuli_);
@@ -234,28 +233,28 @@ void BoxAnnulus::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void BoxAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-			  SkyFormat format, int strip)
+void BoxAnnulus::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			  Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
       Vector v = ptr->mapFromRef(center,sys);
       for (int i=0; i<numAnnuli_; i++) {
-	listProsCoordSystem(str,sys,sky);
+	coord.listProsCoordSystem(str,sys,sky);
 	str << "; ";
 
-	Vector r = ptr->mapLenFromRef(annuli_[i],IMAGE);
+	Vector r = ptr->mapLenFromRef(annuli_[i],Coord::IMAGE);
 	str << "box " << setprecision(8) << v << r << radToDeg(angle);
 
 	if (i!=0) {
-	  Vector r1 = ptr->mapLenFromRef(annuli_[i-1],IMAGE);
+	  Vector r1 = ptr->mapLenFromRef(annuli_[i-1],Coord::IMAGE);
 	  str << " & !box " << setprecision(8) << v << r1 << radToDeg(angle);
 	}
 
@@ -266,19 +265,19 @@ void BoxAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
 	  for (int i=0; i<numAnnuli_; i++) {
-	    listProsCoordSystem(str,sys,sky);
+	    coord.listProsCoordSystem(str,sys,sky);
 	    str << "; ";
 
-	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	    str << "box " << setprecision(8) << v[0] << "d " << v[1] << "d "
 		<< r[0] << "\" " << r[1] << "\" " << radToDeg(angle);
 
 	    if (i!=0) {
-	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
+	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
 	      str << " & !box " << setprecision(8) 
 		  << v[0] << "d " << v[1] << "d " 
 		  << r1[0] << "\" " << r1[1] << "\" " << radToDeg(angle);
@@ -288,7 +287,7 @@ void BoxAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  }
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -302,15 +301,15 @@ void BoxAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	    dec++;
 
 	  for (int i=0; i<numAnnuli_; i++) {
-	    listProsCoordSystem(str,sys,sky);
+	    coord.listProsCoordSystem(str,sys,sky);
 	    str << "; ";
 
-	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	    str << "box " << ra << ' ' << dec << ' ' 
 		<< r[0] << "\" " << r[1] << "\" " << radToDeg(angle);
 
 	    if (i!=0) {
-	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
+	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
 	      str << " & !box " << ra << ' ' << dec << ' ' 
 		  << r1[0] << "\" " << r1[1] << "\" " << radToDeg(angle);
 	    }
@@ -330,7 +329,7 @@ void BoxAnnulus::listSAOimage(ostream& str, int strip)
   listSAOimagePre(str);
 
   for (int i=0; i<numAnnuli_; i++) {
-    Vector v = ptr->mapFromRef(center,IMAGE);
+    Vector v = ptr->mapFromRef(center,Coord::IMAGE);
     str << "box(" << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	<< annuli_[i][0] << ',' << annuli_[i][1] << ',' << radToDeg(angle) << ')';
 
diff --git a/saotk/frame/boxannulus.h b/saotk/frame/boxannulus.h
index e348765..ed70c04 100644
--- a/saotk/frame/boxannulus.h
+++ b/saotk/frame/boxannulus.h
@@ -39,9 +39,9 @@ public:
 
   int addAnnuli(const Vector&);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
   void listSAOimage(ostream&, int);
 };
 
diff --git a/saotk/frame/bpanda.C b/saotk/frame/bpanda.C
index d8756b0..614f194 100644
--- a/saotk/frame/bpanda.C
+++ b/saotk/frame/bpanda.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "bpanda.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Bpanda::Bpanda(const Bpanda& a) : BasePanda(a), BaseBox(a) {}
@@ -25,7 +24,7 @@ Bpanda::Bpanda(Base* p, const Vector& ctr,
   for (int i=0; i<numAnnuli_; i++)
     annuli_[i] = ((r2-r1)/rn)*i+r1;
 
-  strcpy(type, "bpanda");
+  strcpy(type_, "bpanda");
   numHandle = 4 + numAnnuli_ + numAngles_;
 
   startAng_ = angles_[0];
@@ -52,7 +51,7 @@ Bpanda::Bpanda(Base* p, const Vector& ctr,
     annuli_[i] = r[i];
   sortAnnuli();
 
-  strcpy(type, "bpanda");
+  strcpy(type_, "bpanda");
   numHandle = 4 + numAnnuli_ + numAngles_;
 
   startAng_ = angles_[0];
@@ -61,7 +60,7 @@ Bpanda::Bpanda(Base* p, const Vector& ctr,
   updateBBox();
 }
 
-void Bpanda::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Bpanda::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   BaseBox::renderX(drawable, sys, mode);
 
@@ -101,8 +100,8 @@ void Bpanda::renderPS(int mode)
   Vector r1 = annuli_[numAnnuli_-1]/2;
 
   for (int ii=0; ii<numAngles_; ii++) {
-    Vector rr0 = fwdMap(intersect(r0,angles_[ii]),CANVAS);
-    Vector rr1 = fwdMap(intersect(r1,angles_[ii]),CANVAS);
+    Vector rr0 = fwdMap(intersect(r0,angles_[ii]),Coord::CANVAS);
+    Vector rr1 = fwdMap(intersect(r1,angles_[ii]),Coord::CANVAS);
 
     ostringstream str;
     str << "newpath " 
@@ -143,8 +142,8 @@ void Bpanda::renderWIN32()
   Vector r1 = annuli_[numAnnuli_-1]/2;
 
   for (int ii=0; ii<numAngles_; ii++) {
-    Vector rr0 = fwdMap(intersect(r0,angles_[ii]),CANVAS);
-    Vector rr1 = fwdMap(intersect(r1,angles_[ii]),CANVAS);
+    Vector rr0 = fwdMap(intersect(r0,angles_[ii]),Coord::CANVAS);
+    Vector rr1 = fwdMap(intersect(r1,angles_[ii]),Coord::CANVAS);
 
     win32DrawLine(rr0,rr1);
   }
@@ -161,7 +160,7 @@ void Bpanda::updateHandles()
   // which will cause problems with intersect()
   Vector rr = (annuli_[numAnnuli_-1]/2).abs();
   for (int ii=0; ii<numAngles_; ii++)
-    handle[ii+4+numAnnuli_] = fwdMap(intersect(rr,angles_[ii]),CANVAS);
+    handle[ii+4+numAnnuli_] = fwdMap(intersect(rr,angles_[ii]),Coord::CANVAS);
 }
 
 void Bpanda::editBegin(int h)
@@ -361,8 +360,8 @@ void Bpanda::deleteAnglesAnnuli(int h)
 
 // list
 
-void Bpanda::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		 SkyFormat format, int conj, int strip)
+void Bpanda::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		 Coord::SkyFormat format, int conj, int strip)
 {
   int regular = 1;
   if (numAngles_>2) {
@@ -403,17 +402,17 @@ void Bpanda::list(ostream& str, CoordSystem sys, SkyFrame sky,
     listB(str, sys, sky, format, conj, strip);
 }
 
-void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
-		   SkyFormat format, int conj, int strip)
+void Bpanda::listA(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		   Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       double ang1 = radToDeg(parent->mapAngleFromRef(angles_[0],sys));
       double ang2 = radToDeg(parent->mapAngleFromRef(angles_[numAngles_-1],sys));
@@ -424,7 +423,7 @@ void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
       Vector v = ptr->mapFromRef(center,sys);
       Vector r1 = ptr->mapLenFromRef(annuli_[0],sys);
       Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	  << ang1 << ',' << ang2 << ',' << numAngles_-1 << ','
 	  << r1[0] << ',' << r1[1] << ',' << r2[0] << ',' << r2[1] << ','
 	  << numAnnuli_-1 << ','
@@ -435,7 +434,7 @@ void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    double ang1 = radToDeg(parent->mapAngleFromRef(angles_[0],sys,sky));
 	    double ang2 = radToDeg(parent->mapAngleFromRef(angles_[numAngles_-1],sys,sky));
@@ -444,9 +443,9 @@ void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	      ang2 += 360;
 
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,ARCSEC);
-	    str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,Coord::ARCSEC);
+	    str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 		<< ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
 		<< r1[0] << '"' << ',' << r1[1] << '"' << ','
 		<< r2[0] << '"' << ',' << r2[1] << '"' << ','
@@ -454,7 +453,7 @@ void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 		<< radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -470,9 +469,9 @@ void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	    if (ang2<=ang1+FLT_EPSILON)
 	      ang2 += 360;
 
-	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,ARCSEC);
-	    str << type << '(' << ra << ',' << dec << ','
+	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,Coord::ARCSEC);
+	    str << type_ << '(' << ra << ',' << dec << ','
 		<< ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
 		<< r1[0] << '"' << ',' << r1[1] << '"' << ','
 		<< r2[0] << '"' << ',' << r2[1] << '"' << ','
@@ -492,7 +491,7 @@ void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	Vector v = ptr->mapFromRef(center,sys);
 	Vector r1 = ptr->mapLenFromRef(annuli_[0],sys);
 	Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	    << ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
 	    << r1[0] << ',' << r1[1] << ',' << r2[0] << ',' << r2[1] << ','
 	    << numAnnuli_-1 << ','
@@ -504,16 +503,16 @@ void Bpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
-		  SkyFormat format, int conj, int strip)
+void Bpanda::listB(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		  Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       for (int j=1; j<numAngles_; j++) {
@@ -528,7 +527,7 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
 	  Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys);
 	  Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys);	
-	  str << type << '(' << setprecision(8) 
+	  str << type_ << '(' << setprecision(8) 
 	      << v[0] << ',' << v[1] << ','
 	      << ang1 << ',' << ang2 << ",1,"
 	      << r1[0] << ',' << r1[1] << ',' << r2[0] << ',' << r2[1] << ','
@@ -576,7 +575,7 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
 	    for (int j=1; j<numAngles_; j++) {
@@ -589,9 +588,9 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	      for (int i=1; i<numAnnuli_; i++) {
 		listPre(str, sys, sky, ptr, strip, 0);
 
-		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
-		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);	
-		str << type << '(' << setprecision(8) 
+		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
+		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);	
+		str << type_ << '(' << setprecision(8) 
 		    << v[0] << ',' << v[1] << ','
 		    << ang1 << ',' << ang2 << ",1,"
 		    << r1[0] << '"' << ',' << r1[1] << '"' <<',' 
@@ -612,7 +611,7 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 			  << ((k<numAngles_-1) ? ' ' : ')');
 		    str << '(';
 		    for (int k=0; k<numAnnuli_; k++) {
-		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,ARCSEC);
+		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,Coord::ARCSEC);
 		      str << r[0] << '"' << ' ' << r[1] << '"' 
 			  << ((k<numAnnuli_-1) ? ' ' : ')');
 		    }
@@ -636,7 +635,7 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	    }
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -656,9 +655,9 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	      for (int i=1; i<numAnnuli_; i++) {
 		listPre(str, sys, sky, ptr, strip, 0);
 
-		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
-		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);	
-		str << type << '(' << ra << ',' << dec << ','
+		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
+		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);	
+		str << type_ << '(' << ra << ',' << dec << ','
 		    << ang1 << ',' << ang2 << ",1,"
 		    << r1[0] << '"' << ',' << r1[1] << '"' << ',' 
 		    << r2[0] << '"' << ',' << r2[1] << '"' << ',' 
@@ -678,7 +677,7 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 			  << ((k<numAngles_-1) ? ' ' : ')');
 		    str << '(';
 		    for (int k=0; k<numAnnuli_; k++) {
-		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,ARCSEC);
+		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,Coord::ARCSEC);
 		      str << r[0] << '"' << ' ' << r[1] << '"' 
 			  << ((k<numAnnuli_-1) ? ' ' : ')');
 		    }
@@ -719,7 +718,7 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
 	    Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys);
 	    Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys);	
-	    str << type << '(' << setprecision(8) 
+	    str << type_ << '(' << setprecision(8) 
 		<< v[0] << ',' << v[1] << ','
 		<< ang1 << ',' << ang2 << ",1,"
 		<< r1[0] << ',' << r1[1] << ','	<< r2[0] << ',' << r2[1] << ','
@@ -764,13 +763,13 @@ void Bpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Bpanda::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		     SkyFormat format)
+void Bpanda::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		     Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadius(ptr,sys,annuli_,numAnnuli_);
diff --git a/saotk/frame/bpanda.h b/saotk/frame/bpanda.h
index 0da4495..8caa45c 100644
--- a/saotk/frame/bpanda.h
+++ b/saotk/frame/bpanda.h
@@ -10,7 +10,7 @@
 
 class Bpanda : public BasePanda, public BaseBox {
  private:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
@@ -21,8 +21,8 @@ class Bpanda : public BasePanda, public BaseBox {
 
   void updateHandles();
 
-  void listA(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listB(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
+  void listA(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listB(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
 
  public:
   Bpanda(const Bpanda&);
@@ -56,8 +56,8 @@ class Bpanda : public BasePanda, public BaseBox {
   void setAnglesAnnuli(const double*, int, const Vector*, int);
   void deleteAnglesAnnuli(int h);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
 };
 
 #endif
diff --git a/saotk/frame/ciaoparser.C b/saotk/frame/ciaoparser.C
index c268d32..57ea1e5 100644
--- a/saotk/frame/ciaoparser.C
+++ b/saotk/frame/ciaoparser.C
@@ -1558,28 +1558,28 @@ yyreduce:
 
   case 28:
 #line 145 "ciaoparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), PHYSICAL);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::PHYSICAL);;}
     break;
 
   case 29:
 #line 146 "ciaoparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), WCS, DEGREE);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::WCS, Coord::DEGREE);;}
     break;
 
   case 30:
 #line 147 "ciaoparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), WCS, ARCMIN);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::WCS, Coord::ARCMIN);;}
     break;
 
   case 31:
 #line 148 "ciaoparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), WCS, ARCSEC);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::WCS, Coord::ARCSEC);;}
     break;
 
   case 32:
 #line 152 "ciaoparser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::PHYSICAL);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1589,7 +1589,7 @@ yyreduce:
   case 33:
 #line 159 "ciaoparser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), WCS, ARCMIN);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::WCS, Coord::ARCMIN);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1599,7 +1599,7 @@ yyreduce:
   case 34:
 #line 166 "ciaoparser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), WCS, ARCSEC);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::WCS, Coord::ARCSEC);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1624,7 +1624,7 @@ yyreduce:
   case 38:
 #line 184 "ciaoparser.Y"
     {
-	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)),WCS,FK5);
+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), Coord::WCS,Coord::FK5);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1634,7 +1634,7 @@ yyreduce:
   case 39:
 #line 191 "ciaoparser.Y"
     {
-	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),WCS,FK5);
+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::WCS,Coord::FK5);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1644,7 +1644,7 @@ yyreduce:
   case 40:
 #line 198 "ciaoparser.Y"
     {
-	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::PHYSICAL);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1698,8 +1698,8 @@ yyreduce:
 
   case 47:
 #line 240 "ciaoparser.Y"
-    {fr->createBoxCirclePointCmd(Vector((yyvsp[(3) - (3)].vector)),
-	    POINTSIZE, color,dash,1,font,text,props,NULL,taglist,cblist);;}
+    {fr->createPointCmd(Vector((yyvsp[(3) - (3)].vector)), Point::BOXCIRCLE, POINTSIZE, 
+	    color,dash,1,font,text,props,NULL,taglist,cblist);;}
     break;
 
   case 48:
diff --git a/saotk/frame/ciaoparser.Y b/saotk/frame/ciaoparser.Y
index b31352d..6a867c6 100644
--- a/saotk/frame/ciaoparser.Y
+++ b/saotk/frame/ciaoparser.Y
@@ -142,29 +142,29 @@ init:	{
 angle	: numeric {$$ = degToRad($1);}
 	;
 
-value	: numeric {$$ = FITSPTR->mapLenToRef($1, PHYSICAL);}
-	| ANGDEGREE {$$ = FITSPTR->mapLenToRef($1, WCS, DEGREE);}
-	| ARCMINUTE {$$ = FITSPTR->mapLenToRef($1, WCS, ARCMIN);}
-	| ARCSECOND {$$ = FITSPTR->mapLenToRef($1, WCS, ARCSEC);}
+value	: numeric {$$ = FITSPTR->mapLenToRef($1, Coord::PHYSICAL);}
+	| ANGDEGREE {$$ = FITSPTR->mapLenToRef($1, Coord::WCS, Coord::DEGREE);}
+	| ARCMINUTE {$$ = FITSPTR->mapLenToRef($1, Coord::WCS, Coord::ARCMIN);}
+	| ARCSECOND {$$ = FITSPTR->mapLenToRef($1, Coord::WCS, Coord::ARCSEC);}
 	;
 
 vvalue	: numeric sp numeric 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), PHYSICAL);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::PHYSICAL);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ARCMINUTE sp ARCMINUTE 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), WCS, ARCMIN);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::WCS, Coord::ARCMIN);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ARCSECOND sp ARCSECOND 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), WCS, ARCSEC);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::WCS, Coord::ARCSEC);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
@@ -182,21 +182,21 @@ dms	: DMSSTR {$$ = parseDMSStr($1);}
 
 coord	: sexagesimal sp sexagesimal
 	{
-	  Vector r = FITSPTR->mapToRef(Vector($1*360./24.,$3),WCS,FK5);
+	  Vector r = FITSPTR->mapToRef(Vector($1*360./24.,$3), Coord::WCS,Coord::FK5);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| hms sp dms
         {
-	  Vector r = FITSPTR->mapToRef(Vector($1,$3),WCS,FK5);
+	  Vector r = FITSPTR->mapToRef(Vector($1,$3), Coord::WCS,Coord::FK5);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| numeric sp numeric 
 	{
-	  Vector r = FITSPTR->mapToRef(Vector($1,$3), PHYSICAL);
+	  Vector r = FITSPTR->mapToRef(Vector($1,$3), Coord::PHYSICAL);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
@@ -237,8 +237,8 @@ shape	: CIRCLE_ bp coord sp value
 	     color,dash,1,font,text,props,NULL,taglist,cblist);}
 
 	| POINT_ bp coord 
-	  {fr->createBoxCirclePointCmd(Vector($3),
-	    POINTSIZE, color,dash,1,font,text,props,NULL,taglist,cblist);}
+	  {fr->createPointCmd(Vector($3), Point::BOXCIRCLE, POINTSIZE, 
+	    color,dash,1,font,text,props,NULL,taglist,cblist);}
 
 	| POLYGON_ {polylist.deleteAll();} bp polyNodes
 	  {fr->createPolygonCmd(polylist,
diff --git a/saotk/frame/circle.C b/saotk/frame/circle.C
index ac5e3a3..5ebb9bf 100644
--- a/saotk/frame/circle.C
+++ b/saotk/frame/circle.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "circle.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Circle::Circle(const Circle& a) : BaseEllipse(a) {}
@@ -20,7 +19,7 @@ Circle::Circle(Base* p, const Vector& ctr,
   annuli_ = new Vector[numAnnuli_];
   annuli_[0] = Vector(r,r);
 
-  strcpy(type, "circle");
+  strcpy(type_, "circle");
   numHandle = 4;
 
   updateBBox();
@@ -39,23 +38,57 @@ void Circle::edit(const Vector& v, int h)
   doCallBack(CallBack::EDITCB);
 }
 
+void Circle::analysis(AnalysisMethod mm, int which)
+{
+  switch (mm) {
+  case PLOT3D:
+    if (!analysisPlot3d_ && which) {
+      addCallBack(CallBack::MOVECB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::EDITCB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::DELETECB, analysisPlot3dCB_[1], 
+		  parent->options->cmdName);
+    }
+    if (analysisPlot3d_ && !which) {
+      deleteCallBack(CallBack::MOVECB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::EDITCB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::DELETECB, analysisPlot3dCB_[1]);
+    }
+
+    analysisPlot3d_ = which;
+    break;
+  }
+}
+
+void Circle::analysisPlot3d(char* xname, char* yname)
+{
+  double* x;
+  double* y;
+  Vector ll = -annuli_[0] * Translate(center);
+  Vector ur =  annuli_[0] * Translate(center);
+  BBox bb(ll,ur) ;
+  int num = parent->markerAnalysisPlot3d(&x, &y, this, bb);
+  analysisPlot3dResult(xname, yname, x, y, num);
+}
+
 // list
 
-void Circle::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		  SkyFormat format, int conj, int strip)
+void Circle::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		  Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
   
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       double r = ptr->mapLenFromRef(annuli_[0][0],sys);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	  << r <<  ')';
     }
     break;
@@ -63,15 +96,15 @@ void Circle::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    double r = ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC);
-	    str << type << '(' << setprecision(8) << v[0] << ',' << v[1] <<','
+	    double r = ptr->mapLenFromRef(annuli_[0][0],sys,Coord::ARCSEC);
+	    str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] <<','
 		<< r << '"' <<  ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -80,8 +113,8 @@ void Circle::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	    string x(buf);
 	    istringstream wcs(x);
 	    wcs >> ra >> dec;
-	    double r = ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC);
-	    str << type << '(' << ra << ',' << dec << ',' << r << '"' <<  ')';
+	    double r = ptr->mapLenFromRef(annuli_[0][0],sys,Coord::ARCSEC);
+	    str << type_ << '(' << ra << ',' << dec << ',' << r << '"' <<  ')';
 	  }
 	  break;
 	}
@@ -89,7 +122,7 @@ void Circle::list(ostream& str, CoordSystem sys, SkyFrame sky,
       else {
 	Vector v = ptr->mapFromRef(center,sys);
 	double r = ptr->mapLenFromRef(annuli_[0][0],sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] <<','
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] <<','
 	    << r <<  ')';
       }
     }
@@ -98,13 +131,13 @@ void Circle::list(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Circle::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		     SkyFormat format)
+void Circle::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		     Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadiusX(ptr,sys,annuli_[0]);
@@ -113,81 +146,81 @@ void Circle::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Circle::listCiao(ostream& str, CoordSystem sys, int strip)
+void Circle::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listCiaoPre(str);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,PHYSICAL);
-      double r = ptr->mapLenFromRef(annuli_[0][0],PHYSICAL);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+      Vector v = ptr->mapFromRef(center,Coord::PHYSICAL);
+      double r = ptr->mapLenFromRef(annuli_[0][0],Coord::PHYSICAL);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	  << r << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
-      double r = ptr->mapLenFromRef(annuli_[0][0],sys,ARCMIN);
+      double r = ptr->mapLenFromRef(annuli_[0][0],sys,Coord::ARCMIN);
       char buf[64];
-      ptr->mapFromRef(center,sys,FK5,SEXAGESIMAL,buf,64);
+      ptr->mapFromRef(center,sys,Coord::FK5,Coord::SEXAGESIMAL,buf,64);
       char ra[16];
       char dec[16];
       string x(buf);
       istringstream wcs(x);
       wcs >> ra >> dec;
-      str << type << '(' << ra << ',' << dec << ',' << r << '\'' << ')';
+      str << type_ << '(' << ra << ',' << dec << ',' << r << '\'' << ')';
     }
   }
 
   listCiaoPost(str, strip);
 }
 
-void Circle::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-		     SkyFormat format, int strip)
+void Circle::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		     Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listSAOtngPre(str, strip);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
 
-      Vector v = ptr->mapFromRef(center,IMAGE);
-      double r = ptr->mapLenFromRef(annuli_[0][0],IMAGE);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+      Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+      double r = ptr->mapLenFromRef(annuli_[0][0],Coord::IMAGE);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	  << r << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  double r = ptr->mapLenFromRef(annuli_[0][0],IMAGE);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	  double r = ptr->mapLenFromRef(annuli_[0][0],Coord::IMAGE);
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	      << r << ')';
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
-	  double r = ptr->mapLenFromRef(annuli_[0][0],IMAGE);
+	  double r = ptr->mapLenFromRef(annuli_[0][0],Coord::IMAGE);
 	  char ra[16];
 	  char dec[16];
 	  string x(buf);
 	  istringstream wcs(x);
 	  wcs >> ra >> dec;
-	  str << type << '(' << ra << ',' << dec << ',' << r << ')';
+	  str << type_ << '(' << ra << ',' << dec << ',' << r << ')';
 	}
 	break;
       }
@@ -197,38 +230,38 @@ void Circle::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
   listSAOtngPost(str,strip);
 }
 
-void Circle::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-		      SkyFormat format, int strip)
+void Circle::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		      Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
       Vector v = ptr->mapFromRef(center,sys);
-      double r = ptr->mapLenFromRef(annuli_[0][0],IMAGE);
-      listProsCoordSystem(str,sys,sky);
-      str << "; " << type << ' ' << setprecision(8) << v << r;
+      double r = ptr->mapLenFromRef(annuli_[0][0],Coord::IMAGE);
+      coord.listProsCoordSystem(str,sys,sky);
+      str << "; " << type_ << ' ' << setprecision(8) << v << r;
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  double r = ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC);
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << setprecision(8) 
+	  double r = ptr->mapLenFromRef(annuli_[0][0],sys,Coord::ARCSEC);
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << setprecision(8) 
 	      << v[0] << "d " << v[1] << "d "
 	      << r << "\" ";
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -241,9 +274,9 @@ void Circle::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  if (dec[0]=='+')
 	    dec++;
 
-	  double r = ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC);
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << ra << ' ' << dec << ' '
+	  double r = ptr->mapLenFromRef(annuli_[0][0],sys,Coord::ARCSEC);
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << ra << ' ' << dec << ' '
 	      << r << "\" ";
 	}
 	break;
@@ -259,8 +292,8 @@ void Circle::listSAOimage(ostream& str, int strip)
   FitsImage* ptr = parent->findFits();
   listSAOimagePre(str);
 
-  Vector v = ptr->mapFromRef(center,IMAGE);
-  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+  Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
       << annuli_[0][0] << ')';
 
   listSAOimagePost(str, strip);
diff --git a/saotk/frame/circle.h b/saotk/frame/circle.h
index 6def03e..f177c84 100644
--- a/saotk/frame/circle.h
+++ b/saotk/frame/circle.h
@@ -17,19 +17,22 @@ public:
 	 unsigned short prop, const char* cmt,
 	 const List<Tag>& tg, const List<CallBack>& cb);
 
-  Marker* dup() {return new Circle(*this);}
+  virtual Marker* dup() {return new Circle(*this);}
   void edit(const Vector&, int);
 
   void rotateBegin() {}
   void rotate(const Vector& v, int h) {}
   void rotateEnd() {}
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listCiao(ostream&, CoordSystem, int);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listSAOimage(ostream&, int);
+  void analysis(AnalysisMethod, int);
+  void analysisPlot3d(char*, char*);
+
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  virtual void listCiao(ostream&, Coord::CoordSystem, int);
+  virtual void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listSAOimage(ostream&, int);
 
   // special composite funtionality
   void setComposite(const Matrix&, double);
diff --git a/saotk/frame/circle3d.C b/saotk/frame/circle3d.C
deleted file mode 100644
index 7e64714..0000000
--- a/saotk/frame/circle3d.C
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright (C) 1999-2012
-// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
-// For conditions of distribution and use, see copyright notice in "copyright"
-
-#include "circle3d.h"
-#include "framebase.h"
-#include "fitsimage.h"
-
-Circle3d::Circle3d(const Circle3d& a) : BaseEllipse(a)
-{
-  method = a.method;
-  system = a.system;
-}
-
-Circle3d::Circle3d(Base* p, const Vector& ctr,
-			   double r, 
-			   const char* mvcb, const char* delcb,
-			   const char* clr, int* dsh, 
-			   int wth, const char* fnt, const char* txt, 
-			   unsigned short prop, const char* cmt,
-			   const List<Tag>& tg, const List<CallBack>& cb)
-  : BaseEllipse(p, ctr, 0, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  method = AVERAGE;
-
-  system = PHYSICAL;
-
-  numAnnuli_ = 1;
-  annuli_ = new Vector[numAnnuli_];
-  annuli_[0] = Vector(r,r);
-
-  strcpy(type, "circle3d");
-  numHandle = 4;
-
-   if (mvcb && *mvcb) {
-    addCallBack(CallBack::MOVECB, mvcb, parent->options->cmdName);
-    addCallBack(CallBack::EDITCB, mvcb, parent->options->cmdName);
-    addCallBack(CallBack::UPDATECB, mvcb, parent->options->cmdName);
-  }
-  if (delcb && *delcb)
-    addCallBack(CallBack::DELETECB, delcb, parent->options->cmdName);
-
- updateBBox();
-}
-
-void Circle3d::edit(const Vector& v, int h)
-{
-  Matrix mm = bckMatrix();
-
-  // calc dist between edge of circle3d and handle
-  double d = annuli_[0].length() - annuli_[0][0];
-  double r = (v * mm).length() - d;
-  annuli_[0] = Vector(r,r);
-  
-  updateBBox();
-  doCallBack(CallBack::EDITCB);
-}
-
-void Circle3d::setMethod(int m)
-{
-  method = (Method)m;
-
-  updateBBox();
-  doCallBack(CallBack::EDITCB);
-}
-
-// list
-
-void Circle3d::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		  SkyFormat format, int conj, int strip)
-{
-  if (!strip) {
-    FitsImage* ptr = parent->findFits(sys,center);
-    listPre(str, sys, sky, ptr, strip, 1);
-  
-    switch (sys) {
-    case IMAGE:
-    case PHYSICAL:
-    case DETECTOR:
-    case AMPLIFIER:
-      {
-	Vector v = ptr->mapFromRef(center,sys);
-	double r = ptr->mapLenFromRef(annuli_[0][0],sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
-	    << r <<  ')';
-      }
-      break;
-    default:
-      if (ptr->hasWCS(sys)) {
-	if (ptr->hasWCSCel(sys)) {
-	  switch (format) {
-	  case DEGREES:
-	    {
-	      Vector v = ptr->mapFromRef(center,sys,sky);
-	      double r = ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC);
-	      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] <<','
-		  << r << '"' <<  ')';
-	    }
-	    break;
-	  case SEXAGESIMAL:
-	    {
-	      char buf[64];
-	      ptr->mapFromRef(center,sys,sky,format,buf,64);
-	      char ra[16];
-	      char dec[16];
-	      string x(buf);
-	      istringstream wcs(x);
-	      wcs >> ra >> dec;
-	      double r = ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC);
-	      str << type << '(' << ra << ',' << dec << ',' << r << '"' <<  ')';
-	    }
-	    break;
-	  }
-	}
-	else {
-	  Vector v = ptr->mapFromRef(center,sys);
-	  double r = ptr->mapLenFromRef(annuli_[0][0],sys);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] <<','
-	      << r <<  ')';
-	}
-      }
-    }
-
-    if (conj)
-      str << " ||";
-
-    listProperties(str, 0);
-  }
-}
-
-void Circle3d::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		     SkyFormat format)
-{
-  FitsImage* ptr = parent->findFits(sys,center);
-
-  XMLRowInit();
-  XMLRow(XMLSHAPE,type);
-
-  XMLRowCenter(ptr,sys,sky,format);
-  XMLRowRadiusX(ptr,sys,annuli_[0]);
-
-  XMLRowProps(ptr,sys);
-  XMLRowEnd(str);
-}
-
-// special composite funtionallity
-
-void Circle3d::setComposite(const Matrix& mx, double aa)
-{
-  center *= mx;
-  updateBBox();
-}
-
diff --git a/saotk/frame/circle3d.h b/saotk/frame/circle3d.h
deleted file mode 100644
index 127e246..0000000
--- a/saotk/frame/circle3d.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (C) 1999-2012
-// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
-// For conditions of distribution and use, see copyright notice in "copyright"
-
-#ifndef __circle3d_h__
-#define __circle3d_h__
-
-#include "baseellipse.h"
-
-class Circle3d : public BaseEllipse {
- public:
-  enum Method {SUM,AVERAGE};
-
- private:
-  Method method;
-  CoordSystem system;
-
- public:
-  Circle3d(const Circle3d&);
-  Circle3d(Base* p, const Vector& ctr,
-	       double r,
-	       const char* mvcb, const char* delcb,
-	       const char* clr, int *dsh,
-	       int wth, const char* fnt, const char* txt, 
-	       unsigned short prop, const char* cmt,
-	       const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new Circle3d(*this);}
-  void edit(const Vector&, int);
-
-  void rotateBegin() {}
-  void rotate(const Vector& v, int h) {}
-  void rotateEnd() {}
-
-  void setMethod(int);
-  int getMethod() {return method;}
-
-  CoordSystem getSystem() {return system;}
-  void setSystem(CoordSystem sys) {system = sys;}
-
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-
-  // special composite funtionality
-  void setComposite(const Matrix&, double);
-};
-
-#endif
diff --git a/saotk/frame/colorscalepseudo8.C b/saotk/frame/colorscalepseudo8.C
index 705f09f..1c317bf 100644
--- a/saotk/frame/colorscalepseudo8.C
+++ b/saotk/frame/colorscalepseudo8.C
@@ -3,7 +3,7 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "colorscalepseudo8.h"
-#include "framebase.h"
+#include "base.h"
 
 ColorScalePseudoColor8::ColorScalePseudoColor8(int s) : ColorScale(s)
 {
@@ -75,7 +75,7 @@ SinhScalePseudoColor8::SinhScalePseudoColor8(int s,
     ColorScalePseudoColor8(s),
     ColorScale(s) {}
 
-IISScalePseudoColor8::IISScalePseudoColor8(FrameBase* parent,
+IISScalePseudoColor8::IISScalePseudoColor8(Base* parent,
 					   unsigned short* indexCells, 
 					   unsigned char* colorCells,
 					   int count)
diff --git a/saotk/frame/colorscalepseudo8.h b/saotk/frame/colorscalepseudo8.h
index f69339f..dc16f38 100644
--- a/saotk/frame/colorscalepseudo8.h
+++ b/saotk/frame/colorscalepseudo8.h
@@ -7,7 +7,7 @@
 
 #include "colorscale.h"
 
-class FrameBase;
+class Base;
 
 class ColorScalePseudoColor8 : public virtual ColorScale {
 public:
@@ -76,7 +76,7 @@ public virtual ColorScale,
 public IISScale, 
 public ColorScalePseudoColor8 {
 public:
-  IISScalePseudoColor8(FrameBase*,unsigned short*, unsigned char*, int);
+  IISScalePseudoColor8(Base*,unsigned short*, unsigned char*, int);
 };
 
 class HistEquScalePseudoColor8 : 
diff --git a/saotk/frame/compass.C b/saotk/frame/compass.C
index 7d0f6e1..31e74a0 100644
--- a/saotk/frame/compass.C
+++ b/saotk/frame/compass.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "compass.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Compass::Compass(const Compass& a) : Marker(a)
@@ -24,7 +23,7 @@ Compass::Compass(const Compass& a) : Marker(a)
 Compass::Compass(Base* p, const Vector& ctr,
 		 double r,
 		 const char* n, const char* e, int na, int ea,
-		 CoordSystem sys, SkyFrame sky, 
+		 Coord::CoordSystem sys, Coord::SkyFrame sky, 
 		 const char* clr, int* dsh, 
 		 int w, const char* f, const char* t, 
 		 unsigned short prop, const char* c,
@@ -40,7 +39,7 @@ Compass::Compass(Base* p, const Vector& ctr,
   northArrow = na;
   eastArrow = ea;
 
-  strcpy(type,"compass");
+  strcpy(type_,"compass");
   handle = new Vector[3];
   numHandle = 3;
 
@@ -56,7 +55,7 @@ Compass::~Compass()
     delete [] eastText;
 }
 
-void Compass::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Compass::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
 
@@ -130,20 +129,20 @@ void Compass::renderPS(int mode)
 {
   renderPSGC(mode);
 
-  Vector aa = parent->mapFromRef(center,CANVAS);
-  Vector bb = parent->mapFromRef(p1,CANVAS);
-  Vector cc = parent->mapFromRef(p2,CANVAS);
-  Vector dd = parent->mapFromRef(pp1,CANVAS);
-  Vector ee = parent->mapFromRef(pp2,CANVAS);
+  Vector aa = parent->mapFromRef(center,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector cc = parent->mapFromRef(p2,Coord::CANVAS);
+  Vector dd = parent->mapFromRef(pp1,Coord::CANVAS);
+  Vector ee = parent->mapFromRef(pp2,Coord::CANVAS);
 
   if (northArrow) {
-    bb = modifyArrow(center,p1,CANVAS);
-    renderPSArrow(center,p1,CANVAS);
+    bb = modifyArrow(center,p1,Coord::CANVAS);
+    renderPSArrow(center,p1,Coord::CANVAS);
   }
 
   if (eastArrow) {
-    cc = modifyArrow(center,p2,CANVAS);
-    renderPSArrow(center,p2,CANVAS);
+    cc = modifyArrow(center,p2,Coord::CANVAS);
+    renderPSArrow(center,p2,Coord::CANVAS);
   }
 
   {
@@ -255,20 +254,20 @@ void Compass::renderMACOSX()
 {
   renderMACOSXGC();
 
-  Vector aa = parent->mapFromRef(center,CANVAS);
-  Vector bb = parent->mapFromRef(p1,CANVAS);
-  Vector cc = parent->mapFromRef(p2,CANVAS);
-  Vector dd = parent->mapFromRef(pp1,CANVAS);
-  Vector ee = parent->mapFromRef(pp2,CANVAS);
+  Vector aa = parent->mapFromRef(center,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector cc = parent->mapFromRef(p2,Coord::CANVAS);
+  Vector dd = parent->mapFromRef(pp1,Coord::CANVAS);
+  Vector ee = parent->mapFromRef(pp2,Coord::CANVAS);
 
   if (northArrow) {
-    bb = modifyArrow(center,p1,CANVAS);
-    renderMACOSXArrow(center,p1,CANVAS);
+    bb = modifyArrow(center,p1,Coord::CANVAS);
+    renderMACOSXArrow(center,p1,Coord::CANVAS);
   }
 
   if (eastArrow) {
-    cc = modifyArrow(center,p2,CANVAS);
-    renderMACOSXArrow(center,p2,CANVAS);
+    cc = modifyArrow(center,p2,Coord::CANVAS);
+    renderMACOSXArrow(center,p2,Coord::CANVAS);
   }
 
   macosxDrawLine(aa,bb);
@@ -320,20 +319,20 @@ void Compass::renderWIN32()
 {
   renderWIN32GC();
 
-  Vector aa = parent->mapFromRef(center,CANVAS);
-  Vector bb = parent->mapFromRef(p1,CANVAS);
-  Vector cc = parent->mapFromRef(p2,CANVAS);
-  Vector dd = parent->mapFromRef(pp1,CANVAS);
-  Vector ee = parent->mapFromRef(pp2,CANVAS);
+  Vector aa = parent->mapFromRef(center,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector cc = parent->mapFromRef(p2,Coord::CANVAS);
+  Vector dd = parent->mapFromRef(pp1,Coord::CANVAS);
+  Vector ee = parent->mapFromRef(pp2,Coord::CANVAS);
 
   if (northArrow) {
-    bb = modifyArrow(center,p1,CANVAS);
-    renderWIN32Arrow(center,p1,CANVAS);
+    bb = modifyArrow(center,p1,Coord::CANVAS);
+    renderWIN32Arrow(center,p1,Coord::CANVAS);
   }
 
   if (eastArrow) {
-    cc = modifyArrow(center,p2,CANVAS);
-    renderWIN32Arrow(center,p2,CANVAS);
+    cc = modifyArrow(center,p2,Coord::CANVAS);
+    renderWIN32Arrow(center,p2,Coord::CANVAS);
   }
 
   win32DrawLine(aa,bb);
@@ -398,9 +397,9 @@ void Compass::updateHandles()
   pp2 = p2 + east*rr;
 
   // generate handles
-  handle[0] = parent->mapFromRef(center,CANVAS);
-  handle[1] = parent->mapFromRef(p1,CANVAS);
-  handle[2] = parent->mapFromRef(p2,CANVAS);
+  handle[0] = parent->mapFromRef(center,Coord::CANVAS);
+  handle[1] = parent->mapFromRef(p1,Coord::CANVAS);
+  handle[2] = parent->mapFromRef(p2,Coord::CANVAS);
 }
 
 void Compass::calcAllBBox()
@@ -409,11 +408,11 @@ void Compass::calcAllBBox()
   Tk_FontMetrics metrics;
   Tk_GetFontMetrics(tkfont_, &metrics);
 
-  Vector a = parent->mapFromRef(center,CANVAS);
-  Vector b = parent->mapFromRef(p1,CANVAS);
-  Vector c = parent->mapFromRef(p2,CANVAS);
-  Vector bb = parent->mapFromRef(pp1,CANVAS);
-  Vector cc = parent->mapFromRef(pp2,CANVAS);
+  Vector a = parent->mapFromRef(center,Coord::CANVAS);
+  Vector b = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector c = parent->mapFromRef(p2,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(pp1,Coord::CANVAS);
+  Vector cc = parent->mapFromRef(pp2,Coord::CANVAS);
 
   if (northText) {
     float r1 = Tk_TextWidth(tkfont_, northText, strlen(northText))/2.;
@@ -468,7 +467,7 @@ int Compass::isIn(const Vector& vv)
     Points on a edge are considered inside.
   */
 
-  Vector v = parent->mapToRef(vv,CANVAS);
+  Vector v = parent->mapToRef(vv,Coord::CANVAS);
   int crossings = 0;   // number of crossings
 
   Vector bb[4];
@@ -533,7 +532,7 @@ void Compass::setLabels(const char* n, const char* e)
   doCallBack(CallBack::EDITCB);
 }
 
-void Compass::setCoordSystem(CoordSystem sys, SkyFrame sky)
+void Compass::setCoordSystem(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   coordSystem = sys;
   skyFrame = sky;
@@ -543,21 +542,21 @@ void Compass::setCoordSystem(CoordSystem sys, SkyFrame sky)
 
 // list
 
-void Compass::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		 SkyFormat format, int conj, int strip)
+void Compass::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		 Coord::SkyFormat format, int conj, int strip)
 {
   if (!strip) {
     FitsImage* ptr = parent->findFits(sys,center);
     listPre(str, sys, sky, ptr, strip, 1);
 
     switch (sys) {
-    case IMAGE:
-    case PHYSICAL:
-    case DETECTOR:
-    case AMPLIFIER:
+    case Coord::IMAGE:
+    case Coord::PHYSICAL:
+    case Coord::DETECTOR:
+    case Coord::AMPLIFIER:
       {
 	Vector v = ptr->mapFromRef(center,sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	    << ptr->mapLenFromRef(radius,sys) << ')';
       }
       break;
@@ -565,14 +564,14 @@ void Compass::list(ostream& str, CoordSystem sys, SkyFrame sky,
       if (ptr->hasWCS(sys)) {
 	if (ptr->hasWCSCel(sys)) {
 	  switch (format) {
-	  case DEGREES:
+	  case Coord::DEGREES:
 	    {
 	      Vector v = ptr->mapFromRef(center,sys,sky);
-	      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
-		  << ptr->mapLenFromRef(radius,sys,ARCSEC) << '"' << ')';
+	      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+		  << ptr->mapLenFromRef(radius,sys,Coord::ARCSEC) << '"' << ')';
 	    }
 	    break;
-	  case SEXAGESIMAL:
+	  case Coord::SEXAGESIMAL:
 	    {
 	      char buf[64];
 	      ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -581,8 +580,8 @@ void Compass::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	      string x(buf);
 	      istringstream wcs(x);
 	      wcs >> ra >> dec;
-	      str << type << '(' << ra << ',' << dec << ',' 
-		  << ptr->mapLenFromRef(radius,sys,ARCSEC) 
+	      str << type_ << '(' << ra << ',' << dec << ',' 
+		  << ptr->mapLenFromRef(radius,sys,Coord::ARCSEC) 
 		  << '"' << ')';
 	    }
 	    break;
@@ -590,7 +589,7 @@ void Compass::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	}
 	else {
 	  Vector v = ptr->mapFromRef(center,sys);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	      << ptr->mapLenFromRef(radius,sys) << ')';
 	}
       }
@@ -600,24 +599,24 @@ void Compass::list(ostream& str, CoordSystem sys, SkyFrame sky,
       str << " ||";
 
     str << " compass=";
-    listCoordSystem(str, coordSystem, skyFrame, 1, ptr->hasWCSCel(coordSystem));
+    coord.listCoordSystem(str, coordSystem, skyFrame, 1, ptr->hasWCSCel(coordSystem));
     str << " {" << northText << "} {" << eastText << "} " 
 	<< northArrow << ' ' << eastArrow;
     listProperties(str, 0);
   }
 }
 
-void Compass::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		      SkyFormat format)
+void Compass::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		      Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
-  double rr = ptr->mapLenFromRef(radius,sys,ARCSEC);
+  double rr = ptr->mapLenFromRef(radius,sys,Coord::ARCSEC);
   ostringstream pstr;
-  listCoordSystem(pstr, coordSystem, skyFrame, 0, ptr->hasWCSCel(coordSystem));
+  coord.listCoordSystem(pstr, coordSystem, skyFrame, 0, ptr->hasWCSCel(coordSystem));
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRow(XMLR,rr);
diff --git a/saotk/frame/compass.h b/saotk/frame/compass.h
index 0fbb863..4db77c6 100644
--- a/saotk/frame/compass.h
+++ b/saotk/frame/compass.h
@@ -15,8 +15,8 @@ private:
   Vector pp2;
 
   double radius;
-  CoordSystem coordSystem;
-  SkyFrame skyFrame;
+  Coord::CoordSystem coordSystem;
+  Coord::SkyFrame skyFrame;
 
   char* northText;
   char* eastText;
@@ -24,8 +24,8 @@ private:
   int eastArrow;
 
 private:
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderXInclude(Drawable, InternalSystem, RenderMode) {}
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
+  void renderXInclude(Drawable, Coord::InternalSystem, RenderMode) {}
   GC renderXGC(RenderMode);
 
   void renderPS(int);
@@ -51,7 +51,7 @@ public:
   Compass(Base* parent, const Vector& ctr,
 	  double r, 
 	  const char* n, const char* e, int na, int ea,
-	  CoordSystem, SkyFrame, 
+	  Coord::CoordSystem, Coord::SkyFrame, 
 	  const char* clr, int* dsh,
 	  int w, const char* f, const char* t, 
 	  unsigned short prop, const char* c,
@@ -70,18 +70,18 @@ public:
 
   double getRadius() {return radius;}
   void setRadius(double);
-  void setCoordSystem(CoordSystem, SkyFrame);
+  void setCoordSystem(Coord::CoordSystem, Coord::SkyFrame);
   void setLabels(const char*, const char*);
   void setArrows(int,int);
-  CoordSystem getSystem() {return coordSystem;}
-  SkyFrame getSkyFrame() {return skyFrame;}
+  Coord::CoordSystem getSystem() {return coordSystem;}
+  Coord::SkyFrame getSkyFrame() {return skyFrame;}
   const char* getNorthText() {return northText;}
   const char* getEastText() {return eastText;}
   int getNorthArrow() {return northArrow;}
   int getEastArrow() {return eastArrow;}
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
 };
 
 #endif
diff --git a/saotk/frame/composite.C b/saotk/frame/composite.C
index b9cd7ac..7c43131 100644
--- a/saotk/frame/composite.C
+++ b/saotk/frame/composite.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "composite.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Composite::Composite(const Composite& a) : Marker(a) 
@@ -20,7 +19,7 @@ Composite::Composite(Base* p, const Vector& ctr,
 		     const List<Tag>& tg, const List<CallBack>& cb)
   : Marker(p, ctr, ang, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
 {
-  strcpy(type, "composite");
+  strcpy(type_, "composite");
 
   global = gl;
 
@@ -30,7 +29,7 @@ Composite::Composite(Base* p, const Vector& ctr,
   updateBBox();
 }
 
-void Composite::draw(Drawable drawable, InternalSystem sys,
+void Composite::draw(Drawable drawable, Coord::InternalSystem sys,
 		     int tt, RenderMode mode, HandleMode hh)
 {
   if (hh==HANDLES)
@@ -115,16 +114,16 @@ void Composite::updateHandles()
     Marker* m = mk->dup();
     m->setComposite(fwdMatrix(), angle);
     for(int ii=0; ii<m->getNumHandle(); ii++)
-      bb.bound(bckMap(m->getHandle(ii),CANVAS));
+      bb.bound(bckMap(m->getHandle(ii),Coord::CANVAS));
     delete m;
     mk=mk->next();
   }
   bb.expand(3); // a little more room around the edges
 
-  handle[0] = fwdMap(bb.ll,CANVAS);
-  handle[1] = fwdMap(bb.lr(),CANVAS);
-  handle[2] = fwdMap(bb.ur,CANVAS);
-  handle[3] = fwdMap(bb.ul(),CANVAS);
+  handle[0] = fwdMap(bb.ll,Coord::CANVAS);
+  handle[1] = fwdMap(bb.lr(),Coord::CANVAS);
+  handle[2] = fwdMap(bb.ur,Coord::CANVAS);
+  handle[3] = fwdMap(bb.ul(),Coord::CANVAS);
 }
 
 void Composite::updateCoords(const Matrix& mx)
@@ -182,21 +181,21 @@ Marker* Composite::extract()
 
 // list
 
-void Composite::list(ostream& str, CoordSystem sys, SkyFrame sky, 
-		 SkyFormat format, int conj, int strip)
+void Composite::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		 Coord::SkyFormat format, int conj, int strip)
 {
   if (!strip) {
     FitsImage* ptr = parent->findFits(sys,center);
     listPre(str, sys, sky, ptr, strip, 1);
 
     switch (sys) {
-    case IMAGE:
-    case PHYSICAL:
-    case DETECTOR:
-    case AMPLIFIER:
+    case Coord::IMAGE:
+    case Coord::PHYSICAL:
+    case Coord::DETECTOR:
+    case Coord::AMPLIFIER:
       {
 	Vector v = ptr->mapFromRef(center,sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	    << radToDeg(parent->mapAngleFromRef(angle,sys)) << ')';
       }
       break;
@@ -204,15 +203,15 @@ void Composite::list(ostream& str, CoordSystem sys, SkyFrame sky,
       if (ptr->hasWCS(sys)) {
 	if (ptr->hasWCSCel(sys)) {
 	  switch (format) {
-	  case DEGREES:
+	  case Coord::DEGREES:
 	    {
 	      Vector v = ptr->mapFromRef(center,sys,sky);
-	      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] 
+	      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] 
 		  << ','
 		  << radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	    }
 	    break;
-	  case SEXAGESIMAL:
+	  case Coord::SEXAGESIMAL:
 	    {
 	      char buf[64];
 	      ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -221,7 +220,7 @@ void Composite::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	      string x(buf);
 	      istringstream wcs(x);
 	      wcs >> ra >> dec;
-	      str << type << '(' << ra << ',' << dec << ',' 
+	      str << type_ << '(' << ra << ',' << dec << ',' 
 		  << radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	    }
 	    break;
@@ -229,7 +228,7 @@ void Composite::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	}
 	else {
 	  Vector v = ptr->mapFromRef(center,sys);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	      << radToDeg(parent->mapAngleFromRef(angle,sys)) << ')';
 	}
       }
@@ -246,12 +245,12 @@ void Composite::list(ostream& str, CoordSystem sys, SkyFrame sky,
     mk=mk->next();
 
     m->setComposite(fwdMatrix(), angle);
-    m->list(str, sys, sky, format, (mk?1:0), strip);
+    m->list(str, sys, sky, format, 1, strip);
     delete m;
   }
 }
 
-void Composite::listCiao(ostream& str, CoordSystem sys, int strip)
+void Composite::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   Marker* mk=members.head();
   while (mk) {
@@ -264,8 +263,8 @@ void Composite::listCiao(ostream& str, CoordSystem sys, int strip)
   }
 }
 
-void Composite::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-			 SkyFormat format, int strip)
+void Composite::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			 Coord::SkyFormat format, int strip)
 {
   Marker* mk=members.head();
   while (mk) {
@@ -278,8 +277,8 @@ void Composite::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Composite::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-			   SkyFormat format, int strip)
+void Composite::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			   Coord::SkyFormat format, int strip)
 {
   Marker* mk=members.head();
   while (mk) {
@@ -305,8 +304,8 @@ void Composite::listSAOimage(ostream& str, int strip)
   }
 }
 
-void Composite::listXY(ostream& str, CoordSystem sys, SkyFrame sky,
-		       SkyFormat format, int strip)
+void Composite::listXY(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		       Coord::SkyFormat format, int strip)
 {
   Marker* mk=members.head();
   while (mk) {
diff --git a/saotk/frame/composite.h b/saotk/frame/composite.h
index e7a0108..5b49dcb 100644
--- a/saotk/frame/composite.h
+++ b/saotk/frame/composite.h
@@ -13,7 +13,7 @@ class Composite : public Marker {
   List<Marker> members;
   int global;
 
-  void renderX(Drawable, InternalSystem, RenderMode) {}
+  void renderX(Drawable, Coord::InternalSystem, RenderMode) {}
   void renderPS(int mode) {}
 #ifdef _MACOSX
   void renderMACOSX() {}
@@ -36,7 +36,7 @@ public:
 
   Marker* dup() {return new Composite(*this);}
 
-  void draw(Drawable, InternalSystem, int, RenderMode, HandleMode);
+  void draw(Drawable, Coord::InternalSystem, int, RenderMode, HandleMode);
   void ps(int,int);
 #ifdef _MACOSX
   void macosx(int);
@@ -54,13 +54,13 @@ public:
   void setGlobal(int w) {global = w ? 1 : 0;}
   int getGlobal() {return global;}
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat) {}
-  void listCiao(ostream&, CoordSystem, int);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat) {}
+  void listCiao(ostream&, Coord::CoordSystem, int);
+  void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
   void listSAOimage(ostream&, int);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listXY(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  void listXY(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
 
 };
 
diff --git a/saotk/frame/context.C b/saotk/frame/context.C
index 5366ca4..8fa6fec 100644
--- a/saotk/frame/context.C
+++ b/saotk/frame/context.C
@@ -32,7 +32,7 @@ Context::Context()
   }
 
   mosaicType = Base::NOMOSAIC;
-  mosaicSystem = WCS;
+  mosaicSystem = Coord::WCS;
 
   contour = NULL;
 }
@@ -130,7 +130,7 @@ void Context::unload()
   }
 
   mosaicType = Base::NOMOSAIC;
-  mosaicSystem = WCS;
+  mosaicSystem = Coord::WCS;
 
   if (contour)
     delete contour;
@@ -164,7 +164,7 @@ void Context::updateBin(Base* parent)
   }
 
   // finish bin
-  loadInit(Base::NOMOSAIC,WCS);
+  loadInit(Base::NOMOSAIC,Coord::WCS);
   for (int ii=0; ii<2; ii++)
     naxis_[ii] =fits->naxis(ii);
 
@@ -383,32 +383,22 @@ void Context::updateClip(FrScale* fr, int force)
   }
 }
 
-void Context::bltHist(Tcl_Interp* interp, char* xname, char* yname)
+void Context::bltHist(char* xname, char* yname, int num)
 {
-  int num = 256;
-
   if (!fits)
     return;
 
   frScale.histogram(fits,num);
+  double* x = frScale.histogramX();
+  double* y = frScale.histogramY();
 
   Blt_Vector* xx;
-  if (Blt_GetVector(interp, xname, &xx) != TCL_OK)
-    return;
-
-  if (Blt_ResetVector(xx, frScale.histogramX(), num, num*sizeof(double),
-		      TCL_STATIC) 
-      != TCL_OK)
-    return;
+  Blt_GetVector(parent_->interp, xname, &xx);
+  Blt_ResetVector(xx, x, num, num*sizeof(double), TCL_STATIC);
 
   Blt_Vector* yy;
-  if (Blt_GetVector(interp, yname, &yy) != TCL_OK) 
-    return;
-
-  if (Blt_ResetVector(yy, frScale.histogramY(), num, num*sizeof(double),
-		      TCL_STATIC) 
-      != TCL_OK)
-    return;
+  Blt_GetVector(parent_->interp, yname, &yy);
+  Blt_ResetVector(yy, y, num, num*sizeof(double), TCL_STATIC);
 }
 
 Vector Context::getClip()
@@ -447,7 +437,7 @@ int Context::nhdu()
   return dd;
 }
 
-void Context::loadInit(Base::MosaicType type, CoordSystem sys)
+void Context::loadInit(Base::MosaicType type, Coord::CoordSystem sys)
 {
   cfits = fits;
   mosaicCount_ = 1;
@@ -474,7 +464,7 @@ int Context::load(Base* parent, Base::MemType which,
   switch (ll) {
   case Base::IMG:
     fits = img;
-    loadInit(Base::NOMOSAIC,WCS);
+    loadInit(Base::NOMOSAIC,Coord::WCS);
     for (int ii=0; ii<FTY_MAXAXES; ii++)
       naxis_[ii] = img->naxis(ii);
     break;
@@ -532,6 +522,9 @@ int Context::load(Base* parent, Base::MemType which,
     case Base::COMPRESS:
       next = new FitsImageFitsNextCompress(parent, img, ptr->baseFile(), ii+1);
       break;
+    case Base::PHOTO:
+      next = new FitsImagePhotoCubeNext(parent, fn, ptr->baseFile(), ii+1);
+      break;
     }
 
     if (next && next->isValid()) {
@@ -576,7 +569,7 @@ int Context::loadExtCube(Base* parent, Base::MemType which,
   }
 
   fits = img;
-  loadInit(Base::NOMOSAIC,WCS);
+  loadInit(Base::NOMOSAIC,Coord::WCS);
   for (int ii=0; ii<2; ii++)
     naxis_[ii] = img->naxis(ii);
   naxis_[2] =1;
@@ -671,7 +664,7 @@ int Context::loadSlice(Base* parent, Base::MemType which, const char* fn,
   }
   else {
     fits = img;
-    loadInit(Base::NOMOSAIC,WCS);
+    loadInit(Base::NOMOSAIC,Coord::WCS);
     for (int ii=0; ii<2; ii++)
       naxis_[ii] = img->naxis(ii);
     naxis_[2] =1;
@@ -700,7 +693,7 @@ int Context::loadSlice(Base* parent, Base::MemType which, const char* fn,
 
 int Context::loadMosaic(Base* parent, Base::MemType which, 
 			const char* fn, FitsImage* img, Base::LayerType ll, 
-			Base::MosaicType type, CoordSystem sys)
+			Base::MosaicType type, Coord::CoordSystem sys)
 {
   if (!img || !img->isValid()) {
     if (img)
@@ -834,7 +827,7 @@ int Context::loadMosaic(Base* parent, Base::MemType which,
 
 int Context::loadMosaicImage(Base* parent, Base::MemType which, 
 			     const char* fn, FitsImage* img, Base::LayerType ll,
-			     Base::MosaicType type, CoordSystem sys)
+			     Base::MosaicType type, Coord::CoordSystem sys)
 {
   if (!img || !img->isValid()) {
     if (img)
@@ -1116,7 +1109,7 @@ int Context::loadMosaicWFPC2(Base* parent, Base::MemType which,
 
   // Its legal, save it
   fits = img;
-  loadInit(Base::WFPC2,WCS);
+  loadInit(Base::WFPC2,Coord::WCS);
 
   // remember in case of compress
   Base::MemType sav = which;
@@ -1282,7 +1275,7 @@ int Context::loadMosaicWFPC2(Base* parent, Base::MemType which,
 
       // fix fitsimage params
       ptr->replaceWCS(r);
-      ptr->processKeywordsWCS(fits, WCS);
+      ptr->processKeywordsWCS(fits, Coord::WCS);
 
       delete r;
       ptr = ptr->nextMosaic();
diff --git a/saotk/frame/context.h b/saotk/frame/context.h
index 23e4e97..8f6004d 100644
--- a/saotk/frame/context.h
+++ b/saotk/frame/context.h
@@ -35,7 +35,7 @@ class Context {
   int slice_[FTY_MAXAXES]; // the first two are ignored
 
   Base::MosaicType mosaicType;
-  CoordSystem mosaicSystem;
+  Coord::CoordSystem mosaicSystem;
 
   int nhdu();
   void updateClip(FrScale*, int);
@@ -48,7 +48,7 @@ class Context {
 
   void analysis();
 
-  void bltHist(Tcl_Interp*, char*, char*);
+  void bltHist(char*, char*, int);
 
   int calcSlice();
   void clearContour();
@@ -71,11 +71,11 @@ class Context {
   int loadExtCube(Base*, Base::MemType, const char*, FitsImage*);
   int loadSlice(Base*, Base::MemType, const char*, FitsImage*);
   int loadMosaic(Base*, Base::MemType, const char*, FitsImage*, 
-		 Base::LayerType, Base::MosaicType, CoordSystem);
+		 Base::LayerType, Base::MosaicType, Coord::CoordSystem);
   int loadMosaicImage(Base*, Base::MemType, const char*, FitsImage*, 
-		      Base::LayerType, Base::MosaicType, CoordSystem);
+		      Base::LayerType, Base::MosaicType, Coord::CoordSystem);
   int loadMosaicWFPC2(Base*, Base::MemType, const char*, FitsImage*);
-  void loadInit(Base::MosaicType, CoordSystem);
+  void loadInit(Base::MosaicType, Coord::CoordSystem);
   void loadFinish();
   void loadFinishMask();
 
diff --git a/saotk/frame/contour.C b/saotk/frame/contour.C
index 76541ec..7ef4e10 100644
--- a/saotk/frame/contour.C
+++ b/saotk/frame/contour.C
@@ -40,7 +40,7 @@ Contour::~Contour()
     delete [] colorName;
 }
 
-void Contour::render(Pixmap pmap, InternalSystem sys, int width, int height)
+void Contour::render(Pixmap pmap, Coord::InternalSystem sys, int width, int height)
 {
   if (contours_.head()) {
     XSetForeground(parent->display, parent->contourGC, color);
@@ -119,7 +119,7 @@ void Contour::ps(int mode)
       Vector u = contours_.current()->vector;
       if (u[0] != DBL_MAX) {
 	ostringstream str;
-	Vector v = parent->mapFromRef(u,CANVAS);
+	Vector v = parent->mapFromRef(u,Coord::CANVAS);
 	str << "newpath " << endl
 	    << v.TkCanvasPs(parent->canvas) << " moveto" << endl << ends;
 	Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
@@ -128,7 +128,7 @@ void Contour::ps(int mode)
 	  Vector uu = contours_.current()->vector;
 	  if (uu[0] != DBL_MAX) {
 	    ostringstream str;
-	    Vector vv = parent->mapFromRef(uu,CANVAS);
+	    Vector vv = parent->mapFromRef(uu,Coord::CANVAS);
 	    str << vv.TkCanvasPs(parent->canvas) << " lineto" 
 		<< endl << ends;
 	    Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
@@ -161,8 +161,8 @@ void Contour::macosx()
     while (contours_.next()) {
       Vector u2 = contours_.current()->vector;
       if (u1[0] != DBL_MAX && u2[0] != DBL_MAX) {
-	Vector v1 = parent->mapFromRef(u1,CANVAS);
-	Vector v2 = parent->mapFromRef(u2,CANVAS);
+	Vector v1 = parent->mapFromRef(u1,Coord::CANVAS);
+	Vector v2 = parent->mapFromRef(u2,Coord::CANVAS);
 	
 	macosxDrawLine(v1,v2);
       }
@@ -191,8 +191,8 @@ void Contour::win32()
     while (contours_.next()) {
       Vector u2 = contours_.current()->vector;
       if (u1[0] != DBL_MAX && u2[0] != DBL_MAX) {
-	Vector v1 = parent->mapFromRef(u1,CANVAS);
-	Vector v2 = parent->mapFromRef(u2,CANVAS);
+	Vector v1 = parent->mapFromRef(u1,Coord::CANVAS);
+	Vector v2 = parent->mapFromRef(u2,Coord::CANVAS);
 	
 	win32DrawLine(v1,v2);
       }
diff --git a/saotk/frame/contour.h b/saotk/frame/contour.h
index bbd6ca9..81d3f10 100644
--- a/saotk/frame/contour.h
+++ b/saotk/frame/contour.h
@@ -32,7 +32,7 @@ class Contour {
   Contour(Base*, const char*, int, int, const List<Vertex>&);
   virtual ~Contour();
 
-  void render(Pixmap, InternalSystem, int, int);
+  void render(Pixmap, Coord::InternalSystem, int, int);
   void ps(int);
 #ifdef _MACOSX
   void macosx();
diff --git a/saotk/frame/coord.C b/saotk/frame/coord.C
index 6ba5126..763d0a1 100644
--- a/saotk/frame/coord.C
+++ b/saotk/frame/coord.C
@@ -5,7 +5,10 @@
 #include "coord.h"
 #include "util.h"
 
-char *coordSystemStr_[] = {
+Coord coord;
+
+char* Coord::coordSystemStr_[] = {
+  "data",
   "image",
   "physical",
   "amplifier",
@@ -40,7 +43,7 @@ char *coordSystemStr_[] = {
   "wcs0"
 };
 
-char *skyFrameStr_[] = { 
+char* Coord::skyFrameStr_[] = { 
   "fk4",
   "fk4-no-e",
   "fk5",
@@ -52,18 +55,18 @@ char *skyFrameStr_[] = {
   "gappt"
 };
 
-char *skyFormatStr_[] = { 
+char* Coord::skyFormatStr_[] = { 
   "degrees",
   "sexagesimal",
 };
 
-char *skyDistStr_[] = { 
+char* Coord::skyDistStr_[] = {
   "degrees",
   "arcmin",
   "arcsec"
 };
 
-void listCoordSystem(ostream& str, CoordSystem sys, SkyFrame sky, 
+void Coord::listCoordSystem(ostream& str, CoordSystem sys, SkyFrame sky, 
 		     int wcs, int wcsequ)
 {
   switch (sys) {
@@ -121,7 +124,7 @@ void listCoordSystem(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void listDistSystem(ostream& str, CoordSystem sys, SkyDist format, int wcsequ)
+void Coord::listDistSystem(ostream& str, CoordSystem sys, SkyDist format, int wcsequ)
 {
   switch (sys) {
   case IMAGE:
@@ -156,7 +159,7 @@ void listDistSystem(ostream& str, CoordSystem sys, SkyDist format, int wcsequ)
   }
 }
 
-void listProsCoordSystem(ostream& str, CoordSystem sys, SkyFrame sky)
+ void Coord::listProsCoordSystem(ostream& str, CoordSystem sys, SkyFrame sky)
 {
   switch (sys) {
   case IMAGE:
@@ -201,8 +204,8 @@ void listProsCoordSystem(ostream& str, CoordSystem sys, SkyFrame sky)
   }
 }
 
-void strToCoordSystem(const char* str, CoordSystem wcssys, 
-		      CoordSystem* sys, SkyFrame* sky)
+ void Coord::strToCoordSystem(const char* str, CoordSystem wcssys, 
+			      CoordSystem* sys, SkyFrame* sky)
 {
   if (!str) {
     *sys = PHYSICAL;
@@ -270,7 +273,7 @@ void strToCoordSystem(const char* str, CoordSystem wcssys,
   }
 }
 
-void strToSkyFormat(const char* str, SkyFormat* format)
+void Coord::strToSkyFormat(const char* str, SkyFormat* format)
 {
   if (!str)
     *format = DEGREES;
@@ -296,7 +299,7 @@ void strToSkyFormat(const char* str, SkyFormat* format)
     *format = DEGREES;
 }
 
-void strToSkyDist(const char* str, SkyDist* dist)
+void Coord::strToSkyDist(const char* str, SkyDist* dist)
 {
   if (!str)
     *dist = DEGREE;
@@ -318,7 +321,7 @@ void strToSkyDist(const char* str, SkyDist* dist)
     *dist = DEGREE;
 }
 
-void strToAngleFormat(const char* str, AngleFormat* format)
+ void Coord::strToAngleFormat(const char* str, AngleFormat* format)
 {
   if (!str)
     *format = DEG;
@@ -336,8 +339,8 @@ void strToAngleFormat(const char* str, AngleFormat* format)
     *format = DEG;
 }
 
-void strToDistSystem(const char* str, CoordSystem wcssys, 
-		     CoordSystem* sys, SkyDist* dist)
+void Coord::strToDistSystem(const char* str, CoordSystem wcssys, 
+			    CoordSystem* sys, SkyDist* dist)
 {
   if (!str) {
     *sys = PHYSICAL;
diff --git a/saotk/frame/coord.h b/saotk/frame/coord.h
index c84d592..6c13a78 100644
--- a/saotk/frame/coord.h
+++ b/saotk/frame/coord.h
@@ -12,36 +12,46 @@
 #include <iomanip>
 using namespace std;
 
-enum InternalSystem {WINDOW, CANVAS, WIDGET, USER, REF, DATA, 
-		     PANNER, MAGNIFIER, PS};
-enum CoordSystem {IMAGE, PHYSICAL, AMPLIFIER, DETECTOR, WCS,
-		  WCSA, WCSB, WCSC, WCSD, WCSE, WCSF, WCSG, WCSH, WCSI,
-		  WCSJ, WCSK, WCSL, WCSM, WCSN, WCSO, WCSP, WCSQ, WCSR,
-		  WCSS, WCST, WCSU, WCSV, WCSW, WCSX, WCSY, WCSZ, WCS0};
-enum SkyFrame {FK4, FK4_NO_E, FK5, ICRS, GALACTIC, SUPERGALACTIC, 
-	       ECLIPTIC, HELIOECLIPTIC};
-enum SkyFormat {DEGREES, SEXAGESIMAL};
-enum SkyDist {DEGREE, ARCMIN, ARCSEC};
-enum Precision {DEFAULT, FIXED, SCIENTIFIC, INTEGER};
-enum AngleFormat {DEG, RAD};
-
-enum Orientation {NORMAL, XX, YY, XY};
-
-// SkyFrame SkyFormat strings
-
-extern char *coordSystemStr_[];
-extern char *skyFrameStr_[];
-extern char *skyFormatStr_[];
-extern char *skyDistStr_[];
-
-void listCoordSystem(ostream&, CoordSystem, SkyFrame, int, int);
-void listDistSystem(ostream&, CoordSystem, SkyDist, int);
-void listProsCoordSystem(ostream&, CoordSystem, SkyFrame);
-
-void strToCoordSystem(const char*, CoordSystem, CoordSystem*, SkyFrame*);
-void strToSkyFormat(const char*, SkyFormat*);
-void strToSkyDist(const char*, SkyDist*);
-void strToAngleFormat(const char*, AngleFormat*);
-void strToDistSystem(const char*, CoordSystem, CoordSystem*, SkyDist*);
+class Coord {
+ public:
+  enum InternalSystem {WINDOW, CANVAS, WIDGET, USER, REF, 
+		       PANNER, MAGNIFIER, PS};
+
+  enum CoordSystem {DATA, IMAGE, PHYSICAL, AMPLIFIER, DETECTOR, WCS, 
+		    WCSA, WCSB, WCSC, WCSD, WCSE, WCSF, WCSG, WCSH, WCSI,
+		    WCSJ, WCSK, WCSL, WCSM, WCSN, WCSO, WCSP, WCSQ, WCSR,
+		    WCSS, WCST, WCSU, WCSV, WCSW, WCSX, WCSY, WCSZ, WCS0};
+
+  enum SkyFrame {FK4, FK4_NO_E, FK5, ICRS, GALACTIC, SUPERGALACTIC, 
+		 ECLIPTIC, HELIOECLIPTIC};
+
+  enum SkyFormat {DEGREES, SEXAGESIMAL};
+  enum SkyDist {DEGREE, ARCMIN, ARCSEC};
+  enum AngleFormat {DEG, RAD};
+  enum Orientation {NORMAL, XX, YY, XY};
+
+  static char *coordSystemStr_[];
+  static char *skyFrameStr_[];
+  static char *skyFormatStr_[];
+  static char *skyDistStr_[];
+
+  public:
+  void listCoordSystem(ostream&, CoordSystem, SkyFrame, int, int);
+  void listDistSystem(ostream&, CoordSystem, SkyDist, int);
+  void listProsCoordSystem(ostream&, CoordSystem, SkyFrame);
+
+  void strToCoordSystem(const char*, CoordSystem, CoordSystem*, SkyFrame*);
+  void strToSkyFormat(const char*, SkyFormat*);
+  void strToSkyDist(const char*, SkyDist*);
+  void strToDistSystem(const char*, CoordSystem, CoordSystem*, SkyDist*);
+  void strToAngleFormat(const char*, AngleFormat*);
+
+  char* coordSystemStr(int ii) {return coordSystemStr_[ii];}
+  char* skyFrameStr(int ii) {return skyFrameStr_[ii];}
+  char* skyFormatStr(int ii) {return skyFormatStr_[ii];}
+  char* skyDistStr(int ii) {return skyDistStr_[ii];}
+};
+
+extern Coord coord;
 
 #endif
diff --git a/saotk/frame/cpanda.C b/saotk/frame/cpanda.C
index b99b350..9fd2bbb 100644
--- a/saotk/frame/cpanda.C
+++ b/saotk/frame/cpanda.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "cpanda.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Cpanda::Cpanda(const Cpanda& a) : BasePanda(a), BaseEllipse(a) {}
@@ -26,7 +25,7 @@ Cpanda::Cpanda(Base* p, const Vector& ctr,
     annuli_[ii] = Vector(r,r);
   }
 
-  strcpy(type, "panda");
+  strcpy(type_, "panda");
   numHandle = 4 + numAnnuli_ + numAngles_;
 
   startAng_ = angles_[0];
@@ -52,7 +51,7 @@ Cpanda::Cpanda(Base* p, const Vector& ctr,
     annuli_[ii] = Vector(r[ii],r[ii]);
   sortAnnuli();
 
-  strcpy(type, "panda");
+  strcpy(type_, "panda");
   numHandle = 4 + numAnnuli_ + numAngles_;
 
   startAng_ = angles_[0];
@@ -61,7 +60,7 @@ Cpanda::Cpanda(Base* p, const Vector& ctr,
   updateBBox();
 }
 
-void Cpanda::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Cpanda::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   BaseEllipse::renderX(drawable, sys, mode);
 
@@ -102,9 +101,9 @@ void Cpanda::renderPS(int mode)
 
   for (int ii=0; ii<numAngles_; ii++) {
     Vector rr0 = fwdMap(Vector(r0[0]*cos(-angles_[ii]),r0[1]*sin(-angles_[ii])),
-			CANVAS);
+			Coord::CANVAS);
     Vector rr1 = fwdMap(Vector(r1[0]*cos(-angles_[ii]),r1[1]*sin(-angles_[ii])),
-			CANVAS);
+			Coord::CANVAS);
 
     ostringstream str;
     str << "newpath " 
@@ -125,9 +124,9 @@ void Cpanda::renderMACOSX()
 
   for (int ii=0; ii<numAngles_; ii++) {
     Vector rr0 = fwdMap(Vector(r0[0]*cos(-angles_[ii]),r0[1]*sin(-angles_[ii])),
-			CANVAS);
+			Coord::CANVAS);
     Vector rr1 = fwdMap(Vector(r1[0]*cos(-angles_[ii]),r1[1]*sin(-angles_[ii])),
-			CANVAS);
+			Coord::CANVAS);
 
     macosxDrawLine(rr0,rr1);
   }
@@ -145,10 +144,10 @@ void Cpanda::renderWIN32()
   for (int ii=0; ii<numAngles_; ii++) {
     Vector rr0 = fwdMap(Vector(r0[0]*cos(-angles_[ii]),
 					 r0[1]*sin(-angles_[ii])),
-				  CANVAS);
+				  Coord::CANVAS);
     Vector rr1 = fwdMap(Vector(r1[0]*cos(-angles_[ii]),
 					 r1[1]*sin(-angles_[ii])),
-				  CANVAS);
+				  Coord::CANVAS);
 
     win32DrawLine(rr0,rr1);
   }
@@ -171,18 +170,18 @@ void Cpanda::updateHandles()
       max = annuli_[ii];
   Vector& r = max;
 
-  handle[0] = fwdMap(Vector(-r[0],-r[1]),CANVAS);
-  handle[1] = fwdMap(Vector( r[0],-r[1]),CANVAS);
-  handle[2] = fwdMap(Vector( r[0], r[1]),CANVAS);
-  handle[3] = fwdMap(Vector(-r[0], r[1]),CANVAS);
+  handle[0] = fwdMap(Vector(-r[0],-r[1]),Coord::CANVAS);
+  handle[1] = fwdMap(Vector( r[0],-r[1]),Coord::CANVAS);
+  handle[2] = fwdMap(Vector( r[0], r[1]),Coord::CANVAS);
+  handle[3] = fwdMap(Vector(-r[0], r[1]),Coord::CANVAS);
 
   for (int ii=0; ii<numAnnuli_; ii++)
-    handle[ii+4] = fwdMap(Vector(annuli_[ii][0],0),CANVAS);
+    handle[ii+4] = fwdMap(Vector(annuli_[ii][0],0),Coord::CANVAS);
 
   Vector rr = annuli_[numAnnuli_-1];
   for (int ii=0; ii<numAngles_; ii++)
     handle[4+numAnnuli_+ii] = 
-      fwdMap(Vector(rr[0]*cos(-angles_[ii]),rr[1]*sin(-angles_[ii])),CANVAS);
+      fwdMap(Vector(rr[0]*cos(-angles_[ii]),rr[1]*sin(-angles_[ii])),Coord::CANVAS);
 }
 
 void Cpanda::edit(const Vector& v, int h)
@@ -346,8 +345,8 @@ void Cpanda::deleteAnglesAnnuli(int h)
 }
 
 // list
-void Cpanda::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		 SkyFormat format, int conj, int strip)
+void Cpanda::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		 Coord::SkyFormat format, int conj, int strip)
 {
   int regular = 1;
   if (numAngles_>2) {
@@ -388,17 +387,17 @@ void Cpanda::list(ostream& str, CoordSystem sys, SkyFrame sky,
     listB(str, sys, sky, format, conj, strip);
 }
 
-void Cpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
-		  SkyFormat format, int conj, int strip)
+void Cpanda::listA(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		  Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       double ang1 = radToDeg(parent->mapAngleFromRef(angles_[0],sys));
       double ang2 = radToDeg(parent->mapAngleFromRef(angles_[numAngles_-1],sys));
@@ -406,7 +405,7 @@ void Cpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	ang2 += 360;
 
       Vector v = ptr->mapFromRef(center,sys);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	  << ang1 << ',' << ang2 << ',' << numAngles_-1 << ','
 	  << ptr->mapLenFromRef(annuli_[0][0],sys) << ','
 	  << ptr->mapLenFromRef(annuli_[numAnnuli_-1][0],sys) << ','
@@ -417,7 +416,7 @@ void Cpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    double ang1 = radToDeg(parent->mapAngleFromRef(angles_[0],sys,sky));
 	    double ang2 = radToDeg(parent->mapAngleFromRef(angles_[numAngles_-1],sys,sky));
@@ -426,14 +425,14 @@ void Cpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	      ang2 += 360;
 
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	    str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 		<< ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
-		<< ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC) << '"' << ','
-		<< ptr->mapLenFromRef(annuli_[numAnnuli_-1][0],sys,ARCSEC)<< '"'<<','
+		<< ptr->mapLenFromRef(annuli_[0][0],sys,Coord::ARCSEC) << '"' << ','
+		<< ptr->mapLenFromRef(annuli_[numAnnuli_-1][0],sys,Coord::ARCSEC)<< '"'<<','
 		<< numAnnuli_-1 << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -449,10 +448,10 @@ void Cpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	    if (ang2<=ang1+FLT_EPSILON)
 	      ang2 += 360;
 
-	    str << type << '(' << ra << ',' << dec << ','
+	    str << type_ << '(' << ra << ',' << dec << ','
 		<< ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
-		<< ptr->mapLenFromRef(annuli_[0][0],sys,ARCSEC) << '"' << ','
-		<< ptr->mapLenFromRef(annuli_[numAnnuli_-1][0],sys,ARCSEC)<< '"'<<','
+		<< ptr->mapLenFromRef(annuli_[0][0],sys,Coord::ARCSEC) << '"' << ','
+		<< ptr->mapLenFromRef(annuli_[numAnnuli_-1][0],sys,Coord::ARCSEC)<< '"'<<','
 		<< numAnnuli_-1 << ')';
 	  }
 	  break;
@@ -466,7 +465,7 @@ void Cpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	  ang2 += 360;
 
 	Vector v = ptr->mapFromRef(center,sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	    << ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
 	    << ptr->mapLenFromRef(annuli_[0][0],sys) << ','
 	    << ptr->mapLenFromRef(annuli_[numAnnuli_-1][0],sys)<< ','
@@ -478,16 +477,16 @@ void Cpanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
-		  SkyFormat format, int conj, int strip)
+void Cpanda::listB(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		  Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       for (int j=1; j<numAngles_; j++) {
@@ -500,7 +499,7 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	for (int i=1; i<numAnnuli_; i++) {
 	  listPre(str, sys, sky, ptr, strip, 0);
 
-	  str << type << '(' << setprecision(8) 
+	  str << type_ << '(' << setprecision(8) 
 	      << v[0] << ',' << v[1] << ','
 	      << ang1 << ',' << ang2 << ",1,"
 	      << ptr->mapLenFromRef(annuli_[i-1][0],sys) << ',' 
@@ -543,7 +542,7 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
 	    for (int j=1; j<numAngles_; j++) {
@@ -556,11 +555,11 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	      for (int i=1; i<numAnnuli_; i++) {
 		listPre(str, sys, sky, ptr, strip, 0);
 
-		str << type << '(' << setprecision(8) 
+		str << type_ << '(' << setprecision(8) 
 		    << v[0] << ',' << v[1] << ','
 		    << ang1 << ',' << ang2 << ",1,"
-		    << ptr->mapLenFromRef(annuli_[i-1][0],sys,ARCSEC) << '"' <<',' 
-		    << ptr->mapLenFromRef(annuli_[i][0],sys,ARCSEC) << '"' <<",1)";
+		    << ptr->mapLenFromRef(annuli_[i-1][0],sys,Coord::ARCSEC) << '"' <<',' 
+		    << ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCSEC) << '"' <<",1)";
 		
 		if (!strip) {
 		  if (conj)
@@ -575,7 +574,7 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 			  << ((k<numAngles_-1) ? ' ' : ')');
 		    str << '(';
 		    for (int k=0; k<numAnnuli_; k++)
-		      str << ptr->mapLenFromRef(annuli_[k][0],sys,ARCSEC) << '"'
+		      str << ptr->mapLenFromRef(annuli_[k][0],sys,Coord::ARCSEC) << '"'
 			  << ((k<numAnnuli_-1) ? ' ' : ')');
 
 		    listProps(str);
@@ -595,7 +594,7 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	    }
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -616,10 +615,10 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
 		listPre(str, sys, sky, ptr, strip, 0);
 
-		str << type << '(' << ra << ',' << dec << ','
+		str << type_ << '(' << ra << ',' << dec << ','
 		    << ang1 << ',' << ang2 << ",1,"
-		    << ptr->mapLenFromRef(annuli_[i-1][0],sys,ARCSEC) << '"' <<',' 
-		    << ptr->mapLenFromRef(annuli_[i][0],sys,ARCSEC) << '"' <<",1)";
+		    << ptr->mapLenFromRef(annuli_[i-1][0],sys,Coord::ARCSEC) << '"' <<',' 
+		    << ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCSEC) << '"' <<",1)";
 
 		if (!strip) {
 		  if (conj)
@@ -634,7 +633,7 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 			  << ((k<numAngles_-1) ? ' ' : ')');
 		    str << '(';
 		    for (int k=0; k<numAnnuli_; k++)
-		      str << ptr->mapLenFromRef(annuli_[k][0],sys,ARCSEC) << '"'
+		      str << ptr->mapLenFromRef(annuli_[k][0],sys,Coord::ARCSEC) << '"'
 			  << ((k<numAnnuli_-1) ? ' ' : ')');
 
 		    listProps(str);
@@ -669,7 +668,7 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	  for (int i=1; i<numAnnuli_; i++) {
 	    listPre(str, sys, sky, ptr, strip, 0);
 
-	    str << type << '(' << setprecision(8) 
+	    str << type_ << '(' << setprecision(8) 
 		<< v[0] << ',' << v[1] << ','
 		<< ang1 << ',' << ang2 << ",1,"
 		<< ptr->mapLenFromRef(annuli_[i-1][0],sys) <<',' 
@@ -710,13 +709,13 @@ void Cpanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Cpanda::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		     SkyFormat format)
+void Cpanda::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		     Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadiusX(ptr,sys,annuli_,numAnnuli_);
@@ -726,17 +725,17 @@ void Cpanda::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Cpanda::listCiao(ostream& str, CoordSystem sys, int strip)
+void Cpanda::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,PHYSICAL);
+      Vector v = ptr->mapFromRef(center,Coord::PHYSICAL);
       for (int i=0; i<numAnnuli_-1; i++)
 	for (int j=0; j<numAngles_-1; j++) {
 	  listCiaoPre(str);
@@ -748,8 +747,8 @@ void Cpanda::listCiao(ostream& str, CoordSystem sys, int strip)
 	    ang2 += 360;
 
 	  str << "pie(" << setprecision(8) << v[0] << ',' << v[1] << ','
-	      << ptr->mapLenFromRef(annuli_[i][0],PHYSICAL) << ','
-	      << ptr->mapLenFromRef(annuli_[i+1][0],PHYSICAL) << ','
+	      << ptr->mapLenFromRef(annuli_[i][0],Coord::PHYSICAL) << ','
+	      << ptr->mapLenFromRef(annuli_[i+1][0],Coord::PHYSICAL) << ','
 	      << ang1 << ',' << ang2 << ')';
 
 	  listCiaoPost(str, strip);
@@ -760,7 +759,7 @@ void Cpanda::listCiao(ostream& str, CoordSystem sys, int strip)
     if (ptr->hasWCSCel(sys)) {
 
       char buf[64];
-      ptr->mapFromRef(center,sys,FK5,SEXAGESIMAL, buf, 64);
+      ptr->mapFromRef(center,sys,Coord::FK5,Coord::SEXAGESIMAL, buf, 64);
       char ra[16];
       char dec[16];
       string x(buf);
@@ -778,8 +777,8 @@ void Cpanda::listCiao(ostream& str, CoordSystem sys, int strip)
 	    ang2 += 360;
 
 	  str << "pie(" << ra << ',' << dec << ','
-	      << ptr->mapLenFromRef(annuli_[i][0],sys,ARCMIN) << '\'' << ','
-	      << ptr->mapLenFromRef(annuli_[i+1][0],sys,ARCMIN) << '\'' << ','
+	      << ptr->mapLenFromRef(annuli_[i][0],sys,Coord::ARCMIN) << '\'' << ','
+	      << ptr->mapLenFromRef(annuli_[i+1][0],sys,Coord::ARCMIN) << '\'' << ','
 	      << ang1 << ',' << ang2 << ')';
 
 	  listCiaoPost(str, strip);
diff --git a/saotk/frame/cpanda.h b/saotk/frame/cpanda.h
index 9e65d3f..d5f3f89 100644
--- a/saotk/frame/cpanda.h
+++ b/saotk/frame/cpanda.h
@@ -10,7 +10,7 @@
 
 class Cpanda : public BasePanda, public BaseEllipse {
  private:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
@@ -21,8 +21,8 @@ class Cpanda : public BasePanda, public BaseEllipse {
 
   void updateHandles();
 
-  void listA(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listB(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
+  void listA(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listB(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
 
  public:
   Cpanda(const Cpanda&);
@@ -57,9 +57,9 @@ class Cpanda : public BasePanda, public BaseEllipse {
   void setAnglesAnnuli(const double*, int, const Vector*, int);
   void deleteAnglesAnnuli(int h);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listCiao(ostream&, CoordSystem, int);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void listCiao(ostream&, Coord::CoordSystem, int);
 
   // special composite funtionality
   void setComposite(const Matrix&, double);
diff --git a/saotk/frame/ds9parser.C b/saotk/frame/ds9parser.C
index 352da09..a3aa5ce 100644
--- a/saotk/frame/ds9parser.C
+++ b/saotk/frame/ds9parser.C
@@ -148,57 +148,56 @@
      POINT_ = 329,
      POLYGON_ = 330,
      PROJECTION_ = 331,
-     PROJECTION3D_ = 332,
-     PROPERTY_ = 333,
-     ROTATE_ = 334,
-     ROTBOX_ = 335,
-     RULER_ = 336,
-     SELECT_ = 337,
-     SOURCE_ = 338,
-     SUPERGALACTIC_ = 339,
-     TAG_ = 340,
-     TEXT_ = 341,
-     TEXTANGLE_ = 342,
-     TEXTROTATE_ = 343,
-     TILE_ = 344,
-     TRUE_ = 345,
-     VECTOR_ = 346,
-     VERSION_ = 347,
-     UNHIGHLITE_ = 348,
-     UNSELECT_ = 349,
-     UPDATE_ = 350,
-     WCS_ = 351,
-     WCSA_ = 352,
-     WCSB_ = 353,
-     WCSC_ = 354,
-     WCSD_ = 355,
-     WCSE_ = 356,
-     WCSF_ = 357,
-     WCSG_ = 358,
-     WCSH_ = 359,
-     WCSI_ = 360,
-     WCSJ_ = 361,
-     WCSK_ = 362,
-     WCSL_ = 363,
-     WCSM_ = 364,
-     WCSN_ = 365,
-     WCSO_ = 366,
-     WCSP_ = 367,
-     WCSQ_ = 368,
-     WCSR_ = 369,
-     WCSS_ = 370,
-     WCST_ = 371,
-     WCSU_ = 372,
-     WCSV_ = 373,
-     WCSW_ = 374,
-     WCSX_ = 375,
-     WCSY_ = 376,
-     WCSZ_ = 377,
-     WCS0_ = 378,
-     WIDTH_ = 379,
-     X_ = 380,
-     Y_ = 381,
-     YES_ = 382
+     PROPERTY_ = 332,
+     ROTATE_ = 333,
+     ROTBOX_ = 334,
+     RULER_ = 335,
+     SELECT_ = 336,
+     SOURCE_ = 337,
+     SUPERGALACTIC_ = 338,
+     TAG_ = 339,
+     TEXT_ = 340,
+     TEXTANGLE_ = 341,
+     TEXTROTATE_ = 342,
+     TILE_ = 343,
+     TRUE_ = 344,
+     VECTOR_ = 345,
+     VERSION_ = 346,
+     UNHIGHLITE_ = 347,
+     UNSELECT_ = 348,
+     UPDATE_ = 349,
+     WCS_ = 350,
+     WCSA_ = 351,
+     WCSB_ = 352,
+     WCSC_ = 353,
+     WCSD_ = 354,
+     WCSE_ = 355,
+     WCSF_ = 356,
+     WCSG_ = 357,
+     WCSH_ = 358,
+     WCSI_ = 359,
+     WCSJ_ = 360,
+     WCSK_ = 361,
+     WCSL_ = 362,
+     WCSM_ = 363,
+     WCSN_ = 364,
+     WCSO_ = 365,
+     WCSP_ = 366,
+     WCSQ_ = 367,
+     WCSR_ = 368,
+     WCSS_ = 369,
+     WCST_ = 370,
+     WCSU_ = 371,
+     WCSV_ = 372,
+     WCSW_ = 373,
+     WCSX_ = 374,
+     WCSY_ = 375,
+     WCSZ_ = 376,
+     WCS0_ = 377,
+     WIDTH_ = 378,
+     X_ = 379,
+     Y_ = 380,
+     YES_ = 381
    };
 #endif
 /* Tokens.  */
@@ -276,57 +275,56 @@
 #define POINT_ 329
 #define POLYGON_ 330
 #define PROJECTION_ 331
-#define PROJECTION3D_ 332
-#define PROPERTY_ 333
-#define ROTATE_ 334
-#define ROTBOX_ 335
-#define RULER_ 336
-#define SELECT_ 337
-#define SOURCE_ 338
-#define SUPERGALACTIC_ 339
-#define TAG_ 340
-#define TEXT_ 341
-#define TEXTANGLE_ 342
-#define TEXTROTATE_ 343
-#define TILE_ 344
-#define TRUE_ 345
-#define VECTOR_ 346
-#define VERSION_ 347
-#define UNHIGHLITE_ 348
-#define UNSELECT_ 349
-#define UPDATE_ 350
-#define WCS_ 351
-#define WCSA_ 352
-#define WCSB_ 353
-#define WCSC_ 354
-#define WCSD_ 355
-#define WCSE_ 356
-#define WCSF_ 357
-#define WCSG_ 358
-#define WCSH_ 359
-#define WCSI_ 360
-#define WCSJ_ 361
-#define WCSK_ 362
-#define WCSL_ 363
-#define WCSM_ 364
-#define WCSN_ 365
-#define WCSO_ 366
-#define WCSP_ 367
-#define WCSQ_ 368
-#define WCSR_ 369
-#define WCSS_ 370
-#define WCST_ 371
-#define WCSU_ 372
-#define WCSV_ 373
-#define WCSW_ 374
-#define WCSX_ 375
-#define WCSY_ 376
-#define WCSZ_ 377
-#define WCS0_ 378
-#define WIDTH_ 379
-#define X_ 380
-#define Y_ 381
-#define YES_ 382
+#define PROPERTY_ 332
+#define ROTATE_ 333
+#define ROTBOX_ 334
+#define RULER_ 335
+#define SELECT_ 336
+#define SOURCE_ 337
+#define SUPERGALACTIC_ 338
+#define TAG_ 339
+#define TEXT_ 340
+#define TEXTANGLE_ 341
+#define TEXTROTATE_ 342
+#define TILE_ 343
+#define TRUE_ 344
+#define VECTOR_ 345
+#define VERSION_ 346
+#define UNHIGHLITE_ 347
+#define UNSELECT_ 348
+#define UPDATE_ 349
+#define WCS_ 350
+#define WCSA_ 351
+#define WCSB_ 352
+#define WCSC_ 353
+#define WCSD_ 354
+#define WCSE_ 355
+#define WCSF_ 356
+#define WCSG_ 357
+#define WCSH_ 358
+#define WCSI_ 359
+#define WCSJ_ 360
+#define WCSK_ 361
+#define WCSL_ 362
+#define WCSM_ 363
+#define WCSN_ 364
+#define WCSO_ 365
+#define WCSP_ 366
+#define WCSQ_ 367
+#define WCSR_ 368
+#define WCSS_ 369
+#define WCST_ 370
+#define WCSU_ 371
+#define WCSV_ 372
+#define WCSW_ 373
+#define WCSX_ 374
+#define WCSY_ 375
+#define WCSZ_ 376
+#define WCS0_ 377
+#define WIDTH_ 378
+#define X_ 379
+#define Y_ 380
+#define YES_ 381
 
 
 
@@ -346,6 +344,7 @@
 #include "base.h"
 #include "fitsimage.h"
 #include "basemarker.h"
+#include "point.h"
 
 #undef yyFlexLexer
 #define yyFlexLexer mkFlexLexer
@@ -355,11 +354,11 @@ extern int mklex(void*, mkFlexLexer*);
 extern void mkerror(Base*, mkFlexLexer*, const char*);
 extern void mkDiscard(int);
 
-static CoordSystem globalSystem;
-static CoordSystem globalWCS;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::CoordSystem globalWCS;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static int globalTile;
 
@@ -404,23 +403,23 @@ static double localTextAngle;
 static int globalTextRotate;
 static int localTextRotate;
 
-static CoordSystem globalRulerCoordSystem;
-static CoordSystem localRulerCoordSystem;
-static SkyFrame globalRulerSkyFrame;
-static SkyFrame localRulerSkyFrame;
-static CoordSystem globalRulerDistSystem;
-static CoordSystem localRulerDistSystem;
-static SkyDist globalRulerDistFormat;
-static SkyDist localRulerDistFormat;
-
-static CoordSystem globalCompassCoordSystem;
-static SkyFrame globalCompassSkyFrame;
+static Coord::CoordSystem globalRulerCoordSystem;
+static Coord::CoordSystem localRulerCoordSystem;
+static Coord::SkyFrame globalRulerSkyFrame;
+static Coord::SkyFrame localRulerSkyFrame;
+static Coord::CoordSystem globalRulerDistSystem;
+static Coord::CoordSystem localRulerDistSystem;
+static Coord::SkyDist globalRulerDistFormat;
+static Coord::SkyDist localRulerDistFormat;
+
+static Coord::CoordSystem globalCompassCoordSystem;
+static Coord::SkyFrame globalCompassSkyFrame;
 static char globalCompassNorth[80];
 static char globalCompassEast[80];
 static int globalCompassNArrow;
 static int globalCompassEArrow;
-static CoordSystem localCompassCoordSystem;
-static SkyFrame localCompassSkyFrame;
+static Coord::CoordSystem localCompassCoordSystem;
+static Coord::SkyFrame localCompassSkyFrame;
 static char localCompassNorth[80];
 static char localCompassEast[80];
 static int localCompassNArrow;
@@ -453,10 +452,8 @@ static char aText[80];
 static char aComment[80];
 
 static void setProps(unsigned short* props, unsigned short prop, int value);
-static CoordSystem checkWCSSystem();
-static SkyFrame checkWCSSky();
-
-enum {CIRCLE,BOX,DIAMOND,CROSS,XPT,ARROW,BOXCIRCLE};
+static Coord::CoordSystem checkWCSSystem();
+static Coord::SkyFrame checkWCSSky();
 
 
 /* Enabling traces.  */
@@ -479,7 +476,7 @@ enum {CIRCLE,BOX,DIAMOND,CROSS,XPT,ARROW,BOXCIRCLE};
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 136 "ds9parser.Y"
+#line 135 "ds9parser.Y"
 {
 #define MKBUFSIZE 2048
   double real;
@@ -488,7 +485,7 @@ typedef union YYSTYPE
   double vector[3];
 }
 /* Line 193 of yacc.c.  */
-#line 492 "ds9parser.C"
+#line 489 "ds9parser.C"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -501,7 +498,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 505 "ds9parser.C"
+#line 502 "ds9parser.C"
 
 #ifdef short
 # undef short
@@ -716,10 +713,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2559
+#define YYLAST   2552
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  140
+#define YYNTOKENS  139
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  71
 /* YYNRULES -- Number of rules.  */
@@ -729,7 +726,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   382
+#define YYMAXUTOK   381
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -738,18 +735,18 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     129,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     128,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   139,     2,   128,     2,     2,   138,     2,
-     132,   133,     2,   136,   131,   137,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   130,
-       2,   135,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   138,     2,   127,     2,     2,   137,     2,
+     131,   132,     2,   135,   130,   136,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   129,
+       2,   134,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,   134,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,   133,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -775,7 +772,7 @@ static const yytype_uint8 yytranslate[] =
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127
+     125,   126
 };
 
 #if YYDEBUG
@@ -809,185 +806,185 @@ static const yytype_uint16 yyprhs[] =
      623,   627,   632,   635,   638,   641,   644,   647,   650,   652,
      654,   657,   659,   661,   663,   664,   672,   674,   675,   686,
      688,   689,   700,   702,   703,   705,   707,   709,   711,   713,
-     715,   717,   719,   721,   728,   737,   748,   759,   768,   777,
-     786,   795,   806,   819,   832,   851,   862,   875,   890,   905,
-     924,   945,   956,   967,   980,   995,  1010,  1029,  1050,  1059,
-    1066,  1074,  1082,  1090,  1098,  1106,  1114,  1122,  1123,  1131,
-    1142,  1155,  1168,  1174,  1181,  1182,  1192,  1201,  1212,  1223,
-    1232,  1241,  1250,  1254,  1256,  1258,  1262,  1264,  1266,  1270,
+     715,   717,   719,   721,   732,   739,   748,   757,   768,   777,
+     786,   795,   804,   815,   826,   837,   838,   846,   855,   866,
+     873,   874,   884,   891,   899,   907,   915,   923,   931,   939,
+     947,   956,   965,   976,   987,  1000,  1013,  1026,  1041,  1056,
+    1075,  1088,  1103,  1118,  1137,  1156,  1177,  1198,  1209,  1222,
+    1235,  1241,  1250,  1254,  1256,  1258,  1262,  1264,  1266,  1270,
     1272,  1274,  1278,  1280,  1284
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     141,     0,    -1,   184,   142,   210,    -1,   142,   143,   157,
-      -1,   143,   157,    -1,    -1,    37,   159,    -1,    92,    -1,
-      55,   180,   149,    -1,    89,     3,    -1,    -1,   174,   144,
-     149,    -1,    -1,   176,   145,   149,    -1,    -1,    65,   146,
-     149,    -1,   195,   199,    -1,   195,   197,   199,    -1,   195,
-     128,   147,    -1,   198,    -1,   197,   198,    -1,    89,     3,
-      -1,    -1,   148,     5,    -1,    -1,    -1,   128,   150,     5,
-      -1,   210,    -1,    -1,   128,   152,     5,   210,    -1,   128,
-     185,   210,    -1,    -1,   128,   185,   153,     5,   210,    -1,
-     210,    -1,    -1,   155,     5,   210,    -1,   185,   210,    -1,
-      -1,   185,   156,     5,   210,    -1,   129,    -1,   130,    -1,
+     140,     0,    -1,   183,   141,   209,    -1,   141,   142,   156,
+      -1,   142,   156,    -1,    -1,    37,   158,    -1,    91,    -1,
+      55,   179,   148,    -1,    88,     3,    -1,    -1,   173,   143,
+     148,    -1,    -1,   175,   144,   148,    -1,    -1,    65,   145,
+     148,    -1,   194,   198,    -1,   194,   196,   198,    -1,   194,
+     127,   146,    -1,   197,    -1,   196,   197,    -1,    88,     3,
+      -1,    -1,   147,     5,    -1,    -1,    -1,   127,   149,     5,
+      -1,   209,    -1,    -1,   127,   151,     5,   209,    -1,   127,
+     184,   209,    -1,    -1,   127,   184,   152,     5,   209,    -1,
+     209,    -1,    -1,   154,     5,   209,    -1,   184,   209,    -1,
+      -1,   184,   155,     5,   209,    -1,   128,    -1,   129,    -1,
       15,    -1,     4,    -1,     3,    -1,    70,    -1,    69,    -1,
-       3,    -1,   127,    -1,   126,    -1,    70,    -1,    90,    -1,
-      68,    -1,    67,    -1,    69,    -1,    47,    -1,    -1,   131,
-      -1,    -1,   132,    -1,    -1,   133,    -1,    -1,   134,    -1,
-     134,   134,    -1,    -1,   166,    -1,   158,    -1,     6,    -1,
-       7,    -1,   158,    -1,    10,    -1,    11,    -1,     6,    -1,
-       8,    -1,     9,    -1,   158,   161,   158,    -1,    10,   161,
-      10,    -1,    11,   161,    11,    -1,     6,   161,     6,    -1,
-       8,   161,     8,    -1,     9,   161,     9,    -1,    67,   135,
-       3,    -1,    12,    -1,    13,    -1,    14,    -1,   170,   161,
-     170,    -1,   171,   161,   172,    -1,   172,   161,   172,    -1,
-     158,   161,   158,    -1,     6,   161,     6,    -1,    11,   161,
-      11,    -1,    10,   161,    10,    -1,    60,    -1,    71,    -1,
-      40,    -1,    16,    -1,   175,    -1,    96,    -1,    97,    -1,
-      98,    -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,
-     103,    -1,   104,    -1,   105,    -1,   106,    -1,   107,    -1,
-     108,    -1,   109,    -1,   110,    -1,   111,    -1,   112,    -1,
-     113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,    -1,
-     118,    -1,   119,    -1,   120,    -1,   121,    -1,   122,    -1,
-     123,    -1,    50,    -1,    21,    -1,    51,    -1,    52,    -1,
-      62,    -1,    58,    -1,    54,    -1,    84,    -1,    42,    -1,
-      56,    -1,    38,    -1,    18,    -1,    19,    -1,    82,    -1,
+       3,    -1,   126,    -1,   125,    -1,    70,    -1,    89,    -1,
+      68,    -1,    67,    -1,    69,    -1,    47,    -1,    -1,   130,
+      -1,    -1,   131,    -1,    -1,   132,    -1,    -1,   133,    -1,
+     133,   133,    -1,    -1,   165,    -1,   157,    -1,     6,    -1,
+       7,    -1,   157,    -1,    10,    -1,    11,    -1,     6,    -1,
+       8,    -1,     9,    -1,   157,   160,   157,    -1,    10,   160,
+      10,    -1,    11,   160,    11,    -1,     6,   160,     6,    -1,
+       8,   160,     8,    -1,     9,   160,     9,    -1,    67,   134,
+       3,    -1,    12,    -1,    13,    -1,    14,    -1,   169,   160,
+     169,    -1,   170,   160,   171,    -1,   171,   160,   171,    -1,
+     157,   160,   157,    -1,     6,   160,     6,    -1,    11,   160,
+      11,    -1,    10,   160,    10,    -1,    60,    -1,    71,    -1,
+      40,    -1,    16,    -1,   174,    -1,    95,    -1,    96,    -1,
+      97,    -1,    98,    -1,    99,    -1,   100,    -1,   101,    -1,
+     102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,    -1,
+     107,    -1,   108,    -1,   109,    -1,   110,    -1,   111,    -1,
+     112,    -1,   113,    -1,   114,    -1,   115,    -1,   116,    -1,
+     117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
+     122,    -1,    50,    -1,    21,    -1,    51,    -1,    52,    -1,
+      62,    -1,    58,    -1,    54,    -1,    83,    -1,    42,    -1,
+      56,    -1,    38,    -1,    18,    -1,    19,    -1,    81,    -1,
       57,    -1,    35,    -1,    49,    -1,    43,    -1,    66,    -1,
-      79,    -1,    39,    -1,    61,    -1,    83,    -1,    82,    -1,
-      94,    -1,    57,    -1,    93,    -1,    23,    66,    -1,    66,
+      78,    -1,    39,    -1,    61,    -1,    82,    -1,    81,    -1,
+      93,    -1,    57,    -1,    92,    -1,    23,    66,    -1,    66,
       -1,    45,    66,    -1,    23,    43,    -1,    43,    -1,    45,
-      43,    -1,    23,    79,    -1,    79,    -1,    45,    79,    -1,
-      39,    -1,    86,    -1,    30,    -1,   124,    -1,    78,    -1,
-      53,    -1,    63,    -1,    95,    -1,   180,   161,   181,    -1,
-     181,    -1,   178,   135,   160,    -1,    30,   135,     5,    -1,
-      30,   135,   128,     5,    -1,    36,   135,     3,     3,    -1,
-     124,   135,     3,    -1,    53,   135,     5,    -1,    86,   135,
-       5,    -1,    35,    -1,    83,    -1,    22,    -1,    74,   135,
-     196,    -1,    74,   135,   196,     3,    -1,    64,   135,     3,
-       3,    -1,    91,   135,     3,    -1,    32,   135,     3,    -1,
-      81,   135,   182,    -1,    31,   135,   183,     5,     5,     3,
-       3,    -1,    87,   135,   166,    -1,    88,   135,     3,    -1,
-      96,   135,   175,    -1,   174,   176,   174,   177,    -1,   174,
-     174,    -1,   174,   177,    -1,   176,   174,    -1,   176,   177,
-      -1,    65,   174,    -1,    65,   177,    -1,   177,    -1,    73,
-      -1,   174,   176,    -1,   174,    -1,   176,    -1,    65,    -1,
-      -1,   185,   161,   186,    -1,   186,    -1,   178,   135,   160,
-      -1,    30,   135,     5,    -1,    30,   135,   128,     5,    -1,
-      36,   135,     3,     3,    -1,   124,   135,     3,    -1,    53,
-     135,     5,    -1,    86,   135,     5,    -1,    85,   135,     5,
-      -1,    27,   135,   179,     5,     5,    -1,    35,    -1,    83,
-      -1,    22,    -1,    74,   135,   196,    -1,    74,   135,   196,
-       3,    -1,    64,   135,     3,     3,    -1,    91,   135,     3,
-      -1,    32,   135,     3,    -1,    81,   135,   187,    -1,    31,
-     135,   188,     5,     5,     3,     3,    -1,    87,   135,   166,
-      -1,    88,   135,     3,    -1,    33,   135,   189,    -1,    46,
-     135,   191,    -1,    26,   135,   193,    -1,   174,   176,   174,
-     177,    -1,   174,   174,    -1,   174,   177,    -1,   176,   174,
-      -1,   176,   177,    -1,    65,   174,    -1,    65,   177,    -1,
-     177,    -1,    73,    -1,   174,   176,    -1,   174,    -1,   176,
-      -1,    65,    -1,    -1,   190,   132,   206,   133,   132,   204,
-     133,    -1,    59,    -1,    -1,   192,   132,   206,   133,   132,
-     208,   133,   132,   166,   133,    -1,    59,    -1,    -1,   194,
-     132,   206,   133,   132,   208,   133,   132,   166,   133,    -1,
+      43,    -1,    23,    78,    -1,    78,    -1,    45,    78,    -1,
+      39,    -1,    85,    -1,    30,    -1,   123,    -1,    77,    -1,
+      53,    -1,    63,    -1,    94,    -1,   179,   160,   180,    -1,
+     180,    -1,   177,   134,   159,    -1,    30,   134,     5,    -1,
+      30,   134,   127,     5,    -1,    36,   134,     3,     3,    -1,
+     123,   134,     3,    -1,    53,   134,     5,    -1,    85,   134,
+       5,    -1,    35,    -1,    82,    -1,    22,    -1,    74,   134,
+     195,    -1,    74,   134,   195,     3,    -1,    64,   134,     3,
+       3,    -1,    90,   134,     3,    -1,    32,   134,     3,    -1,
+      80,   134,   181,    -1,    31,   134,   182,     5,     5,     3,
+       3,    -1,    86,   134,   165,    -1,    87,   134,     3,    -1,
+      95,   134,   174,    -1,   173,   175,   173,   176,    -1,   173,
+     173,    -1,   173,   176,    -1,   175,   173,    -1,   175,   176,
+      -1,    65,   173,    -1,    65,   176,    -1,   176,    -1,    73,
+      -1,   173,   175,    -1,   173,    -1,   175,    -1,    65,    -1,
+      -1,   184,   160,   185,    -1,   185,    -1,   177,   134,   159,
+      -1,    30,   134,     5,    -1,    30,   134,   127,     5,    -1,
+      36,   134,     3,     3,    -1,   123,   134,     3,    -1,    53,
+     134,     5,    -1,    85,   134,     5,    -1,    84,   134,     5,
+      -1,    27,   134,   178,     5,     5,    -1,    35,    -1,    82,
+      -1,    22,    -1,    74,   134,   195,    -1,    74,   134,   195,
+       3,    -1,    64,   134,     3,     3,    -1,    90,   134,     3,
+      -1,    32,   134,     3,    -1,    80,   134,   186,    -1,    31,
+     134,   187,     5,     5,     3,     3,    -1,    86,   134,   165,
+      -1,    87,   134,     3,    -1,    33,   134,   188,    -1,    46,
+     134,   190,    -1,    26,   134,   192,    -1,   173,   175,   173,
+     176,    -1,   173,   173,    -1,   173,   176,    -1,   175,   173,
+      -1,   175,   176,    -1,    65,   173,    -1,    65,   176,    -1,
+     176,    -1,    73,    -1,   173,   175,    -1,   173,    -1,   175,
+      -1,    65,    -1,    -1,   189,   131,   205,   132,   131,   203,
+     132,    -1,    59,    -1,    -1,   191,   131,   205,   132,   131,
+     207,   132,   131,   165,   132,    -1,    59,    -1,    -1,   193,
+     131,   205,   132,   131,   207,   132,   131,   165,   132,    -1,
       59,    -1,    -1,    28,    -1,    24,    -1,    41,    -1,    34,
-      -1,   125,    -1,    20,    -1,    25,    -1,   136,    -1,   137,
-      -1,    86,   162,   173,   163,   164,   154,    -1,    32,   162,
-     173,   161,   165,   163,   164,   154,    -1,    91,   162,   173,
-     161,   167,   161,   166,   163,   164,   154,    -1,    76,   162,
-     173,   161,   173,   161,   167,   163,   164,   154,    -1,    81,
-     162,   173,   161,   173,   163,   164,   154,    -1,    31,   162,
-     173,   161,   167,   163,   164,   154,    -1,    29,   162,   173,
-     161,   167,   163,   164,   154,    -1,    28,   162,   173,   161,
-     167,   163,   164,   151,    -1,    17,   162,   173,   161,   167,
-     161,   167,   163,   164,   151,    -1,    17,   162,   173,   161,
-     167,   161,   167,   161,   204,   163,   164,   151,    -1,    17,
-     162,   173,   161,   167,   161,   167,   161,   169,   163,   164,
-     151,    -1,    33,   162,   173,   161,   166,   161,   166,   161,
-       3,   161,   167,   161,   167,   161,     3,   163,   164,   151,
-      -1,    44,   162,   173,   161,   168,   161,   165,   163,   164,
-     151,    -1,    44,   162,   173,   161,   168,   161,   168,   161,
-     165,   163,   164,   151,    -1,    44,   162,   173,   161,   168,
-     161,   168,   161,   169,   161,   165,   163,   164,   151,    -1,
-      44,   162,   173,   161,   168,   161,   168,   161,   208,   161,
-     165,   163,   164,   151,    -1,    44,   162,   173,   161,   168,
-     161,   165,   163,   138,   139,    44,   162,   173,   161,   168,
-     161,   165,   163,    -1,    46,   162,   173,   161,   166,   161,
-     166,   161,     3,   161,   168,   161,   168,   161,     3,   161,
-     165,   163,   164,   151,    -1,    24,   162,   173,   161,   168,
-     161,   165,   163,   164,   151,    -1,    80,   162,   173,   161,
-     168,   161,   165,   163,   164,   151,    -1,    24,   162,   173,
-     161,   168,   161,   168,   161,   165,   163,   164,   151,    -1,
-      24,   162,   173,   161,   168,   161,   168,   161,   208,   161,
-     165,   163,   164,   151,    -1,    24,   162,   173,   161,   168,
-     161,   168,   161,   169,   161,   165,   163,   164,   151,    -1,
-      24,   162,   173,   161,   168,   161,   165,   163,   138,   139,
-      24,   162,   173,   161,   168,   161,   165,   163,    -1,    26,
-     162,   173,   161,   166,   161,   166,   161,     3,   161,   168,
-     161,   168,   161,     3,   161,   165,   163,   164,   151,    -1,
-      64,   162,   173,   161,   173,   163,   164,   151,    -1,    74,
-     162,   173,   163,   164,   151,    -1,    28,    74,   162,   173,
-     163,   164,   151,    -1,    24,    74,   162,   173,   163,   164,
-     151,    -1,    41,    74,   162,   173,   163,   164,   151,    -1,
-      34,    74,   162,   173,   163,   164,   151,    -1,   125,    74,
-     162,   173,   163,   164,   151,    -1,    20,    74,   162,   173,
-     163,   164,   151,    -1,    25,    74,   162,   173,   163,   164,
-     151,    -1,    -1,    75,   200,   162,   202,   163,   164,   151,
-      -1,    72,   162,   173,   161,   166,   161,   166,   163,   164,
-     151,    -1,    72,   162,   173,   161,   166,   161,   166,   161,
-     206,   163,   164,   151,    -1,    72,   162,   173,   161,   166,
-     161,   166,   161,   169,   163,   164,   151,    -1,    48,   162,
-     163,   164,   151,    -1,    86,   162,   173,   163,   164,   151,
-      -1,    -1,    86,   162,   173,   161,     5,   163,   201,   164,
-     151,    -1,    32,   162,   173,   161,   165,   163,   164,   151,
-      -1,    91,   162,   173,   161,   167,   161,   166,   163,   164,
-     151,    -1,    76,   162,   173,   161,   173,   161,   167,   163,
-     164,   151,    -1,    81,   162,   173,   161,   173,   163,   164,
-     151,    -1,    31,   162,   173,   161,   167,   163,   164,   151,
-      -1,    29,   162,   173,   161,   167,   163,   164,   151,    -1,
-     202,   161,   203,    -1,   203,    -1,   173,    -1,   204,   161,
-     205,    -1,   205,    -1,   167,    -1,   206,   161,   207,    -1,
-     207,    -1,   166,    -1,   208,   161,   209,    -1,   209,    -1,
-     167,   161,   167,    -1,    -1
+      -1,   124,    -1,    20,    -1,    25,    -1,   135,    -1,   136,
+      -1,    90,   161,   172,   160,   166,   160,   165,   162,   163,
+     153,    -1,    85,   161,   172,   162,   163,   153,    -1,    80,
+     161,   172,   160,   172,   162,   163,   153,    -1,    31,   161,
+     172,   160,   166,   162,   163,   153,    -1,    76,   161,   172,
+     160,   172,   160,   166,   162,   163,   153,    -1,    29,   161,
+     172,   160,   166,   162,   163,   153,    -1,    32,   161,   172,
+     160,   164,   162,   163,   153,    -1,    28,   161,   172,   160,
+     166,   162,   163,   150,    -1,    29,   161,   172,   160,   166,
+     162,   163,   150,    -1,    44,   161,   172,   160,   167,   160,
+     164,   162,   163,   150,    -1,    24,   161,   172,   160,   167,
+     160,   164,   162,   163,   150,    -1,    79,   161,   172,   160,
+     167,   160,   164,   162,   163,   150,    -1,    -1,    75,   199,
+     161,   201,   162,   163,   150,    -1,    64,   161,   172,   160,
+     172,   162,   163,   150,    -1,    90,   161,   172,   160,   166,
+     160,   165,   162,   163,   150,    -1,    85,   161,   172,   162,
+     163,   150,    -1,    -1,    85,   161,   172,   160,     5,   162,
+     200,   163,   150,    -1,    74,   161,   172,   162,   163,   150,
+      -1,    28,    74,   161,   172,   162,   163,   150,    -1,    24,
+      74,   161,   172,   162,   163,   150,    -1,    41,    74,   161,
+     172,   162,   163,   150,    -1,    34,    74,   161,   172,   162,
+     163,   150,    -1,   124,    74,   161,   172,   162,   163,   150,
+      -1,    20,    74,   161,   172,   162,   163,   150,    -1,    25,
+      74,   161,   172,   162,   163,   150,    -1,    80,   161,   172,
+     160,   172,   162,   163,   150,    -1,    31,   161,   172,   160,
+     166,   162,   163,   150,    -1,    76,   161,   172,   160,   172,
+     160,   166,   162,   163,   150,    -1,    17,   161,   172,   160,
+     166,   160,   166,   162,   163,   150,    -1,    17,   161,   172,
+     160,   166,   160,   166,   160,   203,   162,   163,   150,    -1,
+      17,   161,   172,   160,   166,   160,   166,   160,   168,   162,
+     163,   150,    -1,    44,   161,   172,   160,   167,   160,   167,
+     160,   164,   162,   163,   150,    -1,    44,   161,   172,   160,
+     167,   160,   167,   160,   168,   160,   164,   162,   163,   150,
+      -1,    44,   161,   172,   160,   167,   160,   167,   160,   207,
+     160,   164,   162,   163,   150,    -1,    44,   161,   172,   160,
+     167,   160,   164,   162,   137,   138,    44,   161,   172,   160,
+     167,   160,   164,   162,    -1,    24,   161,   172,   160,   167,
+     160,   167,   160,   164,   162,   163,   150,    -1,    24,   161,
+     172,   160,   167,   160,   167,   160,   207,   160,   164,   162,
+     163,   150,    -1,    24,   161,   172,   160,   167,   160,   167,
+     160,   168,   160,   164,   162,   163,   150,    -1,    24,   161,
+     172,   160,   167,   160,   164,   162,   137,   138,    24,   161,
+     172,   160,   167,   160,   164,   162,    -1,    33,   161,   172,
+     160,   165,   160,   165,   160,     3,   160,   166,   160,   166,
+     160,     3,   162,   163,   150,    -1,    46,   161,   172,   160,
+     165,   160,   165,   160,     3,   160,   167,   160,   167,   160,
+       3,   160,   164,   162,   163,   150,    -1,    26,   161,   172,
+     160,   165,   160,   165,   160,     3,   160,   167,   160,   167,
+     160,     3,   160,   164,   162,   163,   150,    -1,    72,   161,
+     172,   160,   165,   160,   165,   162,   163,   150,    -1,    72,
+     161,   172,   160,   165,   160,   165,   160,   205,   162,   163,
+     150,    -1,    72,   161,   172,   160,   165,   160,   165,   160,
+     168,   162,   163,   150,    -1,    48,   161,   162,   163,   150,
+      -1,    32,   161,   172,   160,   164,   162,   163,   150,    -1,
+     201,   160,   202,    -1,   202,    -1,   172,    -1,   203,   160,
+     204,    -1,   204,    -1,   166,    -1,   205,   160,   206,    -1,
+     206,    -1,   165,    -1,   207,   160,   208,    -1,   208,    -1,
+     166,   160,   166,    -1,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   296,   296,   299,   300,   303,   304,   305,   307,   308,
-     310,   310,   311,   311,   312,   312,   314,   315,   316,   319,
-     320,   321,   322,   322,   325,   326,   326,   329,   330,   330,
-     331,   332,   332,   336,   337,   337,   338,   339,   339,   342,
-     343,   344,   347,   348,   351,   352,   355,   357,   358,   359,
-     360,   362,   363,   364,   365,   368,   369,   372,   373,   376,
-     377,   380,   381,   382,   385,   386,   389,   390,   391,   394,
-     395,   396,   397,   398,   399,   402,   409,   416,   423,   430,
-     437,   446,   449,   452,   455,   458,   471,   479,   487,   494,
-     502,   509,   517,   518,   519,   520,   521,   524,   525,   526,
-     527,   528,   529,   530,   531,   532,   533,   534,   535,   536,
-     537,   538,   539,   540,   541,   542,   543,   544,   545,   546,
-     547,   548,   549,   550,   551,   554,   555,   556,   557,   558,
-     559,   560,   561,   562,   563,   566,   567,   568,   571,   572,
-     573,   574,   575,   576,   577,   578,   579,   580,   583,   584,
-     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
-     595,   596,   597,   598,   599,   600,   601,   602,   603,   606,
-     607,   610,   615,   620,   625,   630,   631,   636,   641,   646,
-     651,   656,   657,   662,   667,   668,   672,   673,   682,   683,
-     684,   687,   694,   701,   708,   715,   722,   729,   736,   743,
-     752,   757,   762,   767,   774,   816,   817,   820,   821,   822,
-     826,   831,   832,   833,   834,   835,   837,   838,   839,   841,
-     842,   843,   844,   845,   846,   847,   854,   855,   856,   857,
-     858,   861,   868,   875,   882,   889,   896,   903,   910,   917,
-     926,   931,   936,   941,   948,   948,   949,   952,   952,   954,
-     957,   957,   959,   962,  1011,  1012,  1013,  1014,  1015,  1016,
-    1017,  1020,  1021,  1024,  1029,  1034,  1040,  1050,  1057,  1065,
-    1076,  1081,  1086,  1096,  1102,  1125,  1148,  1158,  1168,  1181,
-    1188,  1213,  1236,  1242,  1252,  1264,  1275,  1282,  1307,  1314,
-    1354,  1358,  1362,  1366,  1370,  1374,  1378,  1383,  1383,  1389,
-    1390,  1391,  1393,  1395,  1400,  1400,  1406,  1411,  1417,  1427,
-    1434,  1442,  1453,  1454,  1457,  1460,  1461,  1464,  1471,  1472,
-    1475,  1482,  1483,  1486,  1490
+       0,   294,   294,   297,   298,   301,   302,   303,   305,   306,
+     308,   308,   309,   309,   310,   310,   312,   313,   314,   317,
+     318,   319,   320,   320,   323,   324,   324,   327,   328,   328,
+     329,   330,   330,   334,   335,   335,   336,   337,   337,   340,
+     341,   342,   345,   346,   349,   350,   353,   355,   356,   357,
+     358,   360,   361,   362,   363,   366,   367,   370,   371,   374,
+     375,   378,   379,   380,   383,   384,   387,   388,   389,   392,
+     393,   394,   395,   396,   397,   400,   407,   414,   421,   428,
+     435,   444,   447,   450,   453,   456,   469,   477,   485,   492,
+     500,   507,   515,   516,   517,   518,   519,   522,   523,   524,
+     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
+     535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
+     545,   546,   547,   548,   549,   552,   553,   554,   555,   556,
+     557,   558,   559,   560,   561,   564,   565,   566,   569,   570,
+     571,   572,   573,   574,   575,   576,   577,   578,   581,   582,
+     583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
+     593,   594,   595,   596,   597,   598,   599,   600,   601,   604,
+     605,   608,   613,   618,   623,   628,   629,   634,   639,   644,
+     649,   654,   655,   660,   665,   666,   670,   671,   680,   681,
+     682,   685,   692,   699,   706,   713,   720,   727,   734,   741,
+     750,   755,   760,   765,   772,   814,   815,   818,   819,   820,
+     824,   829,   830,   831,   832,   833,   835,   836,   837,   839,
+     840,   841,   842,   843,   844,   845,   852,   853,   854,   855,
+     856,   859,   866,   873,   880,   887,   894,   901,   908,   915,
+     924,   929,   934,   939,   946,   946,   947,   950,   950,   952,
+     955,   955,   957,   960,  1009,  1010,  1011,  1012,  1013,  1014,
+    1015,  1018,  1019,  1022,  1030,  1037,  1046,  1056,  1064,  1072,
+    1081,  1088,  1096,  1119,  1142,  1151,  1151,  1159,  1167,  1175,
+    1182,  1182,  1190,  1197,  1204,  1211,  1218,  1225,  1232,  1239,
+    1246,  1255,  1265,  1273,  1280,  1290,  1298,  1308,  1318,  1330,
+    1338,  1348,  1360,  1370,  1379,  1401,  1425,  1450,  1451,  1452,
+    1454,  1456,  1465,  1466,  1469,  1472,  1473,  1476,  1483,  1484,
+    1487,  1494,  1495,  1498,  1502
 };
 #endif
 
@@ -1008,15 +1005,15 @@ static const char *const yytname[] =
   "HELIOECLIPTIC_", "HIGHLITE_", "ICRS_", "IGNORE_", "IMAGE_", "INCLUDE_",
   "J2000_", "KEY_", "LINE_", "LINEAR_", "MOVE_", "N_", "NO_", "OFF_",
   "ON_", "PHYSICAL_", "PIE_", "PIXELS_", "POINT_", "POLYGON_",
-  "PROJECTION_", "PROJECTION3D_", "PROPERTY_", "ROTATE_", "ROTBOX_",
-  "RULER_", "SELECT_", "SOURCE_", "SUPERGALACTIC_", "TAG_", "TEXT_",
-  "TEXTANGLE_", "TEXTROTATE_", "TILE_", "TRUE_", "VECTOR_", "VERSION_",
-  "UNHIGHLITE_", "UNSELECT_", "UPDATE_", "WCS_", "WCSA_", "WCSB_", "WCSC_",
-  "WCSD_", "WCSE_", "WCSF_", "WCSG_", "WCSH_", "WCSI_", "WCSJ_", "WCSK_",
-  "WCSL_", "WCSM_", "WCSN_", "WCSO_", "WCSP_", "WCSQ_", "WCSR_", "WCSS_",
-  "WCST_", "WCSU_", "WCSV_", "WCSW_", "WCSX_", "WCSY_", "WCSZ_", "WCS0_",
-  "WIDTH_", "X_", "Y_", "YES_", "'#'", "'\\n'", "';'", "','", "'('", "')'",
-  "'|'", "'='", "'+'", "'-'", "'&'", "'!'", "$accept", "start", "commands",
+  "PROJECTION_", "PROPERTY_", "ROTATE_", "ROTBOX_", "RULER_", "SELECT_",
+  "SOURCE_", "SUPERGALACTIC_", "TAG_", "TEXT_", "TEXTANGLE_",
+  "TEXTROTATE_", "TILE_", "TRUE_", "VECTOR_", "VERSION_", "UNHIGHLITE_",
+  "UNSELECT_", "UPDATE_", "WCS_", "WCSA_", "WCSB_", "WCSC_", "WCSD_",
+  "WCSE_", "WCSF_", "WCSG_", "WCSH_", "WCSI_", "WCSJ_", "WCSK_", "WCSL_",
+  "WCSM_", "WCSN_", "WCSO_", "WCSP_", "WCSQ_", "WCSR_", "WCSS_", "WCST_",
+  "WCSU_", "WCSV_", "WCSW_", "WCSX_", "WCSY_", "WCSZ_", "WCS0_", "WIDTH_",
+  "X_", "Y_", "YES_", "'#'", "'\\n'", "';'", "','", "'('", "')'", "'|'",
+  "'='", "'+'", "'-'", "'&'", "'!'", "$accept", "start", "commands",
   "command", "@1", "@2", "@3", "hash", "@4", "comment", "@5",
   "shapeComment", "@6", "@7", "nonshapeComment", "@8", "@9", "terminator",
   "numeric", "debug", "yesno", "sp", "bp", "ep", "conjuction", "optangle",
@@ -1025,7 +1022,7 @@ static const char *const yytname[] =
   "callBack", "global", "globalProperty", "globalRuler", "globalCompass",
   "initGlobal", "local", "localProperty", "localRuler", "localCompass",
   "localCpanda", "@10", "localEpanda", "@11", "localBpanda", "@12",
-  "initLocal", "pointProp", "include", "nonshape", "shape", "@13", "@14",
+  "initLocal", "pointShape", "include", "nonshape", "shape", "@13", "@14",
   "polyNodes", "polyNode", "aRads", "aRad", "aAngs", "aAng", "vRads",
   "vRad", "postLocal", 0
 };
@@ -1048,47 +1045,47 @@ static const yytype_uint16 yytoknum[] =
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
-     375,   376,   377,   378,   379,   380,   381,   382,    35,    10,
-      59,    44,    40,    41,   124,    61,    43,    45,    38,    33
+     375,   376,   377,   378,   379,   380,   381,    35,    10,    59,
+      44,    40,    41,   124,    61,    43,    45,    38,    33
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   140,   141,   142,   142,   143,   143,   143,   143,   143,
-     144,   143,   145,   143,   146,   143,   143,   143,   143,   147,
-     147,   147,   148,   147,   149,   150,   149,   151,   152,   151,
-     151,   153,   151,   154,   155,   154,   154,   156,   154,   157,
-     157,   157,   158,   158,   159,   159,   160,   160,   160,   160,
-     160,   160,   160,   160,   160,   161,   161,   162,   162,   163,
-     163,   164,   164,   164,   165,   165,   166,   166,   166,   167,
-     167,   167,   167,   167,   167,   168,   168,   168,   168,   168,
-     168,   169,   170,   171,   172,   173,   173,   173,   173,   173,
-     173,   173,   174,   174,   174,   174,   174,   175,   175,   175,
-     175,   175,   175,   175,   175,   175,   175,   175,   175,   175,
-     175,   175,   175,   175,   175,   175,   175,   175,   175,   175,
-     175,   175,   175,   175,   175,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   177,   177,   177,   178,   178,
-     178,   178,   178,   178,   178,   178,   178,   178,   179,   179,
-     179,   179,   179,   179,   179,   179,   179,   179,   179,   179,
-     179,   179,   179,   179,   179,   179,   179,   179,   179,   180,
+       0,   139,   140,   141,   141,   142,   142,   142,   142,   142,
+     143,   142,   144,   142,   145,   142,   142,   142,   142,   146,
+     146,   146,   147,   146,   148,   149,   148,   150,   151,   150,
+     150,   152,   150,   153,   154,   153,   153,   155,   153,   156,
+     156,   156,   157,   157,   158,   158,   159,   159,   159,   159,
+     159,   159,   159,   159,   159,   160,   160,   161,   161,   162,
+     162,   163,   163,   163,   164,   164,   165,   165,   165,   166,
+     166,   166,   166,   166,   166,   167,   167,   167,   167,   167,
+     167,   168,   169,   170,   171,   172,   172,   172,   172,   172,
+     172,   172,   173,   173,   173,   173,   173,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   175,   175,   175,   175,   175,
+     175,   175,   175,   175,   175,   176,   176,   176,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   179,
+     179,   180,   180,   180,   180,   180,   180,   180,   180,   180,
+     180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
      180,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-     181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-     181,   182,   182,   182,   182,   182,   182,   182,   182,   182,
-     183,   183,   183,   183,   184,   185,   185,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
-     186,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     188,   188,   188,   188,   190,   189,   189,   192,   191,   191,
-     194,   193,   193,   195,   196,   196,   196,   196,   196,   196,
-     196,   197,   197,   198,   198,   198,   198,   198,   198,   198,
-     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
-     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
-     199,   199,   199,   199,   199,   199,   199,   200,   199,   199,
-     199,   199,   199,   199,   201,   199,   199,   199,   199,   199,
-     199,   199,   202,   202,   203,   204,   204,   205,   206,   206,
-     207,   208,   208,   209,   210
+     182,   182,   182,   182,   183,   184,   184,   185,   185,   185,
+     185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
+     185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
+     185,   186,   186,   186,   186,   186,   186,   186,   186,   186,
+     187,   187,   187,   187,   189,   188,   188,   191,   190,   190,
+     193,   192,   192,   194,   195,   195,   195,   195,   195,   195,
+     195,   196,   196,   197,   197,   197,   197,   197,   197,   197,
+     198,   198,   198,   198,   198,   199,   198,   198,   198,   198,
+     200,   198,   198,   198,   198,   198,   198,   198,   198,   198,
+     198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
+     198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
+     198,   198,   201,   201,   202,   203,   203,   204,   205,   205,
+     206,   207,   207,   208,   209
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1120,12 +1117,12 @@ static const yytype_uint8 yyr2[] =
        3,     4,     2,     2,     2,     2,     2,     2,     1,     1,
        2,     1,     1,     1,     0,     7,     1,     0,    10,     1,
        0,    10,     1,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     6,     8,    10,    10,     8,     8,     8,
-       8,    10,    12,    12,    18,    10,    12,    14,    14,    18,
-      20,    10,    10,    12,    14,    14,    18,    20,     8,     6,
-       7,     7,     7,     7,     7,     7,     7,     0,     7,    10,
-      12,    12,     5,     6,     0,     9,     8,    10,    10,     8,
-       8,     8,     3,     1,     1,     3,     1,     1,     3,     1,
+       1,     1,     1,    10,     6,     8,     8,    10,     8,     8,
+       8,     8,    10,    10,    10,     0,     7,     8,    10,     6,
+       0,     9,     6,     7,     7,     7,     7,     7,     7,     7,
+       8,     8,    10,    10,    12,    12,    12,    14,    14,    18,
+      12,    14,    14,    18,    18,    20,    20,    10,    12,    12,
+       5,     8,     3,     1,     1,     3,     1,     1,     3,     1,
        1,     3,     1,     3,     0
 };
 
@@ -1145,7 +1142,7 @@ static const yytype_uint16 yydefact[] =
        0,     0,     0,     0,     0,     0,    55,   170,    24,     9,
        0,     2,    41,    39,    40,     4,    24,    24,    57,     0,
       57,     0,    57,    57,    57,    57,    57,    57,     0,     0,
-      57,    57,    57,    57,    57,    57,   297,    57,    57,    57,
+      57,    57,    57,    57,    57,    57,   275,    57,    57,    57,
       57,    57,     0,    22,   261,   262,     0,    16,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    25,    56,     8,     0,    15,     3,    11,
@@ -1172,7 +1169,7 @@ static const yytype_uint16 yydefact[] =
        0,    89,    91,    90,    88,    85,    86,    87,    72,    73,
       74,    70,    71,    69,    55,    61,    61,    55,    55,    55,
       55,    55,    55,    55,    61,    55,    61,    59,    59,    59,
-      59,    65,    55,    61,    61,    55,    55,    63,    28,   302,
+      59,    65,    55,    61,    61,    55,    55,    63,    28,   310,
       27,    59,    55,   324,     0,    61,    55,    55,    59,    59,
      324,    55,    61,     0,     0,    64,     0,     0,    61,     0,
        0,   191,     0,   324,   324,     0,     0,     0,     0,     0,
@@ -1180,44 +1177,44 @@ static const yytype_uint16 yydefact[] =
      324,   324,    64,     0,   218,     0,     0,     0,     0,     0,
        0,   216,     0,     0,     0,     0,     0,     0,   217,     0,
        0,     0,     0,     0,     0,     0,     0,    55,   206,    61,
-       0,   289,   312,   324,     0,    64,    61,   304,   303,     0,
+       0,   282,   312,   324,     0,    64,    61,   280,   279,     0,
      324,    59,    59,    59,    55,    59,   324,    55,   187,    55,
-     295,   291,    78,    79,    80,    76,    77,    75,    67,    66,
-      59,    55,   296,    55,   290,   324,   324,   324,   324,    55,
-     293,   292,    59,    55,    55,   250,     0,     0,     0,     0,
+     288,   284,    78,    79,    80,    76,    77,    75,    67,    66,
+      59,    55,   289,    55,   283,   324,   324,   324,   324,    55,
+     286,   285,    59,    55,    55,   250,     0,     0,     0,     0,
      244,     0,   247,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   324,     0,     0,     0,    30,   324,    55,
-     298,    59,    59,   324,    61,    59,   294,    61,    61,    61,
-       0,    61,   263,     0,    55,    33,     0,     0,    61,    61,
-      64,     0,   270,   311,   310,   306,     0,    61,    64,     0,
+     276,    59,    59,   324,    61,    59,   287,    61,    61,    61,
+       0,    61,   264,     0,    55,    33,     0,     0,    61,    61,
+      64,     0,   270,   271,   291,   311,     0,    61,    64,     0,
      252,   230,     0,     0,   163,   161,   156,     0,   166,   150,
      167,   153,   165,   159,   148,   162,   151,   149,   168,   164,
        0,   208,     0,   243,   241,   242,     0,   223,   246,   228,
        0,     0,   249,   229,     0,   212,     0,   219,     0,   239,
        0,     0,   238,   224,   214,   213,   226,   227,   222,   211,
-      29,   207,   324,   205,   288,     0,    61,    61,    61,   309,
+      29,   207,   324,   205,   277,     0,    61,    61,    61,   290,
      324,    61,   324,   324,   324,    59,   324,   324,     0,    36,
       59,     0,   317,    59,    55,   316,   324,     0,   324,    72,
       69,    59,    55,    55,    55,   322,    55,    55,     0,   324,
       59,    55,    55,    55,     0,   155,   152,   158,   157,   154,
      160,     0,   209,   240,     0,     0,   210,     0,   221,   220,
      236,   237,   232,     0,   233,   234,   235,    32,   320,    59,
-      59,   319,   324,   324,   324,   305,   324,   269,   268,   264,
-      61,   267,    35,   324,    61,     0,    61,     0,    61,   271,
-       0,   281,    61,     0,    64,    64,     0,     0,     0,   275,
+      59,   319,   324,   324,   324,   281,   324,   268,   266,   269,
+      61,   265,    35,   324,    61,     0,    61,     0,    61,   293,
+       0,   273,    61,     0,    64,    64,     0,     0,     0,   272,
       61,    64,    64,     0,    55,   215,     0,    55,    55,     0,
-      61,     0,    61,   299,   308,   282,   307,   324,    38,   324,
+      61,     0,    61,   307,   292,   274,   278,   324,    38,   324,
       81,   324,   315,   324,    57,   324,   323,    59,    59,   321,
       55,    55,    57,   324,    59,    59,    55,     0,     0,     0,
-       0,   231,   324,   318,   324,   266,   265,   273,   272,     0,
-     283,    61,    61,     0,     0,     0,   276,    61,    61,     0,
-       0,   225,     0,     0,   301,   300,    55,   324,   324,    55,
-      55,    55,   324,   324,    55,    55,    55,    55,     0,   285,
-     284,     0,     0,     0,   277,   278,     0,     0,     0,   245,
+       0,   231,   324,   318,   324,   267,   263,   295,   294,     0,
+     300,    61,    61,     0,     0,     0,   296,    61,    61,     0,
+       0,   225,     0,     0,   309,   308,    55,   324,   324,    55,
+      55,    55,   324,   324,    55,    55,    55,    55,     0,   302,
+     301,     0,     0,     0,   297,   298,     0,     0,     0,   245,
        0,    55,    55,    59,    55,    55,     0,     0,    64,    64,
       61,    64,    64,     0,     0,    59,    59,   324,    59,    59,
-     251,   248,   286,    61,   274,   279,    61,   324,   324,   287,
-     280
+     251,   248,   303,    61,   304,   299,    61,   324,   324,   306,
+     305
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -1235,105 +1232,105 @@ static const yytype_int16 yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -676
+#define YYPACT_NINF -615
 static const yytype_int16 yypact[] =
 {
-    -676,    63,  1543,  -676,  -676,  -676,    33,  -676,  -676,  -676,
-    -676,  -676,  -676,  1011,  -676,  -676,  -676,  -676,  -676,  -676,
-    -676,    68,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-    -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-    -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-    -676,  1372,    38,  -676,  -676,  -676,  1149,  -676,  -676,  -676,
-    -676,  -102,   -47,   -42,   -39,   -17,  -676,  -676,  -676,   -13,
-    -676,  -676,     0,  -676,     1,  -676,     4,  -676,    16,    37,
-      44,    47,    48,    51,    61,    65,   123,  -676,    70,  -676,
-      38,  -676,  -676,  -676,  -676,  -676,    70,    70,    69,   137,
-     -40,   145,    69,   -38,    69,    69,    69,    69,   150,   151,
-      69,    69,    69,    69,    69,    69,  -676,    69,    69,    69,
-      69,    69,   154,   261,  -676,  -676,   760,  -676,    24,  1982,
-     226,   229,   231,   240,   305,  1658,   243,   301,   252,   258,
-    2436,   260,   140,  -676,  -676,  -676,  1011,  -676,  -676,  -676,
-    -676,  -676,   472,    69,    69,   472,    69,   472,    69,   472,
-     472,   472,   472,   472,    69,    69,   472,   472,   131,   472,
-     472,   472,    69,   472,   472,   472,   472,   472,    69,    69,
-      69,    69,    69,    69,    69,   262,    69,  -676,   272,    19,
-    -676,  -676,  -676,   274,  -676,   577,  -676,   275,  -676,   267,
-    -676,   285,  -676,  -676,  -676,  -676,  -676,  -676,  -676,   288,
-    -676,  -676,  -676,  2198,  -676,  1874,  2198,  -676,  -676,  -676,
-    -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-    -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-     290,  -676,   166,   166,   166,  -676,  -676,  -676,   166,   166,
-     166,   166,   166,   472,   472,   166,   472,   166,   472,   166,
-     166,   166,   166,   166,   472,   472,   166,   166,  -676,   164,
-     166,   166,   131,   472,   166,   166,   166,    14,   166,   472,
-     472,   472,   472,   472,   472,   472,  -676,   472,  -676,  -676,
-    -676,  -676,   297,  -676,  -676,  -676,  -676,  -676,  -676,  2306,
-    -676,  -676,  -676,  -676,   303,   293,   302,   103,   300,   309,
-     309,   358,   131,   131,   457,   131,   301,   131,   358,   358,
-     358,   301,   301,   131,   131,   457,   301,   180,   191,   472,
-     301,   164,  -676,    84,  -676,   472,   457,   472,   319,   164,
-     358,   131,   166,   166,   166,   166,   166,   131,   166,   323,
-      36,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-    -676,  -676,  -676,  -676,   166,   164,   164,   166,   166,   166,
-     166,   166,   166,   166,   164,   166,   164,   131,   131,   131,
-     131,  -676,   166,   164,   164,   166,   166,  -676,  2308,  -676,
-    -676,   131,   166,   191,   472,   164,   166,   166,   131,   131,
-     191,   166,   164,   358,   358,   301,   472,   472,   164,   358,
-     324,  -676,   358,   191,   191,   325,   327,   331,   326,   330,
-     103,   532,   191,   301,   191,   164,   164,   164,   164,   301,
-     191,   191,   532,   301,  -676,   208,   210,   216,   218,   219,
-     222,   -39,   223,   224,   225,   228,   237,   238,    16,   241,
-     245,   255,   257,   259,   264,   370,   266,    30,  -676,   164,
-     301,  -676,  -676,   191,   358,   301,   164,  -676,  -676,   301,
-     191,   131,   131,   131,   166,   131,  1491,   166,  -676,    84,
-    -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,    22,    23,
-     131,   166,  -676,   166,  -676,   191,   191,   191,   191,   166,
-    -676,  -676,   131,   166,   166,   328,  2407,    27,  2090,   392,
-     337,   397,   347,   404,   407,   305,  1766,   406,   409,   301,
-     412,   413,   416,  -676,   140,   415,  2308,  -676,   191,    84,
-    -676,   131,   131,   191,   164,   131,  -676,   164,   164,   164,
-     358,   164,  -676,   417,    75,  -676,   301,   375,   164,   -76,
-     265,   418,  -676,  -676,  -676,  -676,   420,   -74,   265,   428,
-    -676,  -676,   304,    35,  -676,  -676,  -676,    55,  -676,  -676,
-    -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-     427,  -676,   429,  -676,   577,  -676,   430,  -676,  -676,  -676,
-     306,   434,  -676,  -676,   308,  -676,   438,   441,  2198,  -676,
-    1874,  2198,  -676,  -676,  -676,  -676,  -676,  -676,  -676,  -676,
-    -676,  -676,  -676,  -676,  -676,   234,   164,   164,   164,  -676,
-     191,   164,  1491,  1491,  1491,   131,  1491,  -676,   442,  -676,
-     131,   311,  -676,   131,    84,  -676,   191,   310,   191,   116,
-     188,   131,   166,   166,   166,  -676,   166,   166,   315,   191,
-     131,   166,   166,   166,   301,  -676,  -676,  -676,  -676,  -676,
-    -676,   443,  -676,  -676,   445,   301,  -676,   301,  -676,  -676,
-    -676,  -676,  -676,  2306,  -676,  -676,  -676,  -676,  -676,   131,
-      66,  -676,   191,   191,   191,  -676,   191,  -676,  -676,  -676,
-     164,  -676,  -676,  -676,   164,   454,   164,   358,   164,  -676,
-     435,  -676,   164,   358,   301,   614,   457,   358,   426,  -676,
-     164,   301,   614,   457,   -93,  -676,   459,    -7,    -6,    36,
-     164,   301,   164,  -676,  -676,  -676,  -676,  1491,  -676,  1491,
-    -676,   191,  -676,   191,    69,   191,  -676,   131,   131,  -676,
-     166,   166,    69,   191,   131,   131,   166,   339,   469,   341,
-     345,  -676,   191,  -676,   191,  -676,  -676,  -676,  -676,   472,
-    -676,   164,   164,   457,   358,   472,  -676,   164,   164,   457,
-     358,  -676,   358,   358,  -676,  -676,   166,   191,   191,   166,
-     166,   166,   191,   191,   166,     9,    13,    62,   457,  -676,
-    -676,   476,   478,   457,  -676,  -676,   484,   356,   358,  -676,
-     357,   166,   166,   131,   166,   166,   301,   301,   301,   301,
-     164,   301,   301,   359,   360,   131,   131,   191,   131,   131,
-    -676,  -676,  -676,   164,  -676,  -676,   164,   191,   191,  -676,
-    -676
+    -615,    60,  1544,  -615,  -615,  -615,    50,  -615,  -615,  -615,
+    -615,  -615,  -615,  2401,  -615,  -615,  -615,  -615,  -615,  -615,
+    -615,    47,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+    -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+    -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+    -615,  1372,    39,  -615,  -615,  -615,  1150,  -615,  -615,  -615,
+    -615,   -63,   -56,   -39,   -35,   -31,  -615,  -615,  -615,   -28,
+    -615,  -615,     5,  -615,     6,  -615,    17,  -615,    20,    38,
+      45,    53,    67,    76,    80,    81,   123,  -615,   -13,  -615,
+      39,  -615,  -615,  -615,  -615,  -615,   -13,   -13,    16,   126,
+     -27,   145,    16,   -26,    16,    16,    16,    16,   146,   148,
+      16,    16,    16,    16,    16,    16,  -615,    16,    16,    16,
+      16,    16,   150,   403,  -615,  -615,   753,  -615,    33,  1979,
+     222,   226,   225,   229,    93,  1658,   231,   119,   251,   252,
+    2430,   258,   139,  -615,  -615,  -615,  2401,  -615,  -615,  -615,
+    -615,  -615,   518,    16,    16,   518,    16,   518,    16,   518,
+     518,   518,   518,   518,    16,    16,   518,   518,   131,   518,
+     518,   518,    16,   518,   518,   518,   518,   518,    16,    16,
+      16,    16,    16,    16,    16,   263,    16,  -615,   262,   261,
+    -615,  -615,  -615,   274,  -615,   578,  -615,   275,  -615,   265,
+    -615,   268,  -615,  -615,  -615,  -615,  -615,  -615,  -615,   285,
+    -615,  -615,  -615,  2193,  -615,  1872,  2193,  -615,  -615,  -615,
+    -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+    -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+     286,  -615,   165,   165,   165,  -615,  -615,  -615,   165,   165,
+     165,   165,   165,   518,   518,   165,   518,   165,   518,   165,
+     165,   165,   165,   165,   518,   518,   165,   165,  -615,   164,
+     165,   165,   131,   518,   165,   165,   165,    14,   165,   518,
+     518,   518,   518,   518,   518,   518,  -615,   518,  -615,  -615,
+    -615,  -615,   293,  -615,  -615,  -615,  -615,  -615,  -615,  2300,
+    -615,  -615,  -615,  -615,   296,   294,   292,   125,   302,   291,
+     291,   358,   131,   131,   375,   131,   119,   131,   358,   358,
+     358,   119,   119,   131,   131,   375,   119,   185,   198,   518,
+     119,   164,  -615,   116,  -615,   518,   375,   518,   321,   164,
+     358,   131,   165,   165,   165,   165,   165,   131,   165,   324,
+      97,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+    -615,  -615,  -615,  -615,   165,   164,   164,   165,   165,   165,
+     165,   165,   165,   165,   164,   165,   164,   131,   131,   131,
+     131,  -615,   165,   164,   164,   165,   165,  -615,  2302,  -615,
+    -615,   131,   165,   198,   518,   164,   165,   165,   131,   131,
+     198,   165,   164,   358,   358,   119,   518,   518,   164,   358,
+     326,  -615,   358,   198,   198,   333,   332,   334,   335,   331,
+     125,   659,   198,   119,   198,   164,   164,   164,   164,   119,
+     198,   198,   659,   119,  -615,   213,   216,   218,   219,   220,
+     223,   -35,   224,   238,   239,   241,   242,   253,    20,   256,
+     260,   264,   267,   272,   276,   354,   277,    75,  -615,   164,
+     119,  -615,  -615,   198,   358,   119,   164,  -615,  -615,   119,
+     198,   131,   131,   131,   165,   131,  1490,   165,  -615,   116,
+    -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,    22,    29,
+     131,   165,  -615,   165,  -615,   198,   198,   198,   198,   165,
+    -615,  -615,   131,   165,   165,   301,  1017,    34,  2086,   360,
+     336,   389,   337,   392,   396,    93,  1765,   395,   404,   119,
+     411,   412,   413,  -615,   139,   414,  2302,  -615,   198,   116,
+    -615,   131,   131,   198,   164,   131,  -615,   164,   164,   164,
+     358,   164,  -615,   415,    83,  -615,   119,   313,   164,   -71,
+     266,   418,  -615,  -615,  -615,  -615,   419,   -64,   266,   420,
+    -615,  -615,   299,    -8,  -615,  -615,  -615,    58,  -615,  -615,
+    -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+     426,  -615,   431,  -615,   578,  -615,   432,  -615,  -615,  -615,
+     307,   437,  -615,  -615,   310,  -615,   439,   441,  2193,  -615,
+    1872,  2193,  -615,  -615,  -615,  -615,  -615,  -615,  -615,  -615,
+    -615,  -615,  -615,  -615,  -615,   234,   164,   164,   164,  -615,
+     198,   164,  1490,  1490,  1490,   131,  1490,  -615,   442,  -615,
+     131,   312,  -615,   131,   116,  -615,   198,   311,   198,   180,
+     203,   131,   165,   165,   165,  -615,   165,   165,   316,   198,
+     131,   165,   165,   165,   119,  -615,  -615,  -615,  -615,  -615,
+    -615,   443,  -615,  -615,   445,   119,  -615,   119,  -615,  -615,
+    -615,  -615,  -615,  2300,  -615,  -615,  -615,  -615,  -615,   131,
+      23,  -615,   198,   198,   198,  -615,   198,  -615,  -615,  -615,
+     164,  -615,  -615,  -615,   164,   454,   164,   358,   164,  -615,
+     435,  -615,   164,   358,   119,   678,   375,   358,   416,  -615,
+     164,   119,   678,   375,   -96,  -615,   458,   -58,   -53,    97,
+     164,   119,   164,  -615,  -615,  -615,  -615,  1490,  -615,  1490,
+    -615,   198,  -615,   198,    16,   198,  -615,   131,   131,  -615,
+     165,   165,    16,   198,   131,   131,   165,   339,   459,   340,
+     341,  -615,   198,  -615,   198,  -615,  -615,  -615,  -615,   518,
+    -615,   164,   164,   375,   358,   518,  -615,   164,   164,   375,
+     358,  -615,   358,   358,  -615,  -615,   165,   198,   198,   165,
+     165,   165,   198,   198,   165,   -20,    13,    66,   375,  -615,
+    -615,   460,   462,   375,  -615,  -615,   463,   342,   358,  -615,
+     344,   165,   165,   131,   165,   165,   119,   119,   119,   119,
+     164,   119,   119,   345,   346,   131,   131,   198,   131,   131,
+    -615,  -615,  -615,   164,  -615,  -615,   164,   198,   198,  -615,
+    -615
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -676,  -676,  -676,   440,  -676,  -676,  -676,  -676,  -676,    32,
-    -676,   608,  -676,  -676,  -507,  -676,  -676,   408,   183,  -676,
-     -24,   -86,   -97,   586,   585,  -356,   -95,  -170,  -324,  -511,
-     198,  -676,  -197,   591,   -83,   367,  -104,  -172,    -9,  -676,
-    -676,   364,  -676,  -676,  -676,   124,   -15,  -676,  -676,  -676,
-    -676,  -676,  -676,  -676,  -676,  -676,    -1,   393,   332,   396,
-    -676,  -676,  -676,   130,  -247,  -171,  -588,  -193,  -547,  -675,
+    -615,  -615,  -615,   417,  -615,  -615,  -615,  -615,  -615,   -33,
+    -615,   608,  -615,  -615,  -530,  -615,  -615,   377,   183,  -615,
+     -48,   -86,   -97,   586,   585,  -356,   -95,  -170,  -324,  -513,
+     173,  -615,  -127,   591,   -83,   347,  -104,  -172,    -9,  -615,
+    -615,   338,  -615,  -615,  -615,    94,   -41,  -615,  -615,  -615,
+    -615,  -615,  -615,  -615,  -615,  -615,   -29,   366,   303,   372,
+    -615,  -615,  -615,   106,  -266,  -190,  -614,  -211,  -547,  -605,
      -49
 };
 
@@ -1346,73 +1343,73 @@ static const yytype_int16 yytable[] =
 {
      146,   385,    91,   155,    85,   157,   159,   160,   161,   162,
      163,   652,   397,   166,   167,   168,   169,   170,   171,   -55,
-     173,   174,   175,   176,   177,   196,   -55,   -55,   -55,   192,
-     739,   216,   581,   128,   154,   -31,   158,   739,   144,   643,
-     747,   297,   225,   300,   302,  -324,   195,   651,   179,   473,
-     180,   181,   215,    92,   210,   211,   253,   254,   327,   256,
-     327,   258,   637,     3,   648,   490,   714,   264,   265,   -55,
-     -55,    89,   -55,   -55,   212,   273,   502,   717,   655,   718,
-     -37,   279,   280,   281,   282,   283,   284,   285,   129,   287,
-    -324,   291,   151,   130,   151,   182,  -140,   491,   658,   -59,
-     183,   656,    57,    58,   679,   184,   220,   221,   503,   532,
-     186,   299,   356,   357,   657,   687,   688,   689,   131,   691,
-     147,   659,   132,   739,   144,   144,   749,   750,   149,   150,
-     296,   -67,   298,   301,   660,   133,   134,    85,   -24,   135,
-     144,   364,   797,   230,   144,   144,   799,   268,   377,   378,
-     379,  -147,   193,   144,   144,   582,   304,   305,   306,  -324,
-    -324,   144,   307,   308,   309,   310,   311,    93,    94,   314,
+     173,   174,   175,   176,   177,   196,   -55,   -55,   -55,   -55,
+     -55,   216,   -55,   -55,   144,   655,   747,   643,   192,   581,
+     714,   297,   225,   300,   302,   651,   195,   154,   158,   473,
+      89,   717,   215,   718,    92,   147,   253,   254,   656,   256,
+       3,   258,   327,   149,   150,   490,   637,   264,   265,   327,
+     657,   128,   144,   648,   749,   273,   502,   144,   129,   750,
+     -31,   279,   280,   281,   282,   283,   284,   285,   -37,   287,
+    -324,   291,   687,   688,   689,   130,   691,   491,  -324,  -140,
+     739,   658,   679,   131,   151,   151,   132,   739,   503,   532,
+     144,   299,   797,   202,   143,   210,   211,   203,   204,    57,
+      58,   205,   220,   221,   659,   222,   223,   206,   220,   221,
+     296,   -59,   298,   301,   207,   212,   660,    85,   -24,   133,
+     134,   364,   230,   144,   144,   799,   268,   151,   377,   378,
+     379,   135,   144,   144,  -147,   268,   304,   305,   306,   144,
+     193,   582,   307,   308,   309,   310,   311,    93,    94,   314,
      401,   316,   136,   318,   319,   320,   321,   322,   411,   137,
-     325,   326,   138,   139,   329,   330,   140,   231,   335,   336,
-     337,   338,   340,   144,   641,   800,   141,   144,   143,   268,
-     142,   151,   650,   -66,  -324,  -324,   144,   232,   233,   234,
-     235,   153,   -59,   -59,   -59,   144,   350,   268,   -59,   156,
-     755,   375,   756,   785,   164,   165,   787,   382,   178,   198,
-     236,   386,   199,   471,   472,   392,   200,   220,   221,   477,
-     222,   223,   479,   201,   -67,   -67,   -67,   394,   219,   -67,
-     -67,   143,   -24,   -24,   144,   226,   403,   404,   405,   406,
-     407,   227,   409,   229,   268,   286,   237,   238,   220,   221,
-     293,   639,   223,   359,   360,   361,   362,   288,   412,   290,
-     292,   415,   416,   417,   418,   419,   420,   421,   294,   423,
-     179,   295,   180,   181,   531,   303,   429,   144,   327,   432,
-     433,   631,   349,   352,   220,   221,   460,   222,   223,   351,
-     464,   465,   245,   353,   387,   469,   -66,   -66,   -66,   388,
-     224,   -66,   -66,   247,   399,   202,   410,   478,   493,   203,
-     204,   482,   631,   205,   499,   483,   485,   182,   504,   206,
-     484,   486,   183,   505,   602,   506,   207,   184,   737,   738,
-     185,   507,   186,   508,   509,   744,   745,   510,   511,   512,
-     513,   220,   221,   514,   358,   529,   359,   360,   361,   362,
-     625,   526,   515,   516,   535,   523,   517,   632,   220,   221,
-     518,   358,   740,   359,   360,   361,   362,   560,   540,   746,
-     519,   546,   520,   547,   521,   587,   588,   124,   125,   522,
-     591,   524,   415,   420,   585,   550,   592,   551,   527,   595,
-     596,   604,   601,   556,   605,   607,   608,   558,   559,   609,
-     612,   646,   627,   647,   606,   584,   671,   545,   674,   676,
-     208,   653,   661,   600,   662,   664,   654,   666,   665,   779,
-     667,   668,   631,   615,   669,   784,   695,   693,   715,   700,
+     325,   326,   356,   357,   329,   330,   231,   138,   335,   336,
+     337,   338,   340,   739,   641,   -67,   144,   755,   800,   756,
+     153,   139,   650,  -324,  -324,   144,   232,   233,   234,   235,
+     140,  -324,  -324,   144,   141,   142,   350,   208,   -66,   156,
+     164,   375,   165,   785,   178,   198,   787,   382,   236,   199,
+     200,   386,   201,   471,   472,   392,   219,   220,   221,   477,
+     222,   223,   479,   -59,   -59,   -59,   144,   394,   268,   -59,
+     143,   -24,   -24,   144,   226,   227,   403,   404,   405,   406,
+     407,   229,   409,   268,   237,   238,   286,   288,   293,   220,
+     221,   294,   639,   223,   359,   360,   361,   362,   412,   290,
+     292,   415,   416,   417,   418,   419,   420,   421,   295,   423,
+     179,   303,   180,   181,   531,   144,   429,   327,   349,   432,
+     433,   631,   351,   353,   352,   247,   460,   -67,   -67,   -67,
+     464,   465,   -67,   -67,   245,   469,   220,   221,   387,   358,
+     224,   359,   360,   361,   362,   388,   399,   410,   493,   478,
+     -66,   -66,   -66,   631,   499,   -66,   -66,   182,   504,   482,
+     483,   183,   486,   484,   602,   485,   184,   505,   737,   738,
+     506,   186,   507,   508,   509,   744,   745,   510,   511,   523,
+     560,   220,   221,   587,   358,   529,   359,   360,   361,   362,
+     625,   526,   512,   513,   535,   514,   515,   632,   220,   221,
+     631,   367,   740,   368,   369,   370,   371,   516,   540,   746,
+     517,   546,   591,   547,   518,   588,   592,   595,   519,   596,
+     604,   520,   415,   420,   585,   550,   521,   551,   527,   605,
+     522,   524,   601,   556,   607,   608,   609,   558,   559,   612,
+     627,   646,   647,   653,   606,   584,   671,   545,   674,   676,
+     654,   661,   179,   600,   180,   181,   662,   664,   665,   779,
+     666,   667,   668,   615,   669,   784,   695,   693,   715,   700,
      716,   630,   815,   816,   708,   818,   819,   730,   526,   734,
-     220,   221,   748,   367,   801,   368,   369,   370,   371,   804,
-     742,   770,   771,   772,   610,   220,   221,   773,   242,   802,
-     663,   803,   243,   244,   245,   246,   247,   805,   806,   807,
-     354,    90,   820,   821,   363,   629,   673,   372,   148,   224,
-     611,   363,   363,   363,   224,   224,   355,   228,   372,   224,
-     241,   613,   457,   224,   597,   670,   189,   672,   675,   372,
-     678,   289,   191,   363,   462,   786,   732,   632,   753,     0,
-       0,     0,     0,   736,     0,   220,   221,   741,   488,   223,
-     368,   369,   370,   371,     0,     0,     0,   751,   697,     0,
+     742,   748,   771,   802,   801,   803,   805,   148,    90,   804,
+     770,   772,   773,   806,   610,   807,   611,   820,   821,   182,
+     663,   355,   457,   183,   241,   613,   597,   228,   184,   189,
+     354,   185,   289,   186,   363,   629,   673,   372,   191,   224,
+     462,   363,   363,   363,   224,   224,   786,   732,   372,   224,
+     753,     0,     0,   224,     0,   670,     0,   672,   675,   372,
+     678,   220,   221,   363,   242,     0,     0,   632,   243,   244,
+     245,   246,   247,   736,     0,     0,     0,   741,   124,   125,
+       0,     0,     0,     0,     0,     0,     0,   751,   697,     0,
        0,     0,     0,     0,     0,     0,   703,   704,   705,   678,
      706,   707,     0,   677,     0,   711,   712,   713,     0,     0,
      678,     0,   678,   545,   545,   545,     0,   545,   692,     0,
        0,     0,     0,     0,     0,     0,   363,   363,   224,     0,
-     719,     0,   363,     0,   780,   363,     0,     0,     5,     0,
+     719,     0,   363,     0,   780,   363,     0,     0,     0,     5,
        0,     0,   632,   487,   489,     0,   224,     0,     0,     0,
-       0,     0,   224,     0,     0,   489,   224,   220,   221,     8,
-     639,   223,   359,   360,   361,   362,   678,     9,    10,    11,
-       0,    12,     0,    14,     0,    15,     0,   759,     0,    17,
-       0,     0,     0,   224,   728,   765,     0,   363,   224,     0,
+       0,     0,   224,     0,     0,   489,   224,     0,     0,     0,
+       8,     0,     0,     0,     0,     0,   678,     0,     9,    10,
+      11,     0,    12,     0,    14,     0,    15,   759,     0,     0,
+      17,     0,     0,   224,   728,   765,     0,   363,   224,     0,
        0,     0,   224,     0,   763,   764,     0,     0,     0,     0,
-     769,    20,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   545,     0,
-     545,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     769,    20,   220,   221,     0,   488,   223,   368,   369,   370,
+     371,     0,     0,     0,     0,     0,     0,     0,   545,     0,
+     545,   220,   221,     0,   639,   223,   359,   360,   361,   362,
      788,     0,     0,   791,   792,   793,     0,     0,   796,   798,
      697,   798,   224,     0,     0,     0,     0,     0,     0,     0,
        0,   813,   814,     0,     0,   808,   809,     0,   811,   812,
@@ -1421,18 +1418,18 @@ static const yytype_int16 yytable[] =
        0,   640,     0,   252,     0,     0,   255,     0,   257,     0,
      259,   260,   261,   262,   263,     0,     0,   266,   267,     0,
      270,   271,   272,     0,   274,   275,   276,   277,   278,     0,
-       0,     0,     0,     0,     0,     0,     0,    98,     0,     0,
-      99,     0,     0,     0,   100,   101,   102,     0,   103,   104,
-       0,   105,   106,   107,   108,     0,     0,     0,   224,     0,
-       0,   109,     0,     0,   110,     0,   111,     0,   112,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   113,     0,     0,     0,     0,     0,
-       0,     0,   114,     0,   115,   116,   117,   224,     0,     0,
-     118,   119,     0,     0,   312,   313,   120,   315,   224,   317,
-     224,   121,     0,     0,     0,   323,   324,     0,   331,     0,
+      98,     0,     0,    99,     0,     0,     0,   100,   101,   102,
+       0,   103,   104,     0,   105,   106,   107,   108,     0,     0,
+       0,     0,     0,     0,   109,     0,     0,   110,   224,   111,
+       0,   112,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   113,     0,     0,
+       0,     0,     0,     0,     0,   114,     0,   115,   116,   117,
+       0,     0,   118,   119,     0,     0,     0,   224,   120,     0,
+       0,     0,     0,   121,   312,   313,     0,   315,   224,   317,
+     224,     0,     0,     0,     0,   323,   324,     0,   331,     0,
        0,     0,     0,   339,     0,     0,     0,     0,     0,     0,
-     341,   342,   343,   344,   345,   346,   347,     0,   348,     0,
-     363,     0,     0,     0,     0,   122,   363,   224,   640,   372,
+     341,   342,   343,   344,   345,   346,   347,   122,   348,     0,
+     363,     0,     0,     0,     0,     0,   363,   224,   640,   372,
      363,     0,     0,     0,   224,   640,   372,     0,   365,   366,
        0,   374,     0,   376,   224,     0,     0,     0,     0,   383,
      384,     0,     0,     0,     0,     0,   393,     0,     0,   395,
@@ -1447,26 +1444,26 @@ static const yytype_int16 yytable[] =
        0,   461,     0,     0,     0,     0,     0,     0,   468,     0,
      495,   496,   497,   498,     0,     0,     0,     0,     0,     0,
        0,   480,   481,     0,     0,     0,     0,     0,     0,     0,
-     492,     0,   494,    60,     0,     0,     0,     0,   500,   501,
-       0,    61,    62,    63,   528,     0,    64,    65,     0,     0,
-      66,   533,     0,     0,    67,     0,     0,   537,   538,   539,
-      68,   541,     0,     0,    69,   548,     0,     0,    70,     0,
-       0,   530,    71,     0,     0,    72,   549,    73,   536,     0,
-       0,     0,     0,     0,     0,    74,     0,     0,   557,     0,
-      75,     0,    76,    77,    78,     0,     0,    79,    80,    81,
-       0,     0,    82,   552,   553,   554,   555,    83,     0,     0,
-       0,     0,     0,     0,     0,   616,     0,   617,   618,   620,
+     492,     0,   494,     0,     0,     0,     0,     0,   500,   501,
+     563,     0,     0,     0,   528,     0,     0,   564,     0,     0,
+       0,   533,     0,     0,     0,     0,   565,   537,   538,   539,
+     566,   541,   567,     0,     0,   548,     0,     0,     0,     0,
+     568,   530,     0,     0,   569,     0,   549,     0,   536,     0,
+     570,     0,     0,   571,     0,     0,     0,     0,   557,     0,
+       0,     0,     0,     0,   572,   573,     0,     0,   574,     0,
+       0,     0,   575,   552,   553,   554,   555,     0,     0,   576,
+     577,   578,     0,     0,     0,   616,     0,   617,   618,   620,
        0,   621,   622,   623,   624,     0,   626,     0,     0,     0,
-       0,     0,     0,   636,   638,    84,   614,     0,     0,     0,
-       0,   619,   649,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   636,   638,     0,   614,     0,     0,     0,
+     579,   619,   649,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    98,     0,     0,    99,
-       0,     0,     0,   100,   101,   102,     0,   103,   104,     0,
-     105,   106,   107,   108,     0,     0,     0,     0,     0,     0,
-     109,     0,     0,   110,     0,   111,     0,   112,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    98,     0,     0,
+      99,     0,     0,     0,   100,   101,   102,     0,   103,   104,
+       0,   105,   106,   107,   108,     0,     0,     0,     0,     0,
+       0,   109,     0,     0,   110,     0,   111,     0,   112,     0,
        0,   682,   683,   684,     0,     0,   686,     0,     0,     0,
-       0,   690,     0,   113,     0,     0,   694,     0,     0,   696,
-     698,   114,     0,   115,   116,   117,     0,   702,   685,   118,
+       0,   690,     0,     0,   113,     0,   694,     0,     0,   696,
+     698,     0,   114,     0,   115,   116,   117,   702,   685,   118,
      119,     0,     0,     0,     0,   120,   710,     0,     0,     0,
      121,     0,     0,     0,   699,     0,   701,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   709,     0,     0,
@@ -1489,23 +1486,23 @@ static const yytype_int16 yytable[] =
        0,     0,     9,    10,    11,   824,    12,    13,    14,     0,
       15,     0,    16,     0,    17,   829,   830,    18,     0,     0,
        0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    20,     0,     0,     0,
-       0,    21,     0,     0,    22,     0,     0,     0,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,   -34,     0,     0,     0,
-       0,    -5,    -5,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   434,     0,     0,     0,   435,   436,     0,
-       0,   437,   438,   439,   440,     0,   441,   442,     0,     0,
-      66,     0,     0,     0,    67,     0,     0,   443,     0,     0,
-      68,     0,     0,     0,   444,     0,     0,     0,    70,     0,
-       0,     0,    71,     0,     0,   445,     0,    73,    -5,     4,
-       0,     0,     0,     0,     5,   446,     0,     0,     0,     0,
-      75,     0,   447,    77,   448,     0,   449,   450,   451,   452,
-       6,     0,   453,     7,     0,     8,     0,     0,     0,     0,
-       0,     0,     0,     9,    10,    11,     0,    12,    13,    14,
-       0,    15,     0,    16,     0,    17,     0,     0,    18,     0,
-       0,     0,     0,     0,    19,   454,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
+      21,     0,     0,    22,     0,     0,     0,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,   -34,     0,     0,     0,     0,
+      -5,    -5,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   434,     0,     0,     0,   435,   436,     0,     0,
+     437,   438,   439,   440,     0,   441,   442,     0,     0,    66,
+       0,     0,     0,    67,     0,     0,   443,     0,     0,    68,
+       0,     0,     0,   444,     0,     0,     0,    70,     0,     0,
+       0,    71,     0,     0,   445,     0,    73,     0,     0,    -5,
+       4,     0,     0,     0,   446,     5,     0,     0,    75,     0,
+     447,    77,   448,     0,   449,   450,   451,   452,     0,     0,
+     453,     6,     0,     0,     7,     0,     8,     0,     0,     0,
+       0,     0,     0,     0,     9,    10,    11,     0,    12,    13,
+      14,     0,    15,     0,    16,     0,    17,     0,     0,    18,
+       0,     0,     0,   454,     0,    19,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    20,     0,     0,
        0,     0,    21,     0,     0,    22,     0,     0,     0,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
@@ -1518,161 +1515,161 @@ static const yytype_int16 yytable[] =
       11,     0,    12,     0,    14,     0,    15,     0,    16,     0,
       17,     0,     0,   213,     0,     0,     0,     0,     0,    19,
        0,   214,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,     4,     0,   210,   211,     0,     5,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   212,     0,     7,     0,     8,     0,     0,
+       0,     0,     0,     0,     0,     9,    10,    11,     0,    12,
+       0,    14,     0,    15,     0,    16,     0,    17,     0,     0,
+     598,     0,     0,     0,     0,     0,    19,     0,   599,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    20,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,     4,     0,
+     210,   211,     0,     5,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     212,     0,     7,     0,     8,     0,     0,     0,     0,     0,
+       0,     0,     9,    10,    11,     0,    12,     0,    14,     0,
+      15,     0,    16,     0,    17,     0,     0,     0,     0,     0,
+       0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,     4,     0,     0,     0,     0,
+       5,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     7,
+       0,     8,     0,     0,     0,     0,     0,     0,     0,     9,
+      10,    11,     0,    12,     0,    14,     0,    15,     0,    16,
+       0,    17,     0,     0,   194,     0,     0,     0,     0,     0,
+      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    20,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    23,    24,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,     4,     0,   210,   211,     0,     5,     0,     0,
+      49,    50,     4,     0,     0,     0,     0,     5,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   212,     0,     7,     0,     8,     0,
+       0,     0,     0,     0,     0,     0,     7,     0,     8,     0,
        0,     0,     0,     0,     0,     0,     9,    10,    11,     0,
       12,     0,    14,     0,    15,     0,    16,     0,    17,     0,
-       0,   598,     0,     0,     0,     0,     0,    19,     0,   599,
+       0,   583,     0,     0,     0,     0,     0,    19,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    20,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-       4,     0,   210,   211,     0,     5,     0,     0,     0,     0,
+       0,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,     4,
+       0,   210,   211,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   212,     0,     7,     0,     8,     0,     0,     0,
-       0,     0,     0,     0,     9,    10,    11,     0,    12,     0,
-      14,     0,    15,     0,    16,     0,    17,     0,     0,     0,
-       0,     0,     0,     0,     0,    19,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    20,     0,
+       0,   212,     0,     7,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,     4,     0,
-       0,     0,     0,     5,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    16,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    19,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     7,     0,     8,     0,     0,     0,     0,     0,
-       0,     0,     9,    10,    11,     0,    12,     0,    14,     0,
-      15,     0,    16,     0,    17,     0,     0,   194,     0,     0,
-       0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    20,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,     4,     0,     0,     0,
-       0,     5,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       7,     0,     8,     0,     0,     0,     0,     0,     0,     0,
-       9,    10,    11,     0,    12,     0,    14,     0,    15,     0,
-      16,     0,    17,     0,     0,   583,     0,     0,     0,     0,
-       0,    19,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    20,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,     4,     0,   210,   211,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   212,     0,     7,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    16,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    19,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,     4,     0,     0,     0,     0,     0,     0,     0,
-     434,     0,     0,     0,   435,   436,     0,     0,   437,   438,
-     439,   440,     0,   441,   442,     0,     7,    66,     0,     0,
-       0,    67,     0,     0,   443,     0,     0,    68,     0,     0,
-       0,   444,     0,     0,     0,    70,    16,     0,     0,    71,
-       0,     0,   445,     0,    73,     0,     0,    19,     0,     0,
-       0,     0,   446,     0,     0,     0,     0,    75,     0,   447,
-      77,   448,     0,   449,   450,   451,   452,     0,     0,   453,
-       0,     0,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-     563,     0,   454,     0,     0,     0,     0,   564,     0,     0,
-       0,     0,     0,     0,     0,     0,   565,     0,     0,     0,
-     566,     0,   567,     0,     0,     0,     0,     0,     0,     0,
-     568,     0,     0,     0,   569,     0,     0,     0,     0,     0,
-     570,     0,     0,   571,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   572,   573,     0,     0,   574,
-       0,     0,     0,   575,     0,     0,     0,     0,     0,     0,
-     576,   577,   578,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   434,     0,     0,     0,   435,   436,
+       0,     0,   437,   438,   439,   440,     0,   441,   442,     0,
+       7,    66,     0,     0,     0,    67,     0,     0,   443,     0,
+       0,    68,     0,     0,     0,   444,     0,     0,     0,    70,
+      16,     0,     0,    71,     0,     0,   445,     0,    73,     0,
+       0,    19,     0,     0,     0,     0,   446,     0,     0,     0,
+      75,     0,   447,    77,   448,     0,   449,   450,   451,   452,
+       0,     0,   453,     0,     0,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    60,     0,   454,     0,     0,     0,     0,
+       0,    61,    62,    63,     0,     0,    64,    65,     0,     0,
+      66,     0,     0,     0,    67,     0,     0,     0,     0,     0,
+      68,     0,     0,     0,    69,     0,     0,     0,    70,     0,
+       0,     0,    71,     0,     0,    72,     0,    73,     0,     0,
+       0,     0,     0,     0,     0,    74,     0,     0,     0,    75,
+       0,    76,    77,    78,     0,     0,    79,    80,    81,     0,
+       0,    82,     0,     0,     0,     0,    83,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   579,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50
+       0,     0,     0,     0,    84,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50
 };
 
 static const yytype_int16 yycheck[] =
 {
       86,   325,    51,   100,    13,   102,   103,   104,   105,   106,
      107,   558,   336,   110,   111,   112,   113,   114,   115,     5,
-     117,   118,   119,   120,   121,   129,     3,     4,     6,     5,
-     705,   135,     5,   135,    74,     5,    74,   712,   131,   550,
-     133,   213,   137,   215,   216,    15,   129,   558,    29,   405,
-      31,    32,   135,    15,    18,    19,   153,   154,   134,   156,
-     134,   158,   138,     0,   138,   421,   654,   164,   165,     3,
-       4,     3,     6,     7,    38,   172,   432,   665,    43,   667,
-       5,   178,   179,   180,   181,   182,   183,   184,   135,   186,
-      15,   195,   132,   135,   132,    76,   135,   421,    43,    15,
-      81,    66,    69,    70,   615,    86,     3,     4,   432,   465,
-      91,   215,   309,   310,    79,   622,   623,   624,   135,   626,
-      88,    66,   135,   798,   131,   131,   133,   133,    96,    97,
-     213,    15,   215,   216,    79,   135,   135,   146,    15,   135,
-     131,   311,   133,     3,   131,   131,   133,   133,   318,   319,
-     320,   135,   128,   131,   131,   128,   242,   243,   244,   129,
-     130,   131,   248,   249,   250,   251,   252,   129,   130,   255,
-     340,   257,   135,   259,   260,   261,   262,   263,   350,   135,
-     266,   267,   135,   135,   270,   271,   135,    47,   274,   275,
-     276,   277,   278,   131,   550,   133,   135,   131,   128,   133,
-     135,   132,   558,    15,   129,   130,   131,    67,    68,    69,
-      70,    74,   128,   129,   130,   131,   299,   133,   134,    74,
-     727,   316,   729,   770,    74,    74,   773,   322,    74,     3,
-      90,   326,     3,   403,   404,   330,     5,     3,     4,   409,
-       6,     7,   412,     3,   128,   129,   130,   333,     5,   133,
-     134,   128,   129,   130,   131,     3,   342,   343,   344,   345,
-     346,     3,   348,     3,   133,     3,   126,   127,     3,     4,
-       3,     6,     7,     8,     9,    10,    11,     5,   364,     5,
+     117,   118,   119,   120,   121,   129,     3,     4,     6,     6,
+       7,   135,     3,     4,   130,    43,   132,   550,     5,     5,
+     654,   213,   137,   215,   216,   558,   129,    74,    74,   405,
+       3,   665,   135,   667,    15,    88,   153,   154,    66,   156,
+       0,   158,   133,    96,    97,   421,   137,   164,   165,   133,
+      78,   134,   130,   137,   132,   172,   432,   130,   134,   132,
+       5,   178,   179,   180,   181,   182,   183,   184,     5,   186,
+      15,   195,   622,   623,   624,   134,   626,   421,    15,   134,
+     705,    43,   615,   134,   131,   131,   134,   712,   432,   465,
+     130,   215,   132,    20,   127,    18,    19,    24,    25,    69,
+      70,    28,     3,     4,    66,     6,     7,    34,     3,     4,
+     213,    15,   215,   216,    41,    38,    78,   146,    15,   134,
+     134,   311,     3,   130,   130,   132,   132,   131,   318,   319,
+     320,   134,   130,   130,   134,   132,   242,   243,   244,   130,
+     127,   127,   248,   249,   250,   251,   252,   128,   129,   255,
+     340,   257,   134,   259,   260,   261,   262,   263,   350,   134,
+     266,   267,   309,   310,   270,   271,    47,   134,   274,   275,
+     276,   277,   278,   798,   550,    15,   130,   727,   132,   729,
+      74,   134,   558,   128,   129,   130,    67,    68,    69,    70,
+     134,   128,   129,   130,   134,   134,   299,   124,    15,    74,
+      74,   316,    74,   770,    74,     3,   773,   322,    89,     3,
+       5,   326,     3,   403,   404,   330,     5,     3,     4,   409,
+       6,     7,   412,   127,   128,   129,   130,   333,   132,   133,
+     127,   128,   129,   130,     3,     3,   342,   343,   344,   345,
+     346,     3,   348,   132,   125,   126,     3,     5,     3,     3,
+       4,     3,     6,     7,     8,     9,    10,    11,   364,     5,
        5,   367,   368,   369,   370,   371,   372,   373,     3,   375,
-      29,     3,    31,    32,   464,     5,   382,   131,   134,   385,
-     386,    67,     5,    10,     3,     4,   392,     6,     7,     6,
-     396,   397,    12,    11,   134,   401,   128,   129,   130,   128,
-     137,   133,   134,    14,     5,    20,     3,     3,   423,    24,
-      25,     6,    67,    28,   429,     8,    10,    76,   433,    34,
-       9,    11,    81,   135,   516,   135,    41,    86,   704,   705,
-      89,   135,    91,   135,   135,   711,   712,   135,   135,   135,
-     135,     3,     4,   135,     6,   460,     8,     9,    10,    11,
-     540,   457,   135,   135,   469,     5,   135,   547,     3,     4,
-     135,     6,   706,     8,     9,    10,    11,    59,   474,   713,
-     135,   477,   135,   479,   135,     3,    59,   136,   137,   135,
-       3,   135,   488,   489,   508,   491,    59,   493,   457,     5,
-       3,     5,   516,   499,     5,     3,     3,   503,   504,     3,
-       5,     3,     5,     3,   519,   508,   598,   476,   600,   601,
-     125,     3,     5,   516,     5,     5,   132,     3,   132,   763,
-     132,     3,    67,   529,     3,   769,   135,     5,     5,   139,
-       5,   546,   808,   809,   139,   811,   812,     3,   544,    24,
-       3,     4,     3,     6,   788,     8,     9,    10,    11,   793,
-      44,   132,     3,   132,   523,     3,     4,   132,     6,     3,
-     584,     3,    10,    11,    12,    13,    14,     3,   132,   132,
-     307,    51,   133,   133,   311,   544,   600,   314,    90,   316,
-     524,   318,   319,   320,   321,   322,   308,   140,   325,   326,
-     146,   526,   388,   330,   515,   598,   123,   600,   601,   336,
-     615,   189,   126,   340,   394,   772,   697,   697,   721,    -1,
-      -1,    -1,    -1,   703,    -1,     3,     4,   707,     6,     7,
-       8,     9,    10,    11,    -1,    -1,    -1,   719,   634,    -1,
+      29,     5,    31,    32,   464,   130,   382,   133,     5,   385,
+     386,    67,     6,    11,    10,    14,   392,   127,   128,   129,
+     396,   397,   132,   133,    12,   401,     3,     4,   133,     6,
+     137,     8,     9,    10,    11,   127,     5,     3,   423,     3,
+     127,   128,   129,    67,   429,   132,   133,    76,   433,     6,
+       8,    80,    11,     9,   516,    10,    85,   134,   704,   705,
+     134,    90,   134,   134,   134,   711,   712,   134,   134,     5,
+      59,     3,     4,     3,     6,   460,     8,     9,    10,    11,
+     540,   457,   134,   134,   469,   134,   134,   547,     3,     4,
+      67,     6,   706,     8,     9,    10,    11,   134,   474,   713,
+     134,   477,     3,   479,   134,    59,    59,     5,   134,     3,
+       5,   134,   488,   489,   508,   491,   134,   493,   457,     5,
+     134,   134,   516,   499,     3,     3,     3,   503,   504,     5,
+       5,     3,     3,     3,   519,   508,   598,   476,   600,   601,
+     131,     5,    29,   516,    31,    32,     5,     5,   131,   763,
+       3,   131,     3,   529,     3,   769,   134,     5,     5,   138,
+       5,   546,   808,   809,   138,   811,   812,     3,   544,    24,
+      44,     3,     3,     3,   788,     3,     3,    90,    51,   793,
+     131,   131,   131,   131,   523,   131,   524,   132,   132,    76,
+     584,   308,   388,    80,   146,   526,   515,   140,    85,   123,
+     307,    88,   189,    90,   311,   544,   600,   314,   126,   316,
+     394,   318,   319,   320,   321,   322,   772,   697,   325,   326,
+     721,    -1,    -1,   330,    -1,   598,    -1,   600,   601,   336,
+     615,     3,     4,   340,     6,    -1,    -1,   697,    10,    11,
+      12,    13,    14,   703,    -1,    -1,    -1,   707,   135,   136,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   719,   634,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   642,   643,   644,   654,
      646,   647,    -1,   612,    -1,   651,   652,   653,    -1,    -1,
      665,    -1,   667,   622,   623,   624,    -1,   626,   627,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   403,   404,   405,    -1,
-     673,    -1,   409,    -1,   764,   412,    -1,    -1,    21,    -1,
+     673,    -1,   409,    -1,   764,   412,    -1,    -1,    -1,    21,
       -1,    -1,   772,   420,   421,    -1,   423,    -1,    -1,    -1,
-      -1,    -1,   429,    -1,    -1,   432,   433,     3,     4,    42,
-       6,     7,     8,     9,    10,    11,   721,    50,    51,    52,
-      -1,    54,    -1,    56,    -1,    58,    -1,   734,    -1,    62,
-      -1,    -1,    -1,   460,   693,   742,    -1,   464,   465,    -1,
+      -1,    -1,   429,    -1,    -1,   432,   433,    -1,    -1,    -1,
+      42,    -1,    -1,    -1,    -1,    -1,   721,    -1,    50,    51,
+      52,    -1,    54,    -1,    56,    -1,    58,   734,    -1,    -1,
+      62,    -1,    -1,   460,   693,   742,    -1,   464,   465,    -1,
       -1,    -1,   469,    -1,   740,   741,    -1,    -1,    -1,    -1,
-     746,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   727,    -1,
-     729,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     746,    83,     3,     4,    -1,     6,     7,     8,     9,    10,
+      11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   727,    -1,
+     729,     3,     4,    -1,     6,     7,     8,     9,    10,    11,
      776,    -1,    -1,   779,   780,   781,    -1,    -1,   784,   785,
      786,   787,   519,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,   806,   807,    -1,    -1,   801,   802,    -1,   804,   805,
@@ -1681,18 +1678,18 @@ static const yytype_int16 yycheck[] =
       -1,   558,    -1,   152,    -1,    -1,   155,    -1,   157,    -1,
      159,   160,   161,   162,   163,    -1,    -1,   166,   167,    -1,
      169,   170,   171,    -1,   173,   174,   175,   176,   177,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,    -1,    -1,
-      20,    -1,    -1,    -1,    24,    25,    26,    -1,    28,    29,
-      -1,    31,    32,    33,    34,    -1,    -1,    -1,   615,    -1,
-      -1,    41,    -1,    -1,    44,    -1,    46,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    -1,    74,    75,    76,   654,    -1,    -1,
-      80,    81,    -1,    -1,   253,   254,    86,   256,   665,   258,
-     667,    91,    -1,    -1,    -1,   264,   265,    -1,   272,    -1,
+      17,    -1,    -1,    20,    -1,    -1,    -1,    24,    25,    26,
+      -1,    28,    29,    -1,    31,    32,    33,    34,    -1,    -1,
+      -1,    -1,    -1,    -1,    41,    -1,    -1,    44,   615,    46,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,
+      -1,    -1,    79,    80,    -1,    -1,    -1,   654,    85,    -1,
+      -1,    -1,    -1,    90,   253,   254,    -1,   256,   665,   258,
+     667,    -1,    -1,    -1,    -1,   264,   265,    -1,   272,    -1,
       -1,    -1,    -1,   277,    -1,    -1,    -1,    -1,    -1,    -1,
-     279,   280,   281,   282,   283,   284,   285,    -1,   287,    -1,
-     697,    -1,    -1,    -1,    -1,   125,   703,   704,   705,   706,
+     279,   280,   281,   282,   283,   284,   285,   124,   287,    -1,
+     697,    -1,    -1,    -1,    -1,    -1,   703,   704,   705,   706,
      707,    -1,    -1,    -1,   711,   712,   713,    -1,   312,   313,
       -1,   315,    -1,   317,   721,    -1,    -1,    -1,    -1,   323,
      324,    -1,    -1,    -1,    -1,    -1,   331,    -1,    -1,   333,
@@ -1707,32 +1704,32 @@ static const yytype_int16 yycheck[] =
       -1,   393,    -1,    -1,    -1,    -1,    -1,    -1,   400,    -1,
      425,   426,   427,   428,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,   413,   414,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     422,    -1,   424,    22,    -1,    -1,    -1,    -1,   430,   431,
-      -1,    30,    31,    32,   459,    -1,    35,    36,    -1,    -1,
-      39,   466,    -1,    -1,    43,    -1,    -1,   471,   472,   473,
-      49,   475,    -1,    -1,    53,   479,    -1,    -1,    57,    -1,
-      -1,   463,    61,    -1,    -1,    64,   490,    66,   470,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,   502,    -1,
-      79,    -1,    81,    82,    83,    -1,    -1,    86,    87,    88,
-      -1,    -1,    91,   495,   496,   497,   498,    96,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   529,    -1,   531,   532,   534,
+     422,    -1,   424,    -1,    -1,    -1,    -1,    -1,   430,   431,
+      23,    -1,    -1,    -1,   459,    -1,    -1,    30,    -1,    -1,
+      -1,   466,    -1,    -1,    -1,    -1,    39,   471,   472,   473,
+      43,   475,    45,    -1,    -1,   479,    -1,    -1,    -1,    -1,
+      53,   463,    -1,    -1,    57,    -1,   490,    -1,   470,    -1,
+      63,    -1,    -1,    66,    -1,    -1,    -1,    -1,   502,    -1,
+      -1,    -1,    -1,    -1,    77,    78,    -1,    -1,    81,    -1,
+      -1,    -1,    85,   495,   496,   497,   498,    -1,    -1,    92,
+      93,    94,    -1,    -1,    -1,   529,    -1,   531,   532,   534,
       -1,   535,   537,   538,   539,    -1,   541,    -1,    -1,    -1,
-      -1,    -1,    -1,   548,   549,   124,   528,    -1,    -1,    -1,
-      -1,   533,   557,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   548,   549,    -1,   528,    -1,    -1,    -1,
+     123,   533,   557,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    17,    -1,    -1,    20,
-      -1,    -1,    -1,    24,    25,    26,    -1,    28,    29,    -1,
-      31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-      41,    -1,    -1,    44,    -1,    46,    -1,    48,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,    -1,    -1,
+      20,    -1,    -1,    -1,    24,    25,    26,    -1,    28,    29,
+      -1,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    -1,    -1,    44,    -1,    46,    -1,    48,    -1,
       -1,   616,   617,   618,    -1,    -1,   621,    -1,    -1,    -1,
-      -1,   625,    -1,    64,    -1,    -1,   630,    -1,    -1,   633,
-     634,    72,    -1,    74,    75,    76,    -1,   641,   620,    80,
-      81,    -1,    -1,    -1,    -1,    86,   650,    -1,    -1,    -1,
-      91,    -1,    -1,    -1,   636,    -1,   638,    -1,    -1,    -1,
+      -1,   625,    -1,    -1,    64,    -1,   630,    -1,    -1,   633,
+     634,    -1,    72,    -1,    74,    75,    76,   641,   620,    79,
+      80,    -1,    -1,    -1,    -1,    85,   650,    -1,    -1,    -1,
+      90,    -1,    -1,    -1,   636,    -1,   638,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   649,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   679,   680,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   125,   690,    -1,   128,    -1,   694,
-      -1,   696,    -1,   698,    -1,   136,   137,   702,    -1,    -1,
+      -1,    -1,    -1,    -1,   124,   690,    -1,   127,    -1,   694,
+      -1,   696,    -1,   698,    -1,   135,   136,   702,    -1,    -1,
      682,   683,   684,    -1,   686,   710,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   720,    -1,   722,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -1749,207 +1746,207 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    50,    51,    52,   817,    54,    55,    56,    -1,
       58,    -1,    60,    -1,    62,   827,   828,    65,    -1,    -1,
       -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,
-      -1,    89,    -1,    -1,    92,    -1,    -1,    -1,    96,    97,
+      -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
+      88,    -1,    -1,    91,    -1,    -1,    -1,    95,    96,    97,
       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,     5,    -1,    -1,    -1,
-      -1,   129,   130,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    22,    -1,    -1,    -1,    26,    27,    -1,
-      -1,    30,    31,    32,    33,    -1,    35,    36,    -1,    -1,
-      39,    -1,    -1,    -1,    43,    -1,    -1,    46,    -1,    -1,
-      49,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,
-      -1,    -1,    61,    -1,    -1,    64,    -1,    66,    15,    16,
-      -1,    -1,    -1,    -1,    21,    74,    -1,    -1,    -1,    -1,
-      79,    -1,    81,    82,    83,    -1,    85,    86,    87,    88,
-      37,    -1,    91,    40,    -1,    42,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    50,    51,    52,    -1,    54,    55,    56,
-      -1,    58,    -1,    60,    -1,    62,    -1,    -1,    65,    -1,
-      -1,    -1,    -1,    -1,    71,   124,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,
-      -1,    -1,    89,    -1,    -1,    92,    -1,    -1,    -1,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
-      -1,    -1,   129,   130,    16,    -1,    18,    19,    -1,    21,
+     118,   119,   120,   121,   122,     5,    -1,    -1,    -1,    -1,
+     128,   129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    22,    -1,    -1,    -1,    26,    27,    -1,    -1,
+      30,    31,    32,    33,    -1,    35,    36,    -1,    -1,    39,
+      -1,    -1,    -1,    43,    -1,    -1,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,    -1,
+      -1,    61,    -1,    -1,    64,    -1,    66,    -1,    -1,    15,
+      16,    -1,    -1,    -1,    74,    21,    -1,    -1,    78,    -1,
+      80,    81,    82,    -1,    84,    85,    86,    87,    -1,    -1,
+      90,    37,    -1,    -1,    40,    -1,    42,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    50,    51,    52,    -1,    54,    55,
+      56,    -1,    58,    -1,    60,    -1,    62,    -1,    -1,    65,
+      -1,    -1,    -1,   123,    -1,    71,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,
+      -1,    -1,    88,    -1,    -1,    91,    -1,    -1,    -1,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
+      -1,    -1,   128,   129,    16,    -1,    18,    19,    -1,    21,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,
       42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    51,
       52,    -1,    54,    -1,    56,    -1,    58,    -1,    60,    -1,
       62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    71,
       -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
+      -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    95,    96,    97,    98,    99,   100,   101,
      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,    16,    -1,    18,    19,    -1,    21,    -1,    -1,
+     122,    16,    -1,    18,    19,    -1,    21,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    42,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,
-      54,    -1,    56,    -1,    58,    -1,    60,    -1,    62,    -1,
-      -1,    65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-      16,    -1,    18,    19,    -1,    21,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    38,    -1,    40,    -1,    42,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    50,    51,    52,    -1,    54,    -1,
-      56,    -1,    58,    -1,    60,    -1,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,
+      -1,    -1,    -1,    38,    -1,    40,    -1,    42,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    54,
+      -1,    56,    -1,    58,    -1,    60,    -1,    62,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,    16,    -1,
-      -1,    -1,    -1,    21,    -1,    -1,    -1,    -1,    -1,    -1,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,    16,    -1,
+      18,    19,    -1,    21,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,
+      38,    -1,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    50,    51,    52,    -1,    54,    -1,    56,    -1,
-      58,    -1,    60,    -1,    62,    -1,    -1,    65,    -1,    -1,
+      58,    -1,    60,    -1,    62,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,
+      -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    97,
       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,    16,    -1,    -1,    -1,
-      -1,    21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     118,   119,   120,   121,   122,    16,    -1,    -1,    -1,    -1,
+      21,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,
+      -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
+      51,    52,    -1,    54,    -1,    56,    -1,    58,    -1,    60,
+      -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,    16,    -1,    -1,    -1,    -1,    21,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      50,    51,    52,    -1,    54,    -1,    56,    -1,    58,    -1,
-      60,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-      -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,    16,    -1,    18,    19,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    42,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,
+      54,    -1,    56,    -1,    58,    -1,    60,    -1,    62,    -1,
+      -1,    65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,
+      -1,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,    16,
+      -1,    18,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
+      -1,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,    16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      22,    -1,    -1,    -1,    26,    27,    -1,    -1,    30,    31,
-      32,    33,    -1,    35,    36,    -1,    40,    39,    -1,    -1,
-      -1,    43,    -1,    -1,    46,    -1,    -1,    49,    -1,    -1,
-      -1,    53,    -1,    -1,    -1,    57,    60,    -1,    -1,    61,
-      -1,    -1,    64,    -1,    66,    -1,    -1,    71,    -1,    -1,
-      -1,    -1,    74,    -1,    -1,    -1,    -1,    79,    -1,    81,
-      82,    83,    -1,    85,    86,    87,    88,    -1,    -1,    91,
-      -1,    -1,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-      23,    -1,   124,    -1,    -1,    -1,    -1,    30,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
-      43,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,
-      63,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    78,    79,    -1,    -1,    82,
-      -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,    16,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    22,    -1,    -1,    -1,    26,    27,
+      -1,    -1,    30,    31,    32,    33,    -1,    35,    36,    -1,
+      40,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,    -1,
+      -1,    49,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,
+      60,    -1,    -1,    61,    -1,    -1,    64,    -1,    66,    -1,
+      -1,    71,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
+      78,    -1,    80,    81,    82,    -1,    84,    85,    86,    87,
+      -1,    -1,    90,    -1,    -1,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,    22,    -1,   123,    -1,    -1,    -1,    -1,
+      -1,    30,    31,    32,    -1,    -1,    35,    36,    -1,    -1,
+      39,    -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,    -1,
+      49,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,
+      -1,    -1,    61,    -1,    -1,    64,    -1,    66,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    78,
+      -1,    80,    81,    82,    -1,    -1,    85,    86,    87,    -1,
+      -1,    90,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   124,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123
+      -1,    -1,    -1,    -1,   123,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,   141,   184,     0,    16,    21,    37,    40,    42,    50,
+       0,   140,   183,     0,    16,    21,    37,    40,    42,    50,
       51,    52,    54,    55,    56,    58,    60,    62,    65,    71,
-      84,    89,    92,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   142,   143,   174,   175,   176,   195,    69,    70,   159,
+      83,    88,    91,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   141,   142,   173,   174,   175,   194,    69,    70,   158,
       22,    30,    31,    32,    35,    36,    39,    43,    49,    53,
-      57,    61,    64,    66,    74,    79,    81,    82,    83,    86,
-      87,    88,    91,    96,   124,   178,   180,   181,   146,     3,
-     143,   210,    15,   129,   130,   157,   144,   145,    17,    20,
+      57,    61,    64,    66,    74,    78,    80,    81,    82,    85,
+      86,    87,    90,    95,   123,   177,   179,   180,   145,     3,
+     142,   209,    15,   128,   129,   156,   143,   144,    17,    20,
       24,    25,    26,    28,    29,    31,    32,    33,    34,    41,
-      44,    46,    48,    64,    72,    74,    75,    76,    80,    81,
-      86,    91,   125,   128,   136,   137,   197,   199,   135,   135,
-     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-     135,   135,   135,   128,   131,   149,   161,   149,   157,   149,
-     149,   132,   162,    74,    74,   162,    74,   162,    74,   162,
-     162,   162,   162,   162,    74,    74,   162,   162,   162,   162,
-     162,   162,   200,   162,   162,   162,   162,   162,    74,    29,
-      31,    32,    76,    81,    86,    89,    91,   147,   148,   197,
-     198,   199,     5,   128,    65,   174,   176,   183,     3,     3,
-       5,     3,    20,    24,    25,    28,    34,    41,   125,   196,
-      18,    19,    38,    65,    73,   174,   176,   177,   182,     5,
-       3,     4,     6,     7,   158,   166,     3,     3,   175,     3,
-       3,    47,    67,    68,    69,    70,    90,   126,   127,   160,
-     150,   181,     6,    10,    11,    12,    13,    14,   158,   170,
-     171,   172,   173,   162,   162,   173,   162,   173,   162,   173,
-     173,   173,   173,   173,   162,   162,   173,   173,   133,   163,
-     173,   173,   173,   162,   173,   173,   173,   173,   173,   162,
-     162,   162,   162,   162,   162,   162,     3,   162,     5,   198,
-       5,   176,     5,     3,     3,     3,   174,   177,   174,   176,
-     177,   174,   177,     5,   161,   161,   161,   161,   161,   161,
-     161,   161,   173,   173,   161,   173,   161,   173,   161,   161,
-     161,   161,   161,   173,   173,   161,   161,   134,   164,   161,
-     161,   163,   173,   202,   203,   161,   161,   161,   161,   163,
-     161,   173,   173,   173,   173,   173,   173,   173,   173,     5,
-     174,     6,    10,    11,   158,   170,   172,   172,     6,     8,
-       9,    10,    11,   158,   167,   163,   163,     6,     8,     9,
-      10,    11,   158,   168,   163,   166,   163,   167,   167,   167,
-     165,   166,   166,   163,   163,   168,   166,   134,   128,   151,
-     210,   173,   166,   164,   161,   163,   173,   168,   173,     5,
-     164,   167,   163,   161,   161,   161,   161,   161,   163,   161,
-       3,   177,   161,   164,   164,   161,   161,   161,   161,   161,
-     161,   161,   164,   161,   164,   163,   163,   163,   163,   161,
-     164,   164,   161,   161,    22,    26,    27,    30,    31,    32,
-      33,    35,    36,    46,    53,    64,    74,    81,    83,    85,
-      86,    87,    88,    91,   124,   152,   178,   185,   186,   163,
-     161,   151,   203,   164,   161,   161,   163,   163,   151,   161,
-     164,   167,   167,   165,   173,   173,   164,   167,     3,   167,
-     151,   151,     6,     8,     9,    10,    11,   158,     6,   158,
-     165,   168,   151,   166,   151,   164,   164,   164,   164,   166,
-     151,   151,   165,   168,   166,   135,   135,   135,   135,   135,
-     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-     135,   135,   135,     5,   135,   153,   161,   210,   164,   166,
-     151,   167,   165,   164,   201,   166,   151,   163,   163,   163,
-     161,   163,   154,   155,   185,   210,   161,   161,   163,   163,
-     161,   161,   151,   151,   151,   151,   161,   163,   161,   161,
-      59,   193,   194,    23,    30,    39,    43,    45,    53,    57,
-      63,    66,    78,    79,    82,    86,    93,    94,    95,   124,
-     179,     5,   128,    65,   174,   176,   188,     3,    59,   189,
-     190,     3,    59,   191,   192,     5,     3,   196,    65,    73,
-     174,   176,   177,   187,     5,     5,   166,     3,     3,     3,
-     210,   160,     5,   186,   151,   161,   163,   163,   163,   151,
-     164,   163,   164,   164,   164,   167,   164,     5,   156,   210,
-     166,    67,   167,   169,   204,   205,   164,   138,   164,     6,
-     158,   165,   167,   169,   208,   209,     3,     3,   138,   164,
-     165,   169,   208,     3,   132,    43,    66,    79,    43,    66,
-      79,     5,     5,   176,     5,   132,     3,   132,     3,     3,
-     174,   177,   174,   176,   177,   174,   177,   210,   166,   169,
-     206,   207,   164,   164,   164,   151,   164,   154,   154,   154,
-     163,   154,   210,     5,   163,   135,   163,   161,   163,   151,
-     139,   151,   163,   161,   161,   161,   161,   161,   139,   151,
-     163,   161,   161,   161,   206,     5,     5,   206,   206,   174,
-     163,   161,   163,   151,   151,   151,   151,   164,   210,   164,
-       3,   164,   205,   164,    24,   164,   167,   165,   165,   209,
-     168,   167,    44,   164,   165,   165,   168,   133,     3,   133,
-     133,   177,   164,   207,   164,   154,   154,   151,   151,   162,
-     151,   163,   163,   161,   161,   162,   151,   163,   163,   161,
-     132,     3,   132,   132,   151,   151,   173,   164,   164,   168,
-     167,   173,   164,   164,   168,   208,   204,   208,   161,   151,
-     151,   161,   161,   161,   151,   151,   161,   133,   161,   133,
-     133,   168,     3,     3,   168,     3,   132,   132,   161,   161,
-     163,   161,   161,   166,   166,   165,   165,   164,   165,   165,
-     133,   133,   163,   163,   151,   163,   163,   164,   164,   151,
-     151
+      44,    46,    48,    64,    72,    74,    75,    76,    79,    80,
+      85,    90,   124,   127,   135,   136,   196,   198,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   127,   130,   148,   160,   148,   156,   148,
+     148,   131,   161,    74,    74,   161,    74,   161,    74,   161,
+     161,   161,   161,   161,    74,    74,   161,   161,   161,   161,
+     161,   161,   199,   161,   161,   161,   161,   161,    74,    29,
+      31,    32,    76,    80,    85,    88,    90,   146,   147,   196,
+     197,   198,     5,   127,    65,   173,   175,   182,     3,     3,
+       5,     3,    20,    24,    25,    28,    34,    41,   124,   195,
+      18,    19,    38,    65,    73,   173,   175,   176,   181,     5,
+       3,     4,     6,     7,   157,   165,     3,     3,   174,     3,
+       3,    47,    67,    68,    69,    70,    89,   125,   126,   159,
+     149,   180,     6,    10,    11,    12,    13,    14,   157,   169,
+     170,   171,   172,   161,   161,   172,   161,   172,   161,   172,
+     172,   172,   172,   172,   161,   161,   172,   172,   132,   162,
+     172,   172,   172,   161,   172,   172,   172,   172,   172,   161,
+     161,   161,   161,   161,   161,   161,     3,   161,     5,   197,
+       5,   175,     5,     3,     3,     3,   173,   176,   173,   175,
+     176,   173,   176,     5,   160,   160,   160,   160,   160,   160,
+     160,   160,   172,   172,   160,   172,   160,   172,   160,   160,
+     160,   160,   160,   172,   172,   160,   160,   133,   163,   160,
+     160,   162,   172,   201,   202,   160,   160,   160,   160,   162,
+     160,   172,   172,   172,   172,   172,   172,   172,   172,     5,
+     173,     6,    10,    11,   157,   169,   171,   171,     6,     8,
+       9,    10,    11,   157,   166,   162,   162,     6,     8,     9,
+      10,    11,   157,   167,   162,   165,   162,   166,   166,   166,
+     164,   165,   165,   162,   162,   167,   165,   133,   127,   150,
+     209,   172,   165,   163,   160,   162,   172,   167,   172,     5,
+     163,   166,   162,   160,   160,   160,   160,   160,   162,   160,
+       3,   176,   160,   163,   163,   160,   160,   160,   160,   160,
+     160,   160,   163,   160,   163,   162,   162,   162,   162,   160,
+     163,   163,   160,   160,    22,    26,    27,    30,    31,    32,
+      33,    35,    36,    46,    53,    64,    74,    80,    82,    84,
+      85,    86,    87,    90,   123,   151,   177,   184,   185,   162,
+     160,   150,   202,   163,   160,   160,   162,   162,   150,   160,
+     163,   166,   166,   164,   172,   172,   163,   166,     3,   166,
+     150,   150,     6,     8,     9,    10,    11,   157,     6,   157,
+     164,   167,   150,   165,   150,   163,   163,   163,   163,   165,
+     150,   150,   164,   167,   165,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,     5,   134,   152,   160,   209,   163,   165,
+     150,   166,   164,   163,   200,   165,   150,   162,   162,   162,
+     160,   162,   153,   154,   184,   209,   160,   160,   162,   162,
+     160,   160,   150,   150,   150,   150,   160,   162,   160,   160,
+      59,   192,   193,    23,    30,    39,    43,    45,    53,    57,
+      63,    66,    77,    78,    81,    85,    92,    93,    94,   123,
+     178,     5,   127,    65,   173,   175,   187,     3,    59,   188,
+     189,     3,    59,   190,   191,     5,     3,   195,    65,    73,
+     173,   175,   176,   186,     5,     5,   165,     3,     3,     3,
+     209,   159,     5,   185,   150,   160,   162,   162,   162,   150,
+     163,   162,   163,   163,   163,   166,   163,     5,   155,   209,
+     165,    67,   166,   168,   203,   204,   163,   137,   163,     6,
+     157,   164,   166,   168,   207,   208,     3,     3,   137,   163,
+     164,   168,   207,     3,   131,    43,    66,    78,    43,    66,
+      78,     5,     5,   175,     5,   131,     3,   131,     3,     3,
+     173,   176,   173,   175,   176,   173,   176,   209,   165,   168,
+     205,   206,   163,   163,   163,   150,   163,   153,   153,   153,
+     162,   153,   209,     5,   162,   134,   162,   160,   162,   150,
+     138,   150,   162,   160,   160,   160,   160,   160,   138,   150,
+     162,   160,   160,   160,   205,     5,     5,   205,   205,   173,
+     162,   160,   162,   150,   150,   150,   150,   163,   209,   163,
+       3,   163,   204,   163,    24,   163,   166,   164,   164,   208,
+     167,   166,    44,   163,   164,   164,   167,   132,     3,   132,
+     132,   176,   163,   206,   163,   153,   153,   150,   150,   161,
+     150,   162,   162,   160,   160,   161,   150,   162,   162,   160,
+     131,     3,   131,   131,   150,   150,   172,   163,   163,   167,
+     166,   172,   163,   163,   167,   207,   203,   207,   160,   150,
+     150,   160,   160,   160,   150,   150,   160,   132,   160,   132,
+     132,   167,     3,     3,   167,     3,   131,   131,   160,   160,
+     162,   160,   160,   165,   165,   164,   164,   163,   164,   164,
+     132,   132,   162,   162,   150,   162,   162,   163,   163,   150,
+     150
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2777,229 +2774,229 @@ yyreduce:
   switch (yyn)
     {
         case 7:
-#line 305 "ds9parser.Y"
+#line 303 "ds9parser.Y"
     {cerr << "DS9 Regions File 3.2" << endl;;}
     break;
 
   case 9:
-#line 308 "ds9parser.Y"
+#line 306 "ds9parser.Y"
     {globalTile = (yyvsp[(2) - (2)].integer);;}
     break;
 
   case 10:
-#line 310 "ds9parser.Y"
-    {globalSystem=(CoordSystem)(yyvsp[(1) - (1)].integer);;}
+#line 308 "ds9parser.Y"
+    {globalSystem=(Coord::CoordSystem)(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 12:
-#line 311 "ds9parser.Y"
-    {globalSystem=globalWCS; globalSky=(SkyFrame)(yyvsp[(1) - (1)].integer);;}
+#line 309 "ds9parser.Y"
+    {globalSystem=globalWCS; globalSky=(Coord::SkyFrame)(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 14:
-#line 312 "ds9parser.Y"
-    {globalSystem=globalWCS; globalSky=FK5;;}
+#line 310 "ds9parser.Y"
+    {globalSystem=globalWCS; globalSky=Coord::FK5;;}
     break;
 
   case 21:
-#line 321 "ds9parser.Y"
+#line 319 "ds9parser.Y"
     {globalTile = (yyvsp[(2) - (2)].integer);;}
     break;
 
   case 22:
-#line 322 "ds9parser.Y"
+#line 320 "ds9parser.Y"
     {DISCARD_(1);}
     break;
 
   case 25:
-#line 326 "ds9parser.Y"
+#line 324 "ds9parser.Y"
     {DISCARD_(1);}
     break;
 
   case 28:
-#line 330 "ds9parser.Y"
+#line 328 "ds9parser.Y"
     {DISCARD_(1);}
     break;
 
   case 29:
-#line 330 "ds9parser.Y"
+#line 328 "ds9parser.Y"
     {strncpy(localComment,(yyvsp[(3) - (4)].str),80);}
     break;
 
   case 31:
-#line 332 "ds9parser.Y"
+#line 330 "ds9parser.Y"
     {DISCARD_(1);}
     break;
 
   case 32:
-#line 333 "ds9parser.Y"
+#line 331 "ds9parser.Y"
     {strncpy(localComment,(yyvsp[(4) - (5)].str),80);}
     break;
 
   case 34:
-#line 337 "ds9parser.Y"
+#line 335 "ds9parser.Y"
     {DISCARD_(1);}
     break;
 
   case 35:
-#line 337 "ds9parser.Y"
+#line 335 "ds9parser.Y"
     {strncpy(localComment,(yyvsp[(2) - (3)].str),80);}
     break;
 
   case 37:
-#line 339 "ds9parser.Y"
+#line 337 "ds9parser.Y"
     {DISCARD_(1);}
     break;
 
   case 38:
-#line 339 "ds9parser.Y"
+#line 337 "ds9parser.Y"
     {strncpy(localComment,(yyvsp[(3) - (4)].str),80);}
     break;
 
   case 41:
-#line 344 "ds9parser.Y"
+#line 342 "ds9parser.Y"
     {YYACCEPT;;}
     break;
 
   case 42:
-#line 347 "ds9parser.Y"
+#line 345 "ds9parser.Y"
     {(yyval.real)=(yyvsp[(1) - (1)].real);;}
     break;
 
   case 43:
-#line 348 "ds9parser.Y"
+#line 346 "ds9parser.Y"
     {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 44:
-#line 351 "ds9parser.Y"
+#line 349 "ds9parser.Y"
     {yydebug=1;;}
     break;
 
   case 45:
-#line 352 "ds9parser.Y"
+#line 350 "ds9parser.Y"
     {yydebug=0;;}
     break;
 
   case 46:
-#line 355 "ds9parser.Y"
+#line 353 "ds9parser.Y"
     {(yyval.integer)=((yyvsp[(1) - (1)].integer) ? 1 : 0);;}
     break;
 
   case 47:
-#line 357 "ds9parser.Y"
+#line 355 "ds9parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 48:
-#line 358 "ds9parser.Y"
+#line 356 "ds9parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 49:
-#line 359 "ds9parser.Y"
+#line 357 "ds9parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 50:
-#line 360 "ds9parser.Y"
+#line 358 "ds9parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 51:
-#line 362 "ds9parser.Y"
+#line 360 "ds9parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 52:
-#line 363 "ds9parser.Y"
+#line 361 "ds9parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 53:
-#line 364 "ds9parser.Y"
+#line 362 "ds9parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 54:
-#line 365 "ds9parser.Y"
+#line 363 "ds9parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 61:
-#line 380 "ds9parser.Y"
+#line 378 "ds9parser.Y"
     {cStatus = 0;;}
     break;
 
   case 62:
-#line 381 "ds9parser.Y"
+#line 379 "ds9parser.Y"
     {cStatus = 1;;}
     break;
 
   case 63:
-#line 382 "ds9parser.Y"
+#line 380 "ds9parser.Y"
     {cStatus = 1;;}
     break;
 
   case 64:
-#line 385 "ds9parser.Y"
+#line 383 "ds9parser.Y"
     {(yyval.real) = fr->mapAngleToRef(0,localSystem,localSky);;}
     break;
 
   case 65:
-#line 386 "ds9parser.Y"
+#line 384 "ds9parser.Y"
     {(yyval.real) = (yyvsp[(1) - (1)].real);;}
     break;
 
   case 66:
-#line 389 "ds9parser.Y"
+#line 387 "ds9parser.Y"
     {(yyval.real) = fr->mapAngleToRef(degToRad((yyvsp[(1) - (1)].real)),localSystem,localSky);;}
     break;
 
   case 67:
-#line 390 "ds9parser.Y"
+#line 388 "ds9parser.Y"
     {(yyval.real) = fr->mapAngleToRef(degToRad((yyvsp[(1) - (1)].real)),localSystem,localSky);;}
     break;
 
   case 68:
-#line 391 "ds9parser.Y"
+#line 389 "ds9parser.Y"
     {(yyval.real) = fr->mapAngleToRef((yyvsp[(1) - (1)].real),localSystem,localSky);;}
     break;
 
   case 69:
-#line 394 "ds9parser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), localSystem, DEGREE);;}
+#line 392 "ds9parser.Y"
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), localSystem, Coord::DEGREE);;}
     break;
 
   case 70:
-#line 395 "ds9parser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), PHYSICAL);;}
+#line 393 "ds9parser.Y"
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::PHYSICAL);;}
     break;
 
   case 71:
-#line 396 "ds9parser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
+#line 394 "ds9parser.Y"
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::IMAGE);;}
     break;
 
   case 72:
-#line 397 "ds9parser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), DEGREE);;}
+#line 395 "ds9parser.Y"
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), Coord::DEGREE);;}
     break;
 
   case 73:
-#line 398 "ds9parser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCMIN);;}
+#line 396 "ds9parser.Y"
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), Coord::ARCMIN);;}
     break;
 
   case 74:
-#line 399 "ds9parser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCSEC);;}
+#line 397 "ds9parser.Y"
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), Coord::ARCSEC);;}
     break;
 
   case 75:
-#line 403 "ds9parser.Y"
+#line 401 "ds9parser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, DEGREE);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, Coord::DEGREE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -3007,9 +3004,9 @@ yyreduce:
     break;
 
   case 76:
-#line 410 "ds9parser.Y"
+#line 408 "ds9parser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::PHYSICAL);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -3017,9 +3014,9 @@ yyreduce:
     break;
 
   case 77:
-#line 417 "ds9parser.Y"
+#line 415 "ds9parser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::IMAGE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -3027,9 +3024,9 @@ yyreduce:
     break;
 
   case 78:
-#line 424 "ds9parser.Y"
+#line 422 "ds9parser.Y"
     {
-	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),DEGREE);
+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),Coord::DEGREE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -3037,9 +3034,9 @@ yyreduce:
     break;
 
   case 79:
-#line 431 "ds9parser.Y"
+#line 429 "ds9parser.Y"
     {
-	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCMIN);
+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),Coord::ARCMIN);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -3047,9 +3044,9 @@ yyreduce:
     break;
 
   case 80:
-#line 438 "ds9parser.Y"
+#line 436 "ds9parser.Y"
     {
-	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCSEC);
+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),Coord::ARCSEC);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -3057,32 +3054,32 @@ yyreduce:
     break;
 
   case 81:
-#line 446 "ds9parser.Y"
+#line 444 "ds9parser.Y"
     {(yyval.integer) = (yyvsp[(3) - (3)].integer);;}
     break;
 
   case 82:
-#line 449 "ds9parser.Y"
+#line 447 "ds9parser.Y"
     {(yyval.real) = parseSEXStr((yyvsp[(1) - (1)].str));;}
     break;
 
   case 83:
-#line 452 "ds9parser.Y"
+#line 450 "ds9parser.Y"
     {(yyval.real) = parseHMSStr((yyvsp[(1) - (1)].str));;}
     break;
 
   case 84:
-#line 455 "ds9parser.Y"
+#line 453 "ds9parser.Y"
     {(yyval.real) = parseDMSStr((yyvsp[(1) - (1)].str));;}
     break;
 
   case 85:
-#line 459 "ds9parser.Y"
+#line 457 "ds9parser.Y"
     {
 	  Vector r;
-	  CoordSystem sys = checkWCSSystem();
-	  SkyFrame sky = checkWCSSky();
-	  if (sky == GALACTIC || sky == ECLIPTIC) 
+	  Coord::CoordSystem sys = checkWCSSystem();
+	  Coord::SkyFrame sky = checkWCSSky();
+	  if (sky == Coord::GALACTIC || sky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
 	  else
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
@@ -3093,7 +3090,7 @@ yyreduce:
     break;
 
   case 86:
-#line 472 "ds9parser.Y"
+#line 470 "ds9parser.Y"
     {
 	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),
 	  checkWCSSystem(), checkWCSSky());
@@ -3104,7 +3101,7 @@ yyreduce:
     break;
 
   case 87:
-#line 480 "ds9parser.Y"
+#line 478 "ds9parser.Y"
     {
 	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),
 	  checkWCSSystem(), checkWCSSky());
@@ -3115,7 +3112,7 @@ yyreduce:
     break;
 
   case 88:
-#line 488 "ds9parser.Y"
+#line 486 "ds9parser.Y"
     {
 	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, localSky);
 	  (yyval.vector)[0] = r[0];
@@ -3125,7 +3122,7 @@ yyreduce:
     break;
 
   case 89:
-#line 495 "ds9parser.Y"
+#line 493 "ds9parser.Y"
     {
 	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), 
 	    checkWCSSystem(), checkWCSSky());
@@ -3136,9 +3133,9 @@ yyreduce:
     break;
 
   case 90:
-#line 503 "ds9parser.Y"
+#line 501 "ds9parser.Y"
     {
-	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::IMAGE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -3146,401 +3143,401 @@ yyreduce:
     break;
 
   case 91:
-#line 510 "ds9parser.Y"
+#line 508 "ds9parser.Y"
     {
-	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::PHYSICAL);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	;}
     break;
 
   case 92:
-#line 517 "ds9parser.Y"
-    {(yyval.integer) = IMAGE;;}
+#line 515 "ds9parser.Y"
+    {(yyval.integer) = Coord::IMAGE;;}
     break;
 
   case 93:
-#line 518 "ds9parser.Y"
-    {(yyval.integer) = PHYSICAL;;}
+#line 516 "ds9parser.Y"
+    {(yyval.integer) = Coord::PHYSICAL;;}
     break;
 
   case 94:
-#line 519 "ds9parser.Y"
-    {(yyval.integer) = DETECTOR;;}
+#line 517 "ds9parser.Y"
+    {(yyval.integer) = Coord::DETECTOR;;}
     break;
 
   case 95:
-#line 520 "ds9parser.Y"
-    {(yyval.integer) = AMPLIFIER;;}
+#line 518 "ds9parser.Y"
+    {(yyval.integer) = Coord::AMPLIFIER;;}
     break;
 
   case 96:
-#line 521 "ds9parser.Y"
-    {(yyval.integer) = (yyvsp[(1) - (1)].integer); globalWCS = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+#line 519 "ds9parser.Y"
+    {(yyval.integer) = (yyvsp[(1) - (1)].integer); globalWCS = (Coord::CoordSystem)(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 97:
-#line 524 "ds9parser.Y"
-    {(yyval.integer) = WCS;;}
+#line 522 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCS;;}
     break;
 
   case 98:
-#line 525 "ds9parser.Y"
-    {(yyval.integer) = WCSA;;}
+#line 523 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSA;;}
     break;
 
   case 99:
-#line 526 "ds9parser.Y"
-    {(yyval.integer) = WCSB;;}
+#line 524 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSB;;}
     break;
 
   case 100:
-#line 527 "ds9parser.Y"
-    {(yyval.integer) = WCSC;;}
+#line 525 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSC;;}
     break;
 
   case 101:
-#line 528 "ds9parser.Y"
-    {(yyval.integer) = WCSD;;}
+#line 526 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSD;;}
     break;
 
   case 102:
-#line 529 "ds9parser.Y"
-    {(yyval.integer) = WCSE;;}
+#line 527 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSE;;}
     break;
 
   case 103:
-#line 530 "ds9parser.Y"
-    {(yyval.integer) = WCSF;;}
+#line 528 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSF;;}
     break;
 
   case 104:
-#line 531 "ds9parser.Y"
-    {(yyval.integer) = WCSG;;}
+#line 529 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSG;;}
     break;
 
   case 105:
-#line 532 "ds9parser.Y"
-    {(yyval.integer) = WCSH;;}
+#line 530 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSH;;}
     break;
 
   case 106:
-#line 533 "ds9parser.Y"
-    {(yyval.integer) = WCSI;;}
+#line 531 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSI;;}
     break;
 
   case 107:
-#line 534 "ds9parser.Y"
-    {(yyval.integer) = WCSJ;;}
+#line 532 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSJ;;}
     break;
 
   case 108:
-#line 535 "ds9parser.Y"
-    {(yyval.integer) = WCSK;;}
+#line 533 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSK;;}
     break;
 
   case 109:
-#line 536 "ds9parser.Y"
-    {(yyval.integer) = WCSL;;}
+#line 534 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSL;;}
     break;
 
   case 110:
-#line 537 "ds9parser.Y"
-    {(yyval.integer) = WCSM;;}
+#line 535 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSM;;}
     break;
 
   case 111:
-#line 538 "ds9parser.Y"
-    {(yyval.integer) = WCSN;;}
+#line 536 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSN;;}
     break;
 
   case 112:
-#line 539 "ds9parser.Y"
-    {(yyval.integer) = WCSO;;}
+#line 537 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSO;;}
     break;
 
   case 113:
-#line 540 "ds9parser.Y"
-    {(yyval.integer) = WCSP;;}
+#line 538 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSP;;}
     break;
 
   case 114:
-#line 541 "ds9parser.Y"
-    {(yyval.integer) = WCSQ;;}
+#line 539 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSQ;;}
     break;
 
   case 115:
-#line 542 "ds9parser.Y"
-    {(yyval.integer) = WCSR;;}
+#line 540 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSR;;}
     break;
 
   case 116:
-#line 543 "ds9parser.Y"
-    {(yyval.integer) = WCSS;;}
+#line 541 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSS;;}
     break;
 
   case 117:
-#line 544 "ds9parser.Y"
-    {(yyval.integer) = WCST;;}
+#line 542 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCST;;}
     break;
 
   case 118:
-#line 545 "ds9parser.Y"
-    {(yyval.integer) = WCSU;;}
+#line 543 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSU;;}
     break;
 
   case 119:
-#line 546 "ds9parser.Y"
-    {(yyval.integer) = WCSV;;}
+#line 544 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSV;;}
     break;
 
   case 120:
-#line 547 "ds9parser.Y"
-    {(yyval.integer) = WCSW;;}
+#line 545 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSW;;}
     break;
 
   case 121:
-#line 548 "ds9parser.Y"
-    {(yyval.integer) = WCSX;;}
+#line 546 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSX;;}
     break;
 
   case 122:
-#line 549 "ds9parser.Y"
-    {(yyval.integer) = WCSY;;}
+#line 547 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSY;;}
     break;
 
   case 123:
-#line 550 "ds9parser.Y"
-    {(yyval.integer) = WCSZ;;}
+#line 548 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCSZ;;}
     break;
 
   case 124:
-#line 551 "ds9parser.Y"
-    {(yyval.integer) = WCS0;;}
+#line 549 "ds9parser.Y"
+    {(yyval.integer) = Coord::WCS0;;}
     break;
 
   case 125:
-#line 554 "ds9parser.Y"
-    {(yyval.integer) = FK4;;}
+#line 552 "ds9parser.Y"
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 126:
-#line 555 "ds9parser.Y"
-    {(yyval.integer) = FK4;;}
+#line 553 "ds9parser.Y"
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 127:
-#line 556 "ds9parser.Y"
-    {(yyval.integer) = FK4_NO_E;;}
+#line 554 "ds9parser.Y"
+    {(yyval.integer) = Coord::FK4_NO_E;;}
     break;
 
   case 128:
-#line 557 "ds9parser.Y"
-    {(yyval.integer) = FK5;;}
+#line 555 "ds9parser.Y"
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 129:
-#line 558 "ds9parser.Y"
-    {(yyval.integer) = FK5;;}
+#line 556 "ds9parser.Y"
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 130:
-#line 559 "ds9parser.Y"
-    {(yyval.integer) = ICRS;;}
+#line 557 "ds9parser.Y"
+    {(yyval.integer) = Coord::ICRS;;}
     break;
 
   case 131:
-#line 560 "ds9parser.Y"
-    {(yyval.integer) = GALACTIC;;}
+#line 558 "ds9parser.Y"
+    {(yyval.integer) = Coord::GALACTIC;;}
     break;
 
   case 132:
-#line 561 "ds9parser.Y"
-    {(yyval.integer) = SUPERGALACTIC;;}
+#line 559 "ds9parser.Y"
+    {(yyval.integer) = Coord::SUPERGALACTIC;;}
     break;
 
   case 133:
-#line 562 "ds9parser.Y"
-    {(yyval.integer) = ECLIPTIC;;}
+#line 560 "ds9parser.Y"
+    {(yyval.integer) = Coord::ECLIPTIC;;}
     break;
 
   case 134:
-#line 563 "ds9parser.Y"
-    {(yyval.integer) = HELIOECLIPTIC;;}
+#line 561 "ds9parser.Y"
+    {(yyval.integer) = Coord::HELIOECLIPTIC;;}
     break;
 
   case 135:
-#line 566 "ds9parser.Y"
-    {(yyval.integer)=DEGREE;;}
+#line 564 "ds9parser.Y"
+    {(yyval.integer)=Coord::DEGREE;;}
     break;
 
   case 136:
-#line 567 "ds9parser.Y"
-    {(yyval.integer)=ARCMIN;;}
+#line 565 "ds9parser.Y"
+    {(yyval.integer)=Coord::ARCMIN;;}
     break;
 
   case 137:
-#line 568 "ds9parser.Y"
-    {(yyval.integer)=ARCSEC;;}
+#line 566 "ds9parser.Y"
+    {(yyval.integer)=Coord::ARCSEC;;}
     break;
 
   case 138:
-#line 571 "ds9parser.Y"
+#line 569 "ds9parser.Y"
     {(yyval.integer) = Marker::SELECT;;}
     break;
 
   case 139:
-#line 572 "ds9parser.Y"
+#line 570 "ds9parser.Y"
     {(yyval.integer) = Marker::HIGHLITE;;}
     break;
 
   case 140:
-#line 573 "ds9parser.Y"
+#line 571 "ds9parser.Y"
     {(yyval.integer) = Marker::DASH;;}
     break;
 
   case 141:
-#line 574 "ds9parser.Y"
+#line 572 "ds9parser.Y"
     {(yyval.integer) = Marker::FIXED;;}
     break;
 
   case 142:
-#line 575 "ds9parser.Y"
+#line 573 "ds9parser.Y"
     {(yyval.integer) = Marker::EDIT;;}
     break;
 
   case 143:
-#line 576 "ds9parser.Y"
+#line 574 "ds9parser.Y"
     {(yyval.integer) = Marker::MOVE;;}
     break;
 
   case 144:
-#line 577 "ds9parser.Y"
+#line 575 "ds9parser.Y"
     {(yyval.integer) = Marker::ROTATE;;}
     break;
 
   case 145:
-#line 578 "ds9parser.Y"
+#line 576 "ds9parser.Y"
     {(yyval.integer) = Marker::DELETE;;}
     break;
 
   case 146:
-#line 579 "ds9parser.Y"
+#line 577 "ds9parser.Y"
     {(yyval.integer) = Marker::INCLUDE;;}
     break;
 
   case 147:
-#line 580 "ds9parser.Y"
+#line 578 "ds9parser.Y"
     {(yyval.integer) = Marker::SOURCE;;}
     break;
 
   case 148:
-#line 583 "ds9parser.Y"
+#line 581 "ds9parser.Y"
     {(yyval.integer) = CallBack::SELECTCB;;}
     break;
 
   case 149:
-#line 584 "ds9parser.Y"
+#line 582 "ds9parser.Y"
     {(yyval.integer) = CallBack::UNSELECTCB;;}
     break;
 
   case 150:
-#line 585 "ds9parser.Y"
+#line 583 "ds9parser.Y"
     {(yyval.integer) = CallBack::HIGHLITECB;;}
     break;
 
   case 151:
-#line 586 "ds9parser.Y"
+#line 584 "ds9parser.Y"
     {(yyval.integer) = CallBack::UNHIGHLITECB;;}
     break;
 
   case 152:
-#line 587 "ds9parser.Y"
+#line 585 "ds9parser.Y"
     {(yyval.integer) = CallBack::MOVEBEGINCB;;}
     break;
 
   case 153:
-#line 588 "ds9parser.Y"
+#line 586 "ds9parser.Y"
     {(yyval.integer) = CallBack::MOVECB;;}
     break;
 
   case 154:
-#line 589 "ds9parser.Y"
+#line 587 "ds9parser.Y"
     {(yyval.integer) = CallBack::MOVEENDCB;;}
     break;
 
   case 155:
-#line 590 "ds9parser.Y"
+#line 588 "ds9parser.Y"
     {(yyval.integer) = CallBack::EDITBEGINCB;;}
     break;
 
   case 156:
-#line 591 "ds9parser.Y"
+#line 589 "ds9parser.Y"
     {(yyval.integer) = CallBack::EDITCB;;}
     break;
 
   case 157:
-#line 592 "ds9parser.Y"
+#line 590 "ds9parser.Y"
     {(yyval.integer) = CallBack::EDITENDCB;;}
     break;
 
   case 158:
-#line 593 "ds9parser.Y"
+#line 591 "ds9parser.Y"
     {(yyval.integer) = CallBack::ROTATEBEGINCB;;}
     break;
 
   case 159:
-#line 594 "ds9parser.Y"
+#line 592 "ds9parser.Y"
     {(yyval.integer) = CallBack::ROTATECB;;}
     break;
 
   case 160:
-#line 595 "ds9parser.Y"
+#line 593 "ds9parser.Y"
     {(yyval.integer) = CallBack::ROTATEENDCB;;}
     break;
 
   case 161:
-#line 596 "ds9parser.Y"
+#line 594 "ds9parser.Y"
     {(yyval.integer) = CallBack::DELETECB;;}
     break;
 
   case 162:
-#line 597 "ds9parser.Y"
+#line 595 "ds9parser.Y"
     {(yyval.integer) = CallBack::TEXTCB;;}
     break;
 
   case 163:
-#line 598 "ds9parser.Y"
+#line 596 "ds9parser.Y"
     {(yyval.integer) = CallBack::COLORCB;;}
     break;
 
   case 164:
-#line 599 "ds9parser.Y"
+#line 597 "ds9parser.Y"
     {(yyval.integer) = CallBack::LINEWIDTHCB;;}
     break;
 
   case 165:
-#line 600 "ds9parser.Y"
+#line 598 "ds9parser.Y"
     {(yyval.integer) = CallBack::PROPERTYCB;;}
     break;
 
   case 166:
-#line 601 "ds9parser.Y"
+#line 599 "ds9parser.Y"
     {(yyval.integer) = CallBack::FONTCB;;}
     break;
 
   case 167:
-#line 602 "ds9parser.Y"
+#line 600 "ds9parser.Y"
     {(yyval.integer) = CallBack::KEYCB;;}
     break;
 
   case 168:
-#line 603 "ds9parser.Y"
+#line 601 "ds9parser.Y"
     {(yyval.integer) = CallBack::UPDATECB;;}
     break;
 
   case 171:
-#line 611 "ds9parser.Y"
+#line 609 "ds9parser.Y"
     {
 	  setProps(&globalProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));
 	  setProps(&localProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));
@@ -3548,7 +3545,7 @@ yyreduce:
     break;
 
   case 172:
-#line 616 "ds9parser.Y"
+#line 614 "ds9parser.Y"
     {
 	  strncpy(globalColor,(yyvsp[(3) - (3)].str),16);
 	  strncpy(localColor,(yyvsp[(3) - (3)].str),16);
@@ -3556,7 +3553,7 @@ yyreduce:
     break;
 
   case 173:
-#line 620 "ds9parser.Y"
+#line 618 "ds9parser.Y"
     {
 	  strcpy(globalColor,"#");
 	  strncat(globalColor,(yyvsp[(4) - (4)].str),16);
@@ -3565,7 +3562,7 @@ yyreduce:
     break;
 
   case 174:
-#line 626 "ds9parser.Y"
+#line 624 "ds9parser.Y"
     {
 	  globalDash[0] = localDash[0] =(yyvsp[(3) - (4)].integer);
 	  globalDash[1] = localDash[1] =(yyvsp[(4) - (4)].integer);
@@ -3573,12 +3570,12 @@ yyreduce:
     break;
 
   case 175:
-#line 630 "ds9parser.Y"
+#line 628 "ds9parser.Y"
     {globalWidth = localWidth = (yyvsp[(3) - (3)].integer);;}
     break;
 
   case 176:
-#line 632 "ds9parser.Y"
+#line 630 "ds9parser.Y"
     {
 	  strncpy(globalFont,(yyvsp[(3) - (3)].str),32);
 	  strncpy(localFont,(yyvsp[(3) - (3)].str),32);
@@ -3586,7 +3583,7 @@ yyreduce:
     break;
 
   case 177:
-#line 637 "ds9parser.Y"
+#line 635 "ds9parser.Y"
     {
 	  strncpy(globalText,(yyvsp[(3) - (3)].str),80);
 	  strncpy(localText,(yyvsp[(3) - (3)].str),80);
@@ -3594,7 +3591,7 @@ yyreduce:
     break;
 
   case 178:
-#line 642 "ds9parser.Y"
+#line 640 "ds9parser.Y"
     {
 	  setProps(&globalProps,Marker::DASH,1);
 	  setProps(&localProps,Marker::DASH,1);
@@ -3602,7 +3599,7 @@ yyreduce:
     break;
 
   case 179:
-#line 647 "ds9parser.Y"
+#line 645 "ds9parser.Y"
     {
 	  setProps(&globalProps,Marker::SOURCE,1);
 	  setProps(&localProps,Marker::SOURCE,1);
@@ -3610,7 +3607,7 @@ yyreduce:
     break;
 
   case 180:
-#line 652 "ds9parser.Y"
+#line 650 "ds9parser.Y"
     {
 	  setProps(&globalProps,Marker::SOURCE,0);
 	  setProps(&localProps,Marker::SOURCE,0);
@@ -3618,12 +3615,12 @@ yyreduce:
     break;
 
   case 181:
-#line 656 "ds9parser.Y"
+#line 654 "ds9parser.Y"
     {globalPoint = localPoint = (yyvsp[(3) - (3)].integer);;}
     break;
 
   case 182:
-#line 658 "ds9parser.Y"
+#line 656 "ds9parser.Y"
     {
 	  globalPoint = localPoint = (yyvsp[(3) - (4)].integer);
 	  globalPointSize = localPointSize = (yyvsp[(4) - (4)].integer);
@@ -3631,7 +3628,7 @@ yyreduce:
     break;
 
   case 183:
-#line 663 "ds9parser.Y"
+#line 661 "ds9parser.Y"
     {
 	  globalLine1 = localLine1 = (yyvsp[(3) - (4)].integer);
 	  globalLine2 = localLine2 = (yyvsp[(4) - (4)].integer);
@@ -3639,24 +3636,24 @@ yyreduce:
     break;
 
   case 184:
-#line 667 "ds9parser.Y"
+#line 665 "ds9parser.Y"
     {globalVector = localVector = (yyvsp[(3) - (3)].integer);;}
     break;
 
   case 185:
-#line 669 "ds9parser.Y"
+#line 667 "ds9parser.Y"
     {
 	  globalComposite = localComposite = (yyvsp[(3) - (3)].integer);
 	;}
     break;
 
   case 186:
-#line 672 "ds9parser.Y"
+#line 670 "ds9parser.Y"
     {;}
     break;
 
   case 187:
-#line 674 "ds9parser.Y"
+#line 672 "ds9parser.Y"
     {
 	  strncpy(globalCompassNorth,(yyvsp[(4) - (7)].str),80);
 	  strncpy(globalCompassEast,(yyvsp[(5) - (7)].str),80);
@@ -3668,147 +3665,147 @@ yyreduce:
     break;
 
   case 188:
-#line 682 "ds9parser.Y"
+#line 680 "ds9parser.Y"
     {globalTextAngle = localTextAngle = (yyvsp[(3) - (3)].real);;}
     break;
 
   case 189:
-#line 683 "ds9parser.Y"
+#line 681 "ds9parser.Y"
     {globalTextRotate = localTextRotate = (yyvsp[(3) - (3)].integer);;}
     break;
 
   case 190:
-#line 684 "ds9parser.Y"
-    {globalWCS = (CoordSystem)(yyvsp[(3) - (3)].integer);;}
+#line 682 "ds9parser.Y"
+    {globalWCS = (Coord::CoordSystem)(yyvsp[(3) - (3)].integer);;}
     break;
 
   case 191:
-#line 688 "ds9parser.Y"
+#line 686 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (4)].integer);
-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(2) - (4)].integer);
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(3) - (4)].integer);
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)(yyvsp[(4) - (4)].integer);
+	  globalRulerCoordSystem = localRulerCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (4)].integer);
+	  globalRulerSkyFrame = localRulerSkyFrame = (Coord::SkyFrame)(yyvsp[(2) - (4)].integer);
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(3) - (4)].integer);
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)(yyvsp[(4) - (4)].integer);
 	;}
     break;
 
   case 192:
-#line 695 "ds9parser.Y"
+#line 693 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (2)].integer);
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(2) - (2)].integer);
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 193:
-#line 702 "ds9parser.Y"
+#line 700 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)(yyvsp[(2) - (2)].integer);
+	  globalRulerCoordSystem = localRulerCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (2)].integer);
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 194:
-#line 709 "ds9parser.Y"
+#line 707 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = (Coord::SkyFrame)(yyvsp[(1) - (2)].integer);
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(2) - (2)].integer);
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 195:
-#line 716 "ds9parser.Y"
+#line 714 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)(yyvsp[(2) - (2)].integer);
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = (Coord::SkyFrame)(yyvsp[(1) - (2)].integer);
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 196:
-#line 723 "ds9parser.Y"
+#line 721 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(2) - (2)].integer);
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 197:
-#line 730 "ds9parser.Y"
+#line 728 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)(yyvsp[(2) - (2)].integer);
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 198:
-#line 737 "ds9parser.Y"
+#line 735 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = IMAGE;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)(yyvsp[(1) - (1)].integer);
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::IMAGE;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)(yyvsp[(1) - (1)].integer);
 	;}
     break;
 
   case 199:
-#line 744 "ds9parser.Y"
+#line 742 "ds9parser.Y"
     {
-	  globalRulerCoordSystem = localRulerCoordSystem = IMAGE;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = IMAGE;
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::IMAGE;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::IMAGE;
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 200:
-#line 753 "ds9parser.Y"
+#line 751 "ds9parser.Y"
     {
-	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)(yyvsp[(2) - (2)].integer);
+	  globalCompassCoordSystem = localCompassCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (2)].integer);
+	  globalCompassSkyFrame = localCompassSkyFrame = (Coord::SkyFrame)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 201:
-#line 758 "ds9parser.Y"
+#line 756 "ds9parser.Y"
     {
-	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);
-	  globalCompassSkyFrame = localCompassSkyFrame = FK5;
+	  globalCompassCoordSystem = localCompassCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (1)].integer);
+	  globalCompassSkyFrame = localCompassSkyFrame = Coord::FK5;
 	;}
     break;
 
   case 202:
-#line 763 "ds9parser.Y"
+#line 761 "ds9parser.Y"
     {
-	  globalCompassCoordSystem = localCompassCoordSystem = WCS;
-	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)(yyvsp[(1) - (1)].integer);
+	  globalCompassCoordSystem = localCompassCoordSystem = Coord::WCS;
+	  globalCompassSkyFrame = localCompassSkyFrame = (Coord::SkyFrame)(yyvsp[(1) - (1)].integer);
 	;}
     break;
 
   case 203:
-#line 768 "ds9parser.Y"
+#line 766 "ds9parser.Y"
     {
-	  globalCompassCoordSystem = localCompassCoordSystem = WCS;
-	  globalCompassSkyFrame = localCompassSkyFrame = FK5;
+	  globalCompassCoordSystem = localCompassCoordSystem = Coord::WCS;
+	  globalCompassSkyFrame = localCompassSkyFrame = Coord::FK5;
 	;}
     break;
 
   case 204:
-#line 774 "ds9parser.Y"
+#line 772 "ds9parser.Y"
     {
 	  // global properties
-	  globalSystem = PHYSICAL;
+	  globalSystem = Coord::PHYSICAL;
 	  globalWCS = fr->wcsSystem();
 	  globalSky = fr->wcsSky();
 	  globalTile = 1;
@@ -3828,17 +3825,17 @@ yyreduce:
 	  globalLine2 = 0;
 	  globalVector = 1;
 	  globalComposite = 1;
-	  globalRulerCoordSystem = PHYSICAL;
-	  globalRulerSkyFrame = FK5;
-	  globalRulerDistSystem = PHYSICAL;
-	  globalRulerDistFormat = DEGREE;
-	  globalCompassCoordSystem = PHYSICAL;
-	  globalCompassSkyFrame = FK5;
+	  globalRulerCoordSystem = Coord::PHYSICAL;
+	  globalRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = Coord::PHYSICAL;
+	  globalRulerDistFormat = Coord::DEGREE;
+	  globalCompassCoordSystem = Coord::PHYSICAL;
+	  globalCompassSkyFrame = Coord::FK5;
 	  strcpy(globalCompassNorth,"N");
 	  strcpy(globalCompassEast,"E");
 	  globalCompassNArrow = 1;
 	  globalCompassEArrow = 1;
-	  globalPoint = BOXCIRCLE;
+	  globalPoint = Point::BOXCIRCLE;
 	  globalPointSize = POINTSIZE;
 	  globalTextAngle=0;
 	  globalTextRotate=1;
@@ -3849,17 +3846,17 @@ yyreduce:
     break;
 
   case 207:
-#line 820 "ds9parser.Y"
+#line 818 "ds9parser.Y"
     {setProps(&localProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
   case 208:
-#line 821 "ds9parser.Y"
+#line 819 "ds9parser.Y"
     {strncpy(localColor,(yyvsp[(3) - (3)].str),16);;}
     break;
 
   case 209:
-#line 822 "ds9parser.Y"
+#line 820 "ds9parser.Y"
     {
 	  strcpy(localColor,"#");
 	  strncat(localColor,(yyvsp[(4) - (4)].str),16);
@@ -3867,7 +3864,7 @@ yyreduce:
     break;
 
   case 210:
-#line 827 "ds9parser.Y"
+#line 825 "ds9parser.Y"
     {
 	  localDash[0] =(yyvsp[(3) - (4)].integer);
 	  localDash[1] =(yyvsp[(4) - (4)].integer);
@@ -3875,73 +3872,73 @@ yyreduce:
     break;
 
   case 211:
-#line 831 "ds9parser.Y"
+#line 829 "ds9parser.Y"
     {localWidth = (yyvsp[(3) - (3)].integer);;}
     break;
 
   case 212:
-#line 832 "ds9parser.Y"
+#line 830 "ds9parser.Y"
     {strncpy(localFont,(yyvsp[(3) - (3)].str),32);;}
     break;
 
   case 213:
-#line 833 "ds9parser.Y"
+#line 831 "ds9parser.Y"
     {strncpy(localText,(yyvsp[(3) - (3)].str),80);;}
     break;
 
   case 214:
-#line 834 "ds9parser.Y"
+#line 832 "ds9parser.Y"
     {taglist.append(new Tag((yyvsp[(3) - (3)].str)));;}
     break;
 
   case 215:
-#line 835 "ds9parser.Y"
+#line 833 "ds9parser.Y"
     {cblist.append(
 	    new CallBack(fr->getInterp(),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str)));;}
     break;
 
   case 216:
-#line 837 "ds9parser.Y"
+#line 835 "ds9parser.Y"
     {setProps(&localProps,Marker::DASH,1);;}
     break;
 
   case 217:
-#line 838 "ds9parser.Y"
+#line 836 "ds9parser.Y"
     {setProps(&localProps,Marker::SOURCE,1);;}
     break;
 
   case 218:
-#line 839 "ds9parser.Y"
+#line 837 "ds9parser.Y"
     {setProps(&localProps,Marker::SOURCE,0);;}
     break;
 
   case 219:
-#line 841 "ds9parser.Y"
+#line 839 "ds9parser.Y"
     {localPoint = (yyvsp[(3) - (3)].integer);;}
     break;
 
   case 220:
-#line 842 "ds9parser.Y"
+#line 840 "ds9parser.Y"
     {localPoint = (yyvsp[(3) - (4)].integer); localPointSize = (yyvsp[(4) - (4)].integer);;}
     break;
 
   case 221:
-#line 843 "ds9parser.Y"
+#line 841 "ds9parser.Y"
     {localLine1=(yyvsp[(3) - (4)].integer); localLine2=(yyvsp[(4) - (4)].integer);;}
     break;
 
   case 222:
-#line 844 "ds9parser.Y"
+#line 842 "ds9parser.Y"
     {localVector=(yyvsp[(3) - (3)].integer);;}
     break;
 
   case 223:
-#line 845 "ds9parser.Y"
+#line 843 "ds9parser.Y"
     {localComposite=(yyvsp[(3) - (3)].integer);;}
     break;
 
   case 225:
-#line 848 "ds9parser.Y"
+#line 846 "ds9parser.Y"
     {
 	  strncpy(localCompassNorth,(yyvsp[(4) - (7)].str),80);
 	  strncpy(localCompassEast,(yyvsp[(5) - (7)].str),80);
@@ -3951,184 +3948,184 @@ yyreduce:
     break;
 
   case 226:
-#line 854 "ds9parser.Y"
+#line 852 "ds9parser.Y"
     {localTextAngle=(yyvsp[(3) - (3)].real);;}
     break;
 
   case 227:
-#line 855 "ds9parser.Y"
+#line 853 "ds9parser.Y"
     {localTextRotate=(yyvsp[(3) - (3)].integer);;}
     break;
 
   case 231:
-#line 862 "ds9parser.Y"
+#line 860 "ds9parser.Y"
     {
-	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (4)].integer);
-	  localRulerSkyFrame = (SkyFrame)(yyvsp[(2) - (4)].integer);
-	  localRulerDistSystem = (CoordSystem)(yyvsp[(3) - (4)].integer);
-	  localRulerDistFormat = (SkyDist)(yyvsp[(4) - (4)].integer);
+	  localRulerCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (4)].integer);
+	  localRulerSkyFrame = (Coord::SkyFrame)(yyvsp[(2) - (4)].integer);
+	  localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(3) - (4)].integer);
+	  localRulerDistFormat = (Coord::SkyDist)(yyvsp[(4) - (4)].integer);
 	;}
     break;
 
   case 232:
-#line 869 "ds9parser.Y"
+#line 867 "ds9parser.Y"
     {
-	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (2)].integer);
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(2) - (2)].integer);
+	  localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 233:
-#line 876 "ds9parser.Y"
+#line 874 "ds9parser.Y"
     {
-	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)(yyvsp[(2) - (2)].integer);
+	  localRulerCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (2)].integer);
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 234:
-#line 883 "ds9parser.Y"
+#line 881 "ds9parser.Y"
     {
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
-	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = (Coord::SkyFrame)(yyvsp[(1) - (2)].integer);
+	  localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(2) - (2)].integer);
+	  localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 235:
-#line 890 "ds9parser.Y"
+#line 888 "ds9parser.Y"
     {
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)(yyvsp[(2) - (2)].integer);
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = (Coord::SkyFrame)(yyvsp[(1) - (2)].integer);
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 236:
-#line 897 "ds9parser.Y"
+#line 895 "ds9parser.Y"
     {
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = (Coord::CoordSystem)(yyvsp[(2) - (2)].integer);
+	  localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 237:
-#line 904 "ds9parser.Y"
+#line 902 "ds9parser.Y"
     {
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)(yyvsp[(2) - (2)].integer);
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 238:
-#line 911 "ds9parser.Y"
+#line 909 "ds9parser.Y"
     {
-	  localRulerCoordSystem = IMAGE;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)(yyvsp[(1) - (1)].integer);
+	  localRulerCoordSystem = Coord::IMAGE;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)(yyvsp[(1) - (1)].integer);
 	;}
     break;
 
   case 239:
-#line 918 "ds9parser.Y"
+#line 916 "ds9parser.Y"
     {
-	  localRulerCoordSystem = IMAGE;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = IMAGE;
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = Coord::IMAGE;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::IMAGE;
+	  localRulerDistFormat = Coord::DEGREE;
 	;}
     break;
 
   case 240:
-#line 927 "ds9parser.Y"
+#line 925 "ds9parser.Y"
     {
-	  localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-	  localCompassSkyFrame = (SkyFrame)(yyvsp[(2) - (2)].integer);
+	  localCompassCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (2)].integer);
+	  localCompassSkyFrame = (Coord::SkyFrame)(yyvsp[(2) - (2)].integer);
 	;}
     break;
 
   case 241:
-#line 932 "ds9parser.Y"
+#line 930 "ds9parser.Y"
     {
-	  localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);
-	  localCompassSkyFrame = FK5;
+	  localCompassCoordSystem = (Coord::CoordSystem)(yyvsp[(1) - (1)].integer);
+	  localCompassSkyFrame = Coord::FK5;
 	;}
     break;
 
   case 242:
-#line 937 "ds9parser.Y"
+#line 935 "ds9parser.Y"
     {
-	  localCompassCoordSystem = WCS;
-	  localCompassSkyFrame = (SkyFrame)(yyvsp[(1) - (1)].integer);
+	  localCompassCoordSystem = Coord::WCS;
+	  localCompassSkyFrame = (Coord::SkyFrame)(yyvsp[(1) - (1)].integer);
 	;}
     break;
 
   case 243:
-#line 942 "ds9parser.Y"
+#line 940 "ds9parser.Y"
     {
-	  localCompassCoordSystem = WCS;
-	  localCompassSkyFrame = FK5;
+	  localCompassCoordSystem = Coord::WCS;
+	  localCompassSkyFrame = Coord::FK5;
 	;}
     break;
 
   case 244:
-#line 948 "ds9parser.Y"
+#line 946 "ds9parser.Y"
     {aNum=0; aAngNum=0;;}
     break;
 
   case 245:
-#line 948 "ds9parser.Y"
+#line 946 "ds9parser.Y"
     {localCpanda = 2;;}
     break;
 
   case 246:
-#line 949 "ds9parser.Y"
+#line 947 "ds9parser.Y"
     {localCpanda=0;;}
     break;
 
   case 247:
-#line 952 "ds9parser.Y"
+#line 950 "ds9parser.Y"
     {aNum=0; aAngNum=0, aAngle=0;;}
     break;
 
   case 248:
-#line 953 "ds9parser.Y"
+#line 951 "ds9parser.Y"
     {aAngle=(yyvsp[(9) - (10)].real);localEpanda=2;;}
     break;
 
   case 249:
-#line 954 "ds9parser.Y"
+#line 952 "ds9parser.Y"
     {localEpanda=0;;}
     break;
 
   case 250:
-#line 957 "ds9parser.Y"
+#line 955 "ds9parser.Y"
     {aNum=0; aAngNum=0, aAngle=0;;}
     break;
 
   case 251:
-#line 958 "ds9parser.Y"
+#line 956 "ds9parser.Y"
     {aAngle=(yyvsp[(9) - (10)].real);localBpanda=2;;}
     break;
 
   case 252:
-#line 959 "ds9parser.Y"
+#line 957 "ds9parser.Y"
     {localBpanda=0;;}
     break;
 
   case 253:
-#line 962 "ds9parser.Y"
+#line 960 "ds9parser.Y"
     {
 	  // reset maperr flag
 	  maperr = 0;
@@ -4179,183 +4176,151 @@ yyreduce:
     break;
 
   case 254:
-#line 1011 "ds9parser.Y"
-    {(yyval.integer) = CIRCLE;;}
+#line 1009 "ds9parser.Y"
+    {(yyval.integer) = Point::CIRCLE;;}
     break;
 
   case 255:
-#line 1012 "ds9parser.Y"
-    {(yyval.integer) = BOX;;}
+#line 1010 "ds9parser.Y"
+    {(yyval.integer) = Point::BOX;;}
     break;
 
   case 256:
-#line 1013 "ds9parser.Y"
-    {(yyval.integer) = DIAMOND;;}
+#line 1011 "ds9parser.Y"
+    {(yyval.integer) = Point::DIAMOND;;}
     break;
 
   case 257:
-#line 1014 "ds9parser.Y"
-    {(yyval.integer) = CROSS;;}
+#line 1012 "ds9parser.Y"
+    {(yyval.integer) = Point::CROSS;;}
     break;
 
   case 258:
-#line 1015 "ds9parser.Y"
-    {(yyval.integer) = XPT;;}
+#line 1013 "ds9parser.Y"
+    {(yyval.integer) = Point::EX;;}
     break;
 
   case 259:
-#line 1016 "ds9parser.Y"
-    {(yyval.integer) = ARROW;;}
+#line 1014 "ds9parser.Y"
+    {(yyval.integer) = Point::ARROW;;}
     break;
 
   case 260:
-#line 1017 "ds9parser.Y"
-    {(yyval.integer) = BOXCIRCLE;;}
+#line 1015 "ds9parser.Y"
+    {(yyval.integer) = Point::BOXCIRCLE;;}
     break;
 
   case 261:
-#line 1020 "ds9parser.Y"
+#line 1018 "ds9parser.Y"
     {setProps(&localProps, Marker::INCLUDE, 1);;}
     break;
 
   case 262:
-#line 1021 "ds9parser.Y"
+#line 1019 "ds9parser.Y"
     {setProps(&localProps, Marker::INCLUDE, 0);;}
     break;
 
   case 263:
-#line 1025 "ds9parser.Y"
-    {fr->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
-	    localTextAngle,localTextRotate,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
+#line 1023 "ds9parser.Y"
+    {
+	  fr->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
+	  (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
+	  localVector,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
     break;
 
   case 264:
-#line 1030 "ds9parser.Y"
-    {fr->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    (yyvsp[(5) - (8)].real), localComposite,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
+#line 1031 "ds9parser.Y"
+    {
+	  fr->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
+	  localTextAngle,localTextRotate,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
     break;
 
   case 265:
-#line 1035 "ds9parser.Y"
-    {fr->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
-	    localVector,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
+#line 1038 "ds9parser.Y"
+    {
+	  fr->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  Vector((yyvsp[(5) - (8)].vector)),
+   	  localRulerCoordSystem, localRulerSkyFrame,
+	  localRulerDistSystem, localRulerDistFormat,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
     break;
 
   case 266:
-#line 1041 "ds9parser.Y"
+#line 1047 "ds9parser.Y"
     {
-	  // hard coded into projection.tcl
-	  fr->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    Vector((yyvsp[(5) - (10)].vector)),
-	    (yyvsp[(7) - (10)].real),
-	    "ProjectionPlotCB", "ProjectionPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  fr->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
+	  (yyvsp[(5) - (8)].real),
+	  localCompassNorth, localCompassEast, 
+	  localCompassNArrow, localCompassEArrow,
+   	  localCompassCoordSystem, localCompassSkyFrame,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	;}
     break;
 
   case 267:
-#line 1051 "ds9parser.Y"
-    {fr->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    Vector((yyvsp[(5) - (8)].vector)),
-   	    localRulerCoordSystem, localRulerSkyFrame,
-	    localRulerDistSystem, localRulerDistFormat,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
+#line 1057 "ds9parser.Y"
+    {
+	  fr->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)), 
+	  Vector((yyvsp[(5) - (10)].vector)),
+	  (yyvsp[(7) - (10)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
     break;
 
   case 268:
-#line 1058 "ds9parser.Y"
-    {fr->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
-	   (yyvsp[(5) - (8)].real),
-	   localCompassNorth, localCompassEast, 
-	   localCompassNArrow, localCompassEArrow,
-   	   localCompassCoordSystem, localCompassSkyFrame,
-	   localColor,localDash,localWidth,localFont,
-	   localText,localProps,localComment,taglist,cblist);;}
+#line 1065 "ds9parser.Y"
+    {
+	  // backward compatibility
+	  fr->createCircleCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  (yyvsp[(5) - (8)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
     break;
 
   case 269:
-#line 1066 "ds9parser.Y"
+#line 1073 "ds9parser.Y"
     {
-	  // hard coded into circle3d.tcl
-	  fr->createCircle3dCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    (yyvsp[(5) - (8)].real),
-	    "Circle3dPlotCB", "Circle3dPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  fr->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  (yyvsp[(5) - (8)].real), localComposite,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	;}
     break;
 
   case 270:
-#line 1077 "ds9parser.Y"
-    {fr->createCircleCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    (yyvsp[(5) - (8)].real),
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 271:
 #line 1082 "ds9parser.Y"
-    {fr->createAnnulusCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),1,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 272:
-#line 1088 "ds9parser.Y"
     {
-	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
-	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
-	  fr->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
-	    aNum,aAnnuli,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  fr->createCircleCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  (yyvsp[(5) - (8)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	;}
     break;
 
-  case 273:
-#line 1098 "ds9parser.Y"
-    {fr->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
-	    (yyvsp[(5) - (12)].real),(yyvsp[(7) - (12)].real),(yyvsp[(9) - (12)].integer),
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 274:
-#line 1104 "ds9parser.Y"
+  case 271:
+#line 1089 "ds9parser.Y"
     {
-	  switch (localCpanda) {
-	  case 0: /* ignore it */
-	    break;
-	  case 1: /* normal cpanda */
-	    fr->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
-	      (yyvsp[(5) - (18)].real),(yyvsp[(7) - (18)].real),(yyvsp[(9) - (18)].integer),
-	      (yyvsp[(11) - (18)].real),(yyvsp[(13) - (18)].real),(yyvsp[(15) - (18)].integer),
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  case 2: /* one of our special pandas */
-	    fr->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
-	      aAngNum,aAngles,
-	      aNum,aAnnuli,
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  }
+	  // backwards compatibility
+	  fr->createCircleCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  (yyvsp[(5) - (8)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	;}
     break;
 
-  case 275:
-#line 1126 "ds9parser.Y"
+  case 272:
+#line 1097 "ds9parser.Y"
     {
 	  // for ellipse annulus
 	  aStatus = 1;
@@ -4373,15 +4338,262 @@ yyreduce:
 	  aProps = localProps;
 
 	  fr->createEllipseCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    Vector((yyvsp[(5) - (10)].vector)),
-	    (yyvsp[(7) - (10)].real),
+	  Vector((yyvsp[(5) - (10)].vector)),
+	  (yyvsp[(7) - (10)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 273:
+#line 1120 "ds9parser.Y"
+    {
+	  // for box annulus
+	  aStatus = 3;
+	  aCenter = Vector((yyvsp[(3) - (10)].vector));
+	  aAngles[0] = (yyvsp[(7) - (10)].real);
+	  aVector[0] = Vector((yyvsp[(5) - (10)].vector));
+	  aNumsao = 1;
+	  strncpy(aColor,localColor,16);
+	  aDash[0] = localDash[0];
+	  aDash[1] = localDash[1];
+	  aWidth = localWidth;
+	  strncpy(aFont,localFont,32);
+	  strncpy(aText,localText,80);
+	  strncpy(aComment,localComment,80);
+	  aProps = localProps;
+
+	  fr->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
+	  Vector((yyvsp[(5) - (10)].vector)),
+	  (yyvsp[(7) - (10)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 274:
+#line 1143 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
+	  Vector((yyvsp[(5) - (10)].vector)),
+	  (yyvsp[(7) - (10)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 275:
+#line 1151 "ds9parser.Y"
+    {polylist.deleteAll();;}
+    break;
+
+  case 276:
+#line 1153 "ds9parser.Y"
+    {
+	  fr->createPolygonCmd(polylist, 
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 277:
+#line 1160 "ds9parser.Y"
+    {
+	  fr->createLineCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  Vector((yyvsp[(5) - (8)].vector)),
+	  localLine1,localLine2,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 278:
+#line 1168 "ds9parser.Y"
+    {
+	  fr->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
+	  (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
+	  localVector,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 279:
+#line 1176 "ds9parser.Y"
+    {
+	  fr->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
+	   localTextAngle,localTextRotate,
+	   localColor,localDash,localWidth,localFont,
+	   localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 280:
+#line 1182 "ds9parser.Y"
+    {strncpy(localText,(yyvsp[(5) - (6)].str),80);;}
+    break;
+
+  case 281:
+#line 1184 "ds9parser.Y"
+    {
+	  fr->createTextCmd(Vector((yyvsp[(3) - (9)].vector)),
+	  localTextAngle,localTextRotate,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 282:
+#line 1191 "ds9parser.Y"
+    {
+	  fr->createPointCmd(Vector((yyvsp[(3) - (6)].vector)), 
+	  (Point::PointShape)localPoint, localPointSize, 
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 283:
+#line 1198 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createPointCmd(Vector((yyvsp[(4) - (7)].vector)), Point::CIRCLE, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 284:
+#line 1205 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createPointCmd(Vector((yyvsp[(4) - (7)].vector)), Point::BOX, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 285:
+#line 1212 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createPointCmd(Vector((yyvsp[(4) - (7)].vector)), Point::DIAMOND, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 286:
+#line 1219 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createPointCmd(Vector((yyvsp[(4) - (7)].vector)), Point::CROSS, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 287:
+#line 1226 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createPointCmd(Vector((yyvsp[(4) - (7)].vector)), Point::EX, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 288:
+#line 1233 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createPointCmd(Vector((yyvsp[(4) - (7)].vector)), Point::ARROW, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 289:
+#line 1240 "ds9parser.Y"
+    {
+	  // backwards compatibility
+	  fr->createPointCmd(Vector((yyvsp[(4) - (7)].vector)), Point::BOXCIRCLE, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 290:
+#line 1247 "ds9parser.Y"
+    {
+	  fr->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  Vector((yyvsp[(5) - (8)].vector)),
+   	  localRulerCoordSystem, localRulerSkyFrame,
+	  localRulerDistSystem, localRulerDistFormat,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 291:
+#line 1256 "ds9parser.Y"
+    {
+	  fr->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
+	  (yyvsp[(5) - (8)].real),
+	  localCompassNorth, localCompassEast, 
+	  localCompassNArrow, localCompassEArrow,
+   	  localCompassCoordSystem, localCompassSkyFrame,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 292:
+#line 1266 "ds9parser.Y"
+    {
+	  fr->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)),
+	  Vector((yyvsp[(5) - (10)].vector)),
+	  (yyvsp[(7) - (10)].real),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 293:
+#line 1274 "ds9parser.Y"
+    {
+	  fr->createAnnulusCmd(Vector((yyvsp[(3) - (10)].vector)),
+	  (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),1,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 294:
+#line 1282 "ds9parser.Y"
+    {
+	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
+	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
+	  fr->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
+	    aNum,aAnnuli,
 	    localColor,localDash,localWidth,localFont,
 	    localText,localProps,localComment,taglist,cblist);
 	;}
     break;
 
-  case 276:
-#line 1150 "ds9parser.Y"
+  case 295:
+#line 1292 "ds9parser.Y"
+    {
+	  fr->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
+	  (yyvsp[(5) - (12)].real),(yyvsp[(7) - (12)].real),(yyvsp[(9) - (12)].integer),
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	;}
+    break;
+
+  case 296:
+#line 1300 "ds9parser.Y"
     {
 	  // prefered syntax
 	  fr->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
@@ -4392,8 +4604,8 @@ yyreduce:
 	;}
     break;
 
-  case 277:
-#line 1160 "ds9parser.Y"
+  case 297:
+#line 1310 "ds9parser.Y"
     {
 	  // prefered syntax
 	  fr->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
@@ -4404,8 +4616,8 @@ yyreduce:
 	;}
     break;
 
-  case 278:
-#line 1170 "ds9parser.Y"
+  case 298:
+#line 1320 "ds9parser.Y"
     {
 	  // prefered syntax
 	  aVector[0] = Vector((yyvsp[(5) - (14)].vector));
@@ -4418,78 +4630,18 @@ yyreduce:
 	;}
     break;
 
-  case 279:
-#line 1183 "ds9parser.Y"
+  case 299:
+#line 1332 "ds9parser.Y"
     {	
+	  // backwards compatibility
 	  // old saoimage syntax
 	  aStatus = 2;
 	  aVector[aNumsao++] = Vector((yyvsp[(5) - (18)].vector));
 	;}
     break;
 
-  case 280:
-#line 1190 "ds9parser.Y"
-    {
-	  switch (localEpanda) {
-	  case 0: /* ignore it */
-	    break;
-	  case 1: /* normal epanda */
-	    fr->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
-	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
-	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
-	      (yyvsp[(17) - (20)].real),
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  case 2: /* one of our special pandas */
-	    fr->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
-	      aAngNum,aAngles,
-	      aNum,aVector,
-	      aAngle,
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  }
-	;}
-    break;
-
-  case 281:
-#line 1214 "ds9parser.Y"
-    {
-	  // for box annulus
-	  aStatus = 3;
-	  aCenter = Vector((yyvsp[(3) - (10)].vector));
-	  aAngles[0] = (yyvsp[(7) - (10)].real);
-	  aVector[0] = Vector((yyvsp[(5) - (10)].vector));
-	  aNumsao = 1;
-	  strncpy(aColor,localColor,16);
-	  aDash[0] = localDash[0];
-	  aDash[1] = localDash[1];
-	  aWidth = localWidth;
-	  strncpy(aFont,localFont,32);
-	  strncpy(aText,localText,80);
-	  strncpy(aComment,localComment,80);
-	  aProps = localProps;
-
-	  fr->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    Vector((yyvsp[(5) - (10)].vector)),
-	    (yyvsp[(7) - (10)].real),
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
-	;}
-    break;
-
-  case 282:
-#line 1237 "ds9parser.Y"
-    {fr->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    Vector((yyvsp[(5) - (10)].vector)),
-	    (yyvsp[(7) - (10)].real),
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 283:
-#line 1244 "ds9parser.Y"
+  case 300:
+#line 1340 "ds9parser.Y"
     {
 	  // prefered syntax
 	  fr->createBoxAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
@@ -4500,8 +4652,8 @@ yyreduce:
 	;}
     break;
 
-  case 284:
-#line 1254 "ds9parser.Y"
+  case 301:
+#line 1350 "ds9parser.Y"
     {
 	  // prefered syntax
 	  aVector[0] = Vector((yyvsp[(5) - (14)].vector));
@@ -4514,8 +4666,8 @@ yyreduce:
 	;}
     break;
 
-  case 285:
-#line 1266 "ds9parser.Y"
+  case 302:
+#line 1362 "ds9parser.Y"
     {
 	  // prefered syntax
 	  fr->createBoxAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
@@ -4526,34 +4678,33 @@ yyreduce:
 	;}
     break;
 
-  case 286:
-#line 1277 "ds9parser.Y"
+  case 303:
+#line 1372 "ds9parser.Y"
     {	
-	  // old saoimage syntax
+	  // backwards compatibility
+          // old saoimage syntax
 	  aStatus = 4;
 	  aVector[aNumsao++] = Vector((yyvsp[(5) - (18)].vector));
 	;}
     break;
 
-  case 287:
-#line 1284 "ds9parser.Y"
+  case 304:
+#line 1381 "ds9parser.Y"
     {
-	  switch (localBpanda) {
+	  switch (localCpanda) {
 	  case 0: /* ignore it */
 	    break;
-	  case 1: /* normal bpanda */
-	    fr->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
-	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
-	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
-	      (yyvsp[(17) - (20)].real),
+	  case 1: /* normal cpanda */
+	    fr->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
+	      (yyvsp[(5) - (18)].real),(yyvsp[(7) - (18)].real),(yyvsp[(9) - (18)].integer),
+	      (yyvsp[(11) - (18)].real),(yyvsp[(13) - (18)].real),(yyvsp[(15) - (18)].integer),
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
 	  case 2: /* one of our special pandas */
-	    fr->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
+	    fr->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
 	      aAngNum,aAngles,
-	      aNum,aVector,
-	      aAngle,
+	      aNum,aAnnuli,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
@@ -4561,51 +4712,51 @@ yyreduce:
 	;}
     break;
 
-  case 288:
-#line 1308 "ds9parser.Y"
-    {fr->createLineCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    Vector((yyvsp[(5) - (8)].vector)),
-	    localLine1,localLine2,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 289:
-#line 1315 "ds9parser.Y"
+  case 305:
+#line 1403 "ds9parser.Y"
     {
-	  switch (localPoint) {
-	  case CIRCLE:
-	    fr->createCirclePointCmd(Vector((yyvsp[(3) - (6)].vector)), localPointSize, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  case BOX:
-	    fr->createBoxPointCmd(Vector((yyvsp[(3) - (6)].vector)), localPointSize, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
+	  switch (localEpanda) {
+	  case 0: /* ignore it */
 	    break;
-	  case DIAMOND:
-	    fr->createDiamondPointCmd(Vector((yyvsp[(3) - (6)].vector)), localPointSize, 
+	  case 1: /* normal epanda */
+	    fr->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
+	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
+	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
+	      (yyvsp[(17) - (20)].real),
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
-	  case CROSS:
-	    fr->createCrossPointCmd(Vector((yyvsp[(3) - (6)].vector)), localPointSize, 
+	  case 2: /* one of our special pandas */
+	    fr->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
+	      aAngNum,aAngles,
+	      aNum,aVector,
+	      aAngle,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
-	  case XPT:
-	    fr->createExPointCmd(Vector((yyvsp[(3) - (6)].vector)), localPointSize, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
+	  }
+	;}
+    break;
+
+  case 306:
+#line 1427 "ds9parser.Y"
+    {
+	  switch (localBpanda) {
+	  case 0: /* ignore it */
 	    break;
-	  case ARROW:
-	    fr->createArrowPointCmd(Vector((yyvsp[(3) - (6)].vector)), localPointSize, 
+	  case 1: /* normal bpanda */
+	    fr->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
+	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
+	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
+	      (yyvsp[(17) - (20)].real),
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
-	  case BOXCIRCLE:
-	    fr->createBoxCirclePointCmd(Vector((yyvsp[(3) - (6)].vector)), localPointSize, 
+	  case 2: /* one of our special pandas */
+	    fr->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
+	      aAngNum,aAngles,
+	      aNum,aVector,
+	      aAngle,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
@@ -4613,158 +4764,23 @@ yyreduce:
 	;}
     break;
 
-  case 290:
-#line 1355 "ds9parser.Y"
-    {fr->createCirclePointCmd(Vector((yyvsp[(4) - (7)].vector)), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 291:
-#line 1359 "ds9parser.Y"
-    {fr->createBoxPointCmd(Vector((yyvsp[(4) - (7)].vector)), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 292:
-#line 1363 "ds9parser.Y"
-    {fr->createDiamondPointCmd(Vector((yyvsp[(4) - (7)].vector)), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 293:
-#line 1367 "ds9parser.Y"
-    {fr->createCrossPointCmd(Vector((yyvsp[(4) - (7)].vector)), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 294:
-#line 1371 "ds9parser.Y"
-    {fr->createExPointCmd(Vector((yyvsp[(4) - (7)].vector)), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 295:
-#line 1375 "ds9parser.Y"
-    {fr->createArrowPointCmd(Vector((yyvsp[(4) - (7)].vector)), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 296:
-#line 1379 "ds9parser.Y"
-    {fr->createBoxCirclePointCmd(Vector((yyvsp[(4) - (7)].vector)), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 297:
-#line 1383 "ds9parser.Y"
-    {polylist.deleteAll();;}
-    break;
-
-  case 298:
-#line 1385 "ds9parser.Y"
-    {fr->createPolygonCmd(polylist, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 303:
-#line 1396 "ds9parser.Y"
-    {fr->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
-	    localTextAngle,localTextRotate,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 304:
-#line 1400 "ds9parser.Y"
-    {strncpy(localText,(yyvsp[(5) - (6)].str),80);;}
-    break;
-
-  case 305:
-#line 1402 "ds9parser.Y"
-    {fr->createTextCmd(Vector((yyvsp[(3) - (9)].vector)),
-	    localTextAngle,localTextRotate,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 306:
-#line 1407 "ds9parser.Y"
-    {fr->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    (yyvsp[(5) - (8)].real), localComposite,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 307:
-#line 1412 "ds9parser.Y"
-    {fr->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
-	    localVector,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 308:
-#line 1418 "ds9parser.Y"
-    {
-	  // hard coded into projection.tcl
-	  fr->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)),
-	    Vector((yyvsp[(5) - (10)].vector)),
-	    (yyvsp[(7) - (10)].real),
-	    "ProjectionPlotCB", "ProjectionPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
-	;}
-    break;
-
-  case 309:
-#line 1428 "ds9parser.Y"
-    {fr->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    Vector((yyvsp[(5) - (8)].vector)),
-   	    localRulerCoordSystem, localRulerSkyFrame,
-	    localRulerDistSystem, localRulerDistFormat,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);;}
-    break;
-
-  case 310:
-#line 1435 "ds9parser.Y"
-    {fr->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
-	   (yyvsp[(5) - (8)].real),
-	   localCompassNorth, localCompassEast, 
-	   localCompassNArrow, localCompassEArrow,
-   	   localCompassCoordSystem, localCompassSkyFrame,
-	   localColor,localDash,localWidth,localFont,
-	   localText,localProps,localComment,taglist,cblist);;}
-    break;
-
   case 311:
-#line 1443 "ds9parser.Y"
+#line 1457 "ds9parser.Y"
     {
-	  // hard coded into circle3d.tcl
-	  fr->createCircle3dCmd(Vector((yyvsp[(3) - (8)].vector)),
-	    (yyvsp[(5) - (8)].real),
-	    "Circle3dPlotCB", "Circle3dPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  fr->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
+	  (yyvsp[(5) - (8)].real), localComposite,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	;}
     break;
 
   case 314:
-#line 1457 "ds9parser.Y"
+#line 1469 "ds9parser.Y"
     {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
     break;
 
   case 317:
-#line 1465 "ds9parser.Y"
+#line 1477 "ds9parser.Y"
     {
 	  if (aNum < MAXANNULI)
 	    aAnnuli[aNum++] = (yyvsp[(1) - (1)].real);
@@ -4772,7 +4788,7 @@ yyreduce:
     break;
 
   case 320:
-#line 1476 "ds9parser.Y"
+#line 1488 "ds9parser.Y"
     {
 	  if (aAngNum < MAXANGLES)
 	    aAngles[aAngNum++] = (yyvsp[(1) - (1)].real);
@@ -4780,12 +4796,12 @@ yyreduce:
     break;
 
   case 323:
-#line 1486 "ds9parser.Y"
+#line 1498 "ds9parser.Y"
     {aVector[aNum++] = Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real));;}
     break;
 
   case 324:
-#line 1490 "ds9parser.Y"
+#line 1502 "ds9parser.Y"
     {
 	  // old style annulus
 	  switch (aStatus) {
@@ -4816,7 +4832,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 4820 "ds9parser.C"
+#line 4836 "ds9parser.C"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5030,7 +5046,7 @@ yyreturn:
 }
 
 
-#line 1517 "ds9parser.Y"
+#line 1529 "ds9parser.Y"
 
 
 static void setProps(unsigned short* props, unsigned short prop, int value)
@@ -5041,23 +5057,23 @@ static void setProps(unsigned short* props, unsigned short prop, int value)
     *props &= ~prop;
 }
 
-static CoordSystem checkWCSSystem()
+static Coord::CoordSystem checkWCSSystem()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return WCS;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::WCS;
   default:
    return localSystem;
   }
 }
 
-static SkyFrame checkWCSSky()
+static Coord::SkyFrame checkWCSSky()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return FK5;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::FK5;
   default:
    return localSky;
   }
diff --git a/saotk/frame/ds9parser.H b/saotk/frame/ds9parser.H
index dfa8fc8..4521f2a 100644
--- a/saotk/frame/ds9parser.H
+++ b/saotk/frame/ds9parser.H
@@ -113,57 +113,56 @@
      POINT_ = 329,
      POLYGON_ = 330,
      PROJECTION_ = 331,
-     PROJECTION3D_ = 332,
-     PROPERTY_ = 333,
-     ROTATE_ = 334,
-     ROTBOX_ = 335,
-     RULER_ = 336,
-     SELECT_ = 337,
-     SOURCE_ = 338,
-     SUPERGALACTIC_ = 339,
-     TAG_ = 340,
-     TEXT_ = 341,
-     TEXTANGLE_ = 342,
-     TEXTROTATE_ = 343,
-     TILE_ = 344,
-     TRUE_ = 345,
-     VECTOR_ = 346,
-     VERSION_ = 347,
-     UNHIGHLITE_ = 348,
-     UNSELECT_ = 349,
-     UPDATE_ = 350,
-     WCS_ = 351,
-     WCSA_ = 352,
-     WCSB_ = 353,
-     WCSC_ = 354,
-     WCSD_ = 355,
-     WCSE_ = 356,
-     WCSF_ = 357,
-     WCSG_ = 358,
-     WCSH_ = 359,
-     WCSI_ = 360,
-     WCSJ_ = 361,
-     WCSK_ = 362,
-     WCSL_ = 363,
-     WCSM_ = 364,
-     WCSN_ = 365,
-     WCSO_ = 366,
-     WCSP_ = 367,
-     WCSQ_ = 368,
-     WCSR_ = 369,
-     WCSS_ = 370,
-     WCST_ = 371,
-     WCSU_ = 372,
-     WCSV_ = 373,
-     WCSW_ = 374,
-     WCSX_ = 375,
-     WCSY_ = 376,
-     WCSZ_ = 377,
-     WCS0_ = 378,
-     WIDTH_ = 379,
-     X_ = 380,
-     Y_ = 381,
-     YES_ = 382
+     PROPERTY_ = 332,
+     ROTATE_ = 333,
+     ROTBOX_ = 334,
+     RULER_ = 335,
+     SELECT_ = 336,
+     SOURCE_ = 337,
+     SUPERGALACTIC_ = 338,
+     TAG_ = 339,
+     TEXT_ = 340,
+     TEXTANGLE_ = 341,
+     TEXTROTATE_ = 342,
+     TILE_ = 343,
+     TRUE_ = 344,
+     VECTOR_ = 345,
+     VERSION_ = 346,
+     UNHIGHLITE_ = 347,
+     UNSELECT_ = 348,
+     UPDATE_ = 349,
+     WCS_ = 350,
+     WCSA_ = 351,
+     WCSB_ = 352,
+     WCSC_ = 353,
+     WCSD_ = 354,
+     WCSE_ = 355,
+     WCSF_ = 356,
+     WCSG_ = 357,
+     WCSH_ = 358,
+     WCSI_ = 359,
+     WCSJ_ = 360,
+     WCSK_ = 361,
+     WCSL_ = 362,
+     WCSM_ = 363,
+     WCSN_ = 364,
+     WCSO_ = 365,
+     WCSP_ = 366,
+     WCSQ_ = 367,
+     WCSR_ = 368,
+     WCSS_ = 369,
+     WCST_ = 370,
+     WCSU_ = 371,
+     WCSV_ = 372,
+     WCSW_ = 373,
+     WCSX_ = 374,
+     WCSY_ = 375,
+     WCSZ_ = 376,
+     WCS0_ = 377,
+     WIDTH_ = 378,
+     X_ = 379,
+     Y_ = 380,
+     YES_ = 381
    };
 #endif
 /* Tokens.  */
@@ -241,64 +240,63 @@
 #define POINT_ 329
 #define POLYGON_ 330
 #define PROJECTION_ 331
-#define PROJECTION3D_ 332
-#define PROPERTY_ 333
-#define ROTATE_ 334
-#define ROTBOX_ 335
-#define RULER_ 336
-#define SELECT_ 337
-#define SOURCE_ 338
-#define SUPERGALACTIC_ 339
-#define TAG_ 340
-#define TEXT_ 341
-#define TEXTANGLE_ 342
-#define TEXTROTATE_ 343
-#define TILE_ 344
-#define TRUE_ 345
-#define VECTOR_ 346
-#define VERSION_ 347
-#define UNHIGHLITE_ 348
-#define UNSELECT_ 349
-#define UPDATE_ 350
-#define WCS_ 351
-#define WCSA_ 352
-#define WCSB_ 353
-#define WCSC_ 354
-#define WCSD_ 355
-#define WCSE_ 356
-#define WCSF_ 357
-#define WCSG_ 358
-#define WCSH_ 359
-#define WCSI_ 360
-#define WCSJ_ 361
-#define WCSK_ 362
-#define WCSL_ 363
-#define WCSM_ 364
-#define WCSN_ 365
-#define WCSO_ 366
-#define WCSP_ 367
-#define WCSQ_ 368
-#define WCSR_ 369
-#define WCSS_ 370
-#define WCST_ 371
-#define WCSU_ 372
-#define WCSV_ 373
-#define WCSW_ 374
-#define WCSX_ 375
-#define WCSY_ 376
-#define WCSZ_ 377
-#define WCS0_ 378
-#define WIDTH_ 379
-#define X_ 380
-#define Y_ 381
-#define YES_ 382
+#define PROPERTY_ 332
+#define ROTATE_ 333
+#define ROTBOX_ 334
+#define RULER_ 335
+#define SELECT_ 336
+#define SOURCE_ 337
+#define SUPERGALACTIC_ 338
+#define TAG_ 339
+#define TEXT_ 340
+#define TEXTANGLE_ 341
+#define TEXTROTATE_ 342
+#define TILE_ 343
+#define TRUE_ 344
+#define VECTOR_ 345
+#define VERSION_ 346
+#define UNHIGHLITE_ 347
+#define UNSELECT_ 348
+#define UPDATE_ 349
+#define WCS_ 350
+#define WCSA_ 351
+#define WCSB_ 352
+#define WCSC_ 353
+#define WCSD_ 354
+#define WCSE_ 355
+#define WCSF_ 356
+#define WCSG_ 357
+#define WCSH_ 358
+#define WCSI_ 359
+#define WCSJ_ 360
+#define WCSK_ 361
+#define WCSL_ 362
+#define WCSM_ 363
+#define WCSN_ 364
+#define WCSO_ 365
+#define WCSP_ 366
+#define WCSQ_ 367
+#define WCSR_ 368
+#define WCSS_ 369
+#define WCST_ 370
+#define WCSU_ 371
+#define WCSV_ 372
+#define WCSW_ 373
+#define WCSX_ 374
+#define WCSY_ 375
+#define WCSZ_ 376
+#define WCS0_ 377
+#define WIDTH_ 378
+#define X_ 379
+#define Y_ 380
+#define YES_ 381
 
 
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 136 "ds9parser.Y"
+#line 135 "ds9parser.Y"
 {
 #define MKBUFSIZE 2048
   double real;
@@ -307,7 +305,7 @@ typedef union YYSTYPE
   double vector[3];
 }
 /* Line 1529 of yacc.c.  */
-#line 311 "ds9parser.H"
+#line 309 "ds9parser.H"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
diff --git a/saotk/frame/ds9parser.Y b/saotk/frame/ds9parser.Y
index 95ed877..48eceff 100644
--- a/saotk/frame/ds9parser.Y
+++ b/saotk/frame/ds9parser.Y
@@ -20,6 +20,7 @@
 #include "base.h"
 #include "fitsimage.h"
 #include "basemarker.h"
+#include "point.h"
 
 #undef yyFlexLexer
 #define yyFlexLexer mkFlexLexer
@@ -29,11 +30,11 @@ extern int mklex(void*, mkFlexLexer*);
 extern void mkerror(Base*, mkFlexLexer*, const char*);
 extern void mkDiscard(int);
 
-static CoordSystem globalSystem;
-static CoordSystem globalWCS;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::CoordSystem globalWCS;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static int globalTile;
 
@@ -78,23 +79,23 @@ static double localTextAngle;
 static int globalTextRotate;
 static int localTextRotate;
 
-static CoordSystem globalRulerCoordSystem;
-static CoordSystem localRulerCoordSystem;
-static SkyFrame globalRulerSkyFrame;
-static SkyFrame localRulerSkyFrame;
-static CoordSystem globalRulerDistSystem;
-static CoordSystem localRulerDistSystem;
-static SkyDist globalRulerDistFormat;
-static SkyDist localRulerDistFormat;
-
-static CoordSystem globalCompassCoordSystem;
-static SkyFrame globalCompassSkyFrame;
+static Coord::CoordSystem globalRulerCoordSystem;
+static Coord::CoordSystem localRulerCoordSystem;
+static Coord::SkyFrame globalRulerSkyFrame;
+static Coord::SkyFrame localRulerSkyFrame;
+static Coord::CoordSystem globalRulerDistSystem;
+static Coord::CoordSystem localRulerDistSystem;
+static Coord::SkyDist globalRulerDistFormat;
+static Coord::SkyDist localRulerDistFormat;
+
+static Coord::CoordSystem globalCompassCoordSystem;
+static Coord::SkyFrame globalCompassSkyFrame;
 static char globalCompassNorth[80];
 static char globalCompassEast[80];
 static int globalCompassNArrow;
 static int globalCompassEArrow;
-static CoordSystem localCompassCoordSystem;
-static SkyFrame localCompassSkyFrame;
+static Coord::CoordSystem localCompassCoordSystem;
+static Coord::SkyFrame localCompassSkyFrame;
 static char localCompassNorth[80];
 static char localCompassEast[80];
 static int localCompassNArrow;
@@ -127,10 +128,8 @@ static char aText[80];
 static char aComment[80];
 
 static void setProps(unsigned short* props, unsigned short prop, int value);
-static CoordSystem checkWCSSystem();
-static SkyFrame checkWCSSky();
-
-enum {CIRCLE,BOX,DIAMOND,CROSS,XPT,ARROW,BOXCIRCLE};
+static Coord::CoordSystem checkWCSSystem();
+static Coord::SkyFrame checkWCSSky();
 %}
 
 %union {
@@ -158,7 +157,7 @@ enum {CIRCLE,BOX,DIAMOND,CROSS,XPT,ARROW,BOXCIRCLE};
 %type <integer> skyDist
 %type <integer> property
 %type <integer> callBack
-%type <integer> pointProp
+%type <integer> pointShape
 %type <integer> numberof
 
 %token <integer> INT
@@ -239,7 +238,6 @@ enum {CIRCLE,BOX,DIAMOND,CROSS,XPT,ARROW,BOXCIRCLE};
 %token POINT_
 %token POLYGON_
 %token PROJECTION_
-%token PROJECTION3D_
 %token PROPERTY_
 %token ROTATE_
 %token ROTBOX_
@@ -307,9 +305,9 @@ command : /* empty */
 	| GLOBAL_ global comment
 	| TILE_ INT {globalTile = $2;}
 
-	| coordSystem {globalSystem=(CoordSystem)$1;} comment
-	| skyFrame {globalSystem=globalWCS; globalSky=(SkyFrame)$1;} comment
-	| LINEAR_ {globalSystem=globalWCS; globalSky=FK5;} comment
+	| coordSystem {globalSystem=(Coord::CoordSystem)$1;} comment
+	| skyFrame {globalSystem=globalWCS; globalSky=(Coord::SkyFrame)$1;} comment
+	| LINEAR_ {globalSystem=globalWCS; globalSky=Coord::FK5;} comment
 
 	| initLocal shape
 	| initLocal include shape
@@ -391,52 +389,52 @@ angle	: numeric {$$ = fr->mapAngleToRef(degToRad($1),localSystem,localSky);}
 	| ANGRADIAN {$$ = fr->mapAngleToRef($1,localSystem,localSky);}
 	;
 
-value	: numeric {$$ = FITSPTR->mapLenToRef($1, localSystem, DEGREE);}
-	| PHYCOORD {$$ = FITSPTR->mapLenToRef($1, PHYSICAL);}
-	| IMGCOORD {$$ = FITSPTR->mapLenToRef($1, IMAGE);}
-	| ANGDEGREE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), DEGREE);}
-	| ARCMINUTE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), ARCMIN);}
-	| ARCSECOND {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), ARCSEC);}
+value	: numeric {$$ = FITSPTR->mapLenToRef($1, localSystem, Coord::DEGREE);}
+	| PHYCOORD {$$ = FITSPTR->mapLenToRef($1, Coord::PHYSICAL);}
+	| IMGCOORD {$$ = FITSPTR->mapLenToRef($1, Coord::IMAGE);}
+	| ANGDEGREE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), Coord::DEGREE);}
+	| ARCMINUTE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), Coord::ARCMIN);}
+	| ARCSECOND {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), Coord::ARCSEC);}
 	;
 
 vvalue	: numeric sp numeric 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), localSystem, DEGREE);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), localSystem, Coord::DEGREE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| PHYCOORD sp PHYCOORD 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), PHYSICAL);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::PHYSICAL);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| IMGCOORD sp IMGCOORD 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::IMAGE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ANGDEGREE sp ANGDEGREE
 	{
-	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),DEGREE);
+	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),Coord::DEGREE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ARCMINUTE sp ARCMINUTE 
 	{
-	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),ARCMIN);
+	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),Coord::ARCMIN);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ARCSECOND sp ARCSECOND 
 	{
-	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),ARCSEC);
+	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),Coord::ARCSEC);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
@@ -458,9 +456,9 @@ dms	: DMSSTR {$$ = parseDMSStr($1);}
 coord	: sexagesimal sp sexagesimal
 	{
 	  Vector r;
-	  CoordSystem sys = checkWCSSystem();
-	  SkyFrame sky = checkWCSSky();
-	  if (sky == GALACTIC || sky == ECLIPTIC) 
+	  Coord::CoordSystem sys = checkWCSSystem();
+	  Coord::SkyFrame sky = checkWCSSky();
+	  if (sky == Coord::GALACTIC || sky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector($1,$3), sys, sky);
 	  else
 	    r = FITSPTR->mapToRef(Vector($1*360./24.,$3), sys, sky);
@@ -501,71 +499,71 @@ coord	: sexagesimal sp sexagesimal
 	}
 	| IMGCOORD sp IMGCOORD
 	{
-	  Vector r = FITSPTR->mapToRef(Vector($1,$3), IMAGE);
+	  Vector r = FITSPTR->mapToRef(Vector($1,$3), Coord::IMAGE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| PHYCOORD sp PHYCOORD
 	{
-	  Vector r = FITSPTR->mapToRef(Vector($1,$3), PHYSICAL);
+	  Vector r = FITSPTR->mapToRef(Vector($1,$3), Coord::PHYSICAL);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	}
 	;
 
-coordSystem :IMAGE_ {$$ = IMAGE;}
-	| PHYSICAL_ {$$ = PHYSICAL;}
-	| DETECTOR_ {$$ = DETECTOR;}
-	| AMPLIFIER_ {$$ = AMPLIFIER;}
-	| wcsSystem {$$ = $1; globalWCS = (CoordSystem)$1;}
+coordSystem :IMAGE_ {$$ = Coord::IMAGE;}
+	| PHYSICAL_ {$$ = Coord::PHYSICAL;}
+	| DETECTOR_ {$$ = Coord::DETECTOR;}
+	| AMPLIFIER_ {$$ = Coord::AMPLIFIER;}
+	| wcsSystem {$$ = $1; globalWCS = (Coord::CoordSystem)$1;}
 	;
 
-wcsSystem : WCS_ {$$ = WCS;}
-	| WCSA_ {$$ = WCSA;}
-	| WCSB_ {$$ = WCSB;}
-	| WCSC_ {$$ = WCSC;}
-	| WCSD_ {$$ = WCSD;}
-	| WCSE_ {$$ = WCSE;}
-	| WCSF_ {$$ = WCSF;}
-	| WCSG_ {$$ = WCSG;}
-	| WCSH_ {$$ = WCSH;}
-	| WCSI_ {$$ = WCSI;}
-	| WCSJ_ {$$ = WCSJ;}
-	| WCSK_ {$$ = WCSK;}
-	| WCSL_ {$$ = WCSL;}
-	| WCSM_ {$$ = WCSM;}
-	| WCSN_ {$$ = WCSN;}
-	| WCSO_ {$$ = WCSO;}
-	| WCSP_ {$$ = WCSP;}
-	| WCSQ_ {$$ = WCSQ;}
-	| WCSR_ {$$ = WCSR;}
-	| WCSS_ {$$ = WCSS;}
-	| WCST_ {$$ = WCST;}
-	| WCSU_ {$$ = WCSU;}
-	| WCSV_ {$$ = WCSV;}
-	| WCSW_ {$$ = WCSW;}
-	| WCSX_ {$$ = WCSX;}
-	| WCSY_ {$$ = WCSY;}
-	| WCSZ_ {$$ = WCSZ;}
-	| WCS0_ {$$ = WCS0;}
+wcsSystem : WCS_ {$$ = Coord::WCS;}
+	| WCSA_ {$$ = Coord::WCSA;}
+	| WCSB_ {$$ = Coord::WCSB;}
+	| WCSC_ {$$ = Coord::WCSC;}
+	| WCSD_ {$$ = Coord::WCSD;}
+	| WCSE_ {$$ = Coord::WCSE;}
+	| WCSF_ {$$ = Coord::WCSF;}
+	| WCSG_ {$$ = Coord::WCSG;}
+	| WCSH_ {$$ = Coord::WCSH;}
+	| WCSI_ {$$ = Coord::WCSI;}
+	| WCSJ_ {$$ = Coord::WCSJ;}
+	| WCSK_ {$$ = Coord::WCSK;}
+	| WCSL_ {$$ = Coord::WCSL;}
+	| WCSM_ {$$ = Coord::WCSM;}
+	| WCSN_ {$$ = Coord::WCSN;}
+	| WCSO_ {$$ = Coord::WCSO;}
+	| WCSP_ {$$ = Coord::WCSP;}
+	| WCSQ_ {$$ = Coord::WCSQ;}
+	| WCSR_ {$$ = Coord::WCSR;}
+	| WCSS_ {$$ = Coord::WCSS;}
+	| WCST_ {$$ = Coord::WCST;}
+	| WCSU_ {$$ = Coord::WCSU;}
+	| WCSV_ {$$ = Coord::WCSV;}
+	| WCSW_ {$$ = Coord::WCSW;}
+	| WCSX_ {$$ = Coord::WCSX;}
+	| WCSY_ {$$ = Coord::WCSY;}
+	| WCSZ_ {$$ = Coord::WCSZ;}
+	| WCS0_ {$$ = Coord::WCS0;}
 	;
 
-skyFrame : FK4_ {$$ = FK4;}
-	| B1950_ {$$ = FK4;}
-	| FK4_NO_E_ {$$ = FK4_NO_E;}
-	| FK5_ {$$ = FK5;}
-	| J2000_ {$$ = FK5;}
-	| ICRS_ {$$ = ICRS;}
-	| GALACTIC_ {$$ = GALACTIC;}
-	| SUPERGALACTIC_ {$$ = SUPERGALACTIC;}
-	| ECLIPTIC_ {$$ = ECLIPTIC;}
-	| HELIOECLIPTIC_ {$$ = HELIOECLIPTIC;}
+skyFrame : FK4_ {$$ = Coord::FK4;}
+	| B1950_ {$$ = Coord::FK4;}
+	| FK4_NO_E_ {$$ = Coord::FK4_NO_E;}
+	| FK5_ {$$ = Coord::FK5;}
+	| J2000_ {$$ = Coord::FK5;}
+	| ICRS_ {$$ = Coord::ICRS;}
+	| GALACTIC_ {$$ = Coord::GALACTIC;}
+	| SUPERGALACTIC_ {$$ = Coord::SUPERGALACTIC;}
+	| ECLIPTIC_ {$$ = Coord::ECLIPTIC;}
+	| HELIOECLIPTIC_ {$$ = Coord::HELIOECLIPTIC;}
 	;
 
-skyDist : DEGREES_ {$$=DEGREE;}
-	| ARCMIN_ {$$=ARCMIN;}
-	| ARCSEC_ {$$=ARCSEC;}
+skyDist : DEGREES_ {$$=Coord::DEGREE;}
+	| ARCMIN_ {$$=Coord::ARCMIN;}
+	| ARCSEC_ {$$=Coord::ARCSEC;}
 	;
 
 property : SELECT_ {$$ = Marker::SELECT;}
@@ -653,8 +651,8 @@ globalProperty : property '=' yesno
 	  setProps(&globalProps,Marker::SOURCE,0);
 	  setProps(&localProps,Marker::SOURCE,0);
 	}
-	| POINT_ '=' pointProp {globalPoint = localPoint = $3;}
-	| POINT_ '=' pointProp INT 
+	| POINT_ '=' pointShape {globalPoint = localPoint = $3;}
+	| POINT_ '=' pointShape INT 
 	{
 	  globalPoint = localPoint = $3;
 	  globalPointSize = localPointSize = $4;
@@ -681,99 +679,99 @@ globalProperty : property '=' yesno
 	}
 	| TEXTANGLE_ '=' angle {globalTextAngle = localTextAngle = $3;}
 	| TEXTROTATE_ '=' INT {globalTextRotate = localTextRotate = $3;}
-	| WCS_ '=' wcsSystem {globalWCS = (CoordSystem)$3;}
+	| WCS_ '=' wcsSystem {globalWCS = (Coord::CoordSystem)$3;}
 	;
 
 globalRuler : coordSystem skyFrame coordSystem skyDist
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)$1;
-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)$2;
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)$3;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)$4;
+	  globalRulerCoordSystem = localRulerCoordSystem = (Coord::CoordSystem)$1;
+	  globalRulerSkyFrame = localRulerSkyFrame = (Coord::SkyFrame)$2;
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)$3;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)$4;
 	}
 	| coordSystem coordSystem
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)$1;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)$2;
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = (Coord::CoordSystem)$1;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)$2;
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	}
 	| coordSystem skyDist
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)$1;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)$2;
+	  globalRulerCoordSystem = localRulerCoordSystem = (Coord::CoordSystem)$1;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)$2;
 	}
 	| skyFrame coordSystem
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)$1;
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)$2;
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = (Coord::SkyFrame)$1;
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)$2;
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	}
 	| skyFrame skyDist
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)$1;
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)$2;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = (Coord::SkyFrame)$1;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)$2;
 	}
 	| LINEAR_ coordSystem
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)$2;
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = (Coord::CoordSystem)$2;
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	}
 	| LINEAR_ skyDist
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)$2;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::WCS;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)$2;
 	}
 	| skyDist
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = IMAGE;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = WCS;
-	  globalRulerDistFormat = localRulerDistFormat = (SkyDist)$1;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::IMAGE;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::WCS;
+	  globalRulerDistFormat = localRulerDistFormat = (Coord::SkyDist)$1;
 	}
 	| PIXELS_
 	{
-	  globalRulerCoordSystem = localRulerCoordSystem = IMAGE;
-	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
-	  globalRulerDistSystem = localRulerDistSystem = IMAGE;
-	  globalRulerDistFormat = localRulerDistFormat = DEGREE;
+	  globalRulerCoordSystem = localRulerCoordSystem = Coord::IMAGE;
+	  globalRulerSkyFrame = localRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = localRulerDistSystem = Coord::IMAGE;
+	  globalRulerDistFormat = localRulerDistFormat = Coord::DEGREE;
 	}
 	;
 
 globalCompass : coordSystem skyFrame
 	{
-	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)$1;
-	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)$2;
+	  globalCompassCoordSystem = localCompassCoordSystem = (Coord::CoordSystem)$1;
+	  globalCompassSkyFrame = localCompassSkyFrame = (Coord::SkyFrame)$2;
 	}
 	| coordSystem
 	{
-	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)$1;
-	  globalCompassSkyFrame = localCompassSkyFrame = FK5;
+	  globalCompassCoordSystem = localCompassCoordSystem = (Coord::CoordSystem)$1;
+	  globalCompassSkyFrame = localCompassSkyFrame = Coord::FK5;
 	}
 	| skyFrame
 	{
-	  globalCompassCoordSystem = localCompassCoordSystem = WCS;
-	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)$1;
+	  globalCompassCoordSystem = localCompassCoordSystem = Coord::WCS;
+	  globalCompassSkyFrame = localCompassSkyFrame = (Coord::SkyFrame)$1;
 	}
 	| LINEAR_
 	{
-	  globalCompassCoordSystem = localCompassCoordSystem = WCS;
-	  globalCompassSkyFrame = localCompassSkyFrame = FK5;
+	  globalCompassCoordSystem = localCompassCoordSystem = Coord::WCS;
+	  globalCompassSkyFrame = localCompassSkyFrame = Coord::FK5;
 	}
 	;
 
 initGlobal:{
 	  // global properties
-	  globalSystem = PHYSICAL;
+	  globalSystem = Coord::PHYSICAL;
 	  globalWCS = fr->wcsSystem();
 	  globalSky = fr->wcsSky();
 	  globalTile = 1;
@@ -793,17 +791,17 @@ initGlobal:{
 	  globalLine2 = 0;
 	  globalVector = 1;
 	  globalComposite = 1;
-	  globalRulerCoordSystem = PHYSICAL;
-	  globalRulerSkyFrame = FK5;
-	  globalRulerDistSystem = PHYSICAL;
-	  globalRulerDistFormat = DEGREE;
-	  globalCompassCoordSystem = PHYSICAL;
-	  globalCompassSkyFrame = FK5;
+	  globalRulerCoordSystem = Coord::PHYSICAL;
+	  globalRulerSkyFrame = Coord::FK5;
+	  globalRulerDistSystem = Coord::PHYSICAL;
+	  globalRulerDistFormat = Coord::DEGREE;
+	  globalCompassCoordSystem = Coord::PHYSICAL;
+	  globalCompassSkyFrame = Coord::FK5;
 	  strcpy(globalCompassNorth,"N");
 	  strcpy(globalCompassEast,"E");
 	  globalCompassNArrow = 1;
 	  globalCompassEArrow = 1;
-	  globalPoint = BOXCIRCLE;
+	  globalPoint = Point::BOXCIRCLE;
 	  globalPointSize = POINTSIZE;
 	  globalTextAngle=0;
 	  globalTextRotate=1;
@@ -838,8 +836,8 @@ localProperty : property '=' yesno {setProps(&localProps,$1,$3);}
 	| SOURCE_ {setProps(&localProps,Marker::SOURCE,1);}
 	| BACKGROUND_ {setProps(&localProps,Marker::SOURCE,0);}
 
-	| POINT_ '=' pointProp {localPoint = $3;}
-	| POINT_ '=' pointProp INT {localPoint = $3; localPointSize = $4;}
+	| POINT_ '=' pointShape {localPoint = $3;}
+	| POINT_ '=' pointShape INT {localPoint = $3; localPointSize = $4;}
 	| LINE_ '=' INT INT {localLine1=$3; localLine2=$4;}
 	| VECTOR_ '=' INT {localVector=$3;}
 	| COMPOSITE_ '=' INT {localComposite=$3;}
@@ -860,88 +858,88 @@ localProperty : property '=' yesno {setProps(&localProps,$1,$3);}
 
 localRuler : coordSystem skyFrame coordSystem skyDist
 	{
-	  localRulerCoordSystem = (CoordSystem)$1;
-	  localRulerSkyFrame = (SkyFrame)$2;
-	  localRulerDistSystem = (CoordSystem)$3;
-	  localRulerDistFormat = (SkyDist)$4;
+	  localRulerCoordSystem = (Coord::CoordSystem)$1;
+	  localRulerSkyFrame = (Coord::SkyFrame)$2;
+	  localRulerDistSystem = (Coord::CoordSystem)$3;
+	  localRulerDistFormat = (Coord::SkyDist)$4;
 	}
 	| coordSystem coordSystem
 	{
-	  localRulerCoordSystem = (CoordSystem)$1;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = (CoordSystem)$2;
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = (Coord::CoordSystem)$1;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = (Coord::CoordSystem)$2;
+	  localRulerDistFormat = Coord::DEGREE;
 	}
 	| coordSystem skyDist
 	{
-	  localRulerCoordSystem = (CoordSystem)$1;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)$2;
+	  localRulerCoordSystem = (Coord::CoordSystem)$1;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)$2;
 	}
 	| skyFrame coordSystem
 	{
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = (SkyFrame)$1;
-	  localRulerDistSystem = (CoordSystem)$2;
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = (Coord::SkyFrame)$1;
+	  localRulerDistSystem = (Coord::CoordSystem)$2;
+	  localRulerDistFormat = Coord::DEGREE;
 	}
 	| skyFrame skyDist
 	{
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = (SkyFrame)$1;
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)$2;
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = (Coord::SkyFrame)$1;
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)$2;
 	}
 	| LINEAR_ coordSystem
 	{
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = (CoordSystem)$2;
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = (Coord::CoordSystem)$2;
+	  localRulerDistFormat = Coord::DEGREE;
 	}
 	| LINEAR_ skyDist
 	{
-	  localRulerCoordSystem = WCS;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)$2;
+	  localRulerCoordSystem = Coord::WCS;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)$2;
 	}
 	| skyDist
 	{
-	  localRulerCoordSystem = IMAGE;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = WCS;
-	  localRulerDistFormat = (SkyDist)$1;
+	  localRulerCoordSystem = Coord::IMAGE;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::WCS;
+	  localRulerDistFormat = (Coord::SkyDist)$1;
 	}
 	| PIXELS_
 	{
-	  localRulerCoordSystem = IMAGE;
-	  localRulerSkyFrame = FK5;
-	  localRulerDistSystem = IMAGE;
-	  localRulerDistFormat = DEGREE;
+	  localRulerCoordSystem = Coord::IMAGE;
+	  localRulerSkyFrame = Coord::FK5;
+	  localRulerDistSystem = Coord::IMAGE;
+	  localRulerDistFormat = Coord::DEGREE;
 	}
 	;
 
 localCompass : coordSystem skyFrame
 	{
-	  localCompassCoordSystem = (CoordSystem)$1;
-	  localCompassSkyFrame = (SkyFrame)$2;
+	  localCompassCoordSystem = (Coord::CoordSystem)$1;
+	  localCompassSkyFrame = (Coord::SkyFrame)$2;
 	}
 	| coordSystem
 	{
-	  localCompassCoordSystem = (CoordSystem)$1;
-	  localCompassSkyFrame = FK5;
+	  localCompassCoordSystem = (Coord::CoordSystem)$1;
+	  localCompassSkyFrame = Coord::FK5;
 	}
 	| skyFrame
 	{
-	  localCompassCoordSystem = WCS;
-	  localCompassSkyFrame = (SkyFrame)$1;
+	  localCompassCoordSystem = Coord::WCS;
+	  localCompassSkyFrame = (Coord::SkyFrame)$1;
 	}
 	| LINEAR_
 	{
-	  localCompassCoordSystem = WCS;
-	  localCompassSkyFrame = FK5;
+	  localCompassCoordSystem = Coord::WCS;
+	  localCompassSkyFrame = Coord::FK5;
 	}
 	;
 
@@ -1008,120 +1006,93 @@ initLocal : {
 	}
 	;
 
-pointProp : CIRCLE_ {$$ = CIRCLE;}
-	| BOX_ {$$ = BOX;}
-	| DIAMOND_ {$$ = DIAMOND;}
-	| CROSS_ {$$ = CROSS;}
-	| X_ {$$ = XPT;}
-	| ARROW_ {$$ = ARROW;}
-	| BOXCIRCLE_ {$$ = BOXCIRCLE;}
+pointShape : CIRCLE_ {$$ = Point::CIRCLE;}
+	| BOX_ {$$ = Point::BOX;}
+	| DIAMOND_ {$$ = Point::DIAMOND;}
+	| CROSS_ {$$ = Point::CROSS;}
+	| X_ {$$ = Point::EX;}
+	| ARROW_ {$$ = Point::ARROW;}
+	| BOXCIRCLE_ {$$ = Point::BOXCIRCLE;}
 	;
 
 include	: '+' {setProps(&localProps, Marker::INCLUDE, 1);}
 	| '-' {setProps(&localProps, Marker::INCLUDE, 0);}
 	;
 
-nonshape : TEXT_ bp coord ep conjuction nonshapeComment
-	  {fr->createTextCmd(Vector($3),
-	    localTextAngle,localTextRotate,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| COMPOSITE_ bp coord sp optangle ep conjuction nonshapeComment
-	  {fr->createCompositeCmd(Vector($3),
-	    $5, localComposite,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| VECTOR_ bp coord sp value sp angle ep conjuction nonshapeComment
-	  {fr->createVectCmd(Vector($3),
-	    $5,$7,
-	    localVector,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| PROJECTION_ bp coord sp coord sp value ep conjuction nonshapeComment
+nonshape : VECTOR_ bp coord sp value sp angle ep conjuction nonshapeComment
 	{
-	  // hard coded into projection.tcl
-	  fr->createProjectionCmd(Vector($3),
-	    Vector($5),
-	    $7,
-	    "ProjectionPlotCB", "ProjectionPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  fr->createVectCmd(Vector($3),
+	  $5,$7,
+	  localVector,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| TEXT_ bp coord ep conjuction nonshapeComment
+	{
+	  fr->createTextCmd(Vector($3),
+	  localTextAngle,localTextRotate,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	}
 	| RULER_ bp coord sp coord ep conjuction nonshapeComment
-	  {fr->createRulerCmd(Vector($3),
-	    Vector($5),
-   	    localRulerCoordSystem, localRulerSkyFrame,
-	    localRulerDistSystem, localRulerDistFormat,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
+	{
+	  fr->createRulerCmd(Vector($3),
+	  Vector($5),
+   	  localRulerCoordSystem, localRulerSkyFrame,
+	  localRulerDistSystem, localRulerDistFormat,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
 	| COMPASS_ bp coord sp value ep conjuction nonshapeComment
-	  {fr->createCompassCmd(Vector($3), 
-	   $5,
-	   localCompassNorth, localCompassEast, 
-	   localCompassNArrow, localCompassEArrow,
-   	   localCompassCoordSystem, localCompassSkyFrame,
-	   localColor,localDash,localWidth,localFont,
-	   localText,localProps,localComment,taglist,cblist);}
+	{
+	  fr->createCompassCmd(Vector($3), 
+	  $5,
+	  localCompassNorth, localCompassEast, 
+	  localCompassNArrow, localCompassEArrow,
+   	  localCompassCoordSystem, localCompassSkyFrame,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| PROJECTION_ bp coord sp coord sp value ep conjuction nonshapeComment
+	{
+	  fr->createProjectionCmd(Vector($3), 
+	  Vector($5),
+	  $7,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
 	| CIRCLE3D_ bp coord sp value ep conjuction nonshapeComment
 	{
-	  // hard coded into circle3d.tcl
-	  fr->createCircle3dCmd(Vector($3),
-	    $5,
-	    "Circle3dPlotCB", "Circle3dPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  // backward compatibility
+	  fr->createCircleCmd(Vector($3),
+	  $5,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| COMPOSITE_ bp coord sp optangle ep conjuction nonshapeComment
+	{
+	  fr->createCompositeCmd(Vector($3),
+	  $5, localComposite,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	}
 	;
 
 shape	: CIRCLE_ bp coord sp value ep conjuction shapeComment
-	  {fr->createCircleCmd(Vector($3),
-	    $5,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| ANNULUS_ bp coord sp value sp value ep conjuction shapeComment
-	  {fr->createAnnulusCmd(Vector($3),
-	    $5,$7,1,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| ANNULUS_ bp coord sp value sp value sp aRads ep conjuction 
-	    shapeComment
 	{
-	  aAnnuli[0] = $5;
-	  aAnnuli[1] = $7;
-	  fr->createAnnulusCmd(Vector($3),
-	    aNum,aAnnuli,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  fr->createCircleCmd(Vector($3),
+	  $5,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	}
-	| ANNULUS_ bp coord sp value sp value sp numberof ep conjuction 
-	    shapeComment
-	  {fr->createAnnulusCmd(Vector($3),
-	    $5,$7,$9,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| CPANDA_ bp coord sp angle sp angle sp INT sp 
-	    value sp value sp INT ep conjuction shapeComment
+	| CIRCLE3D_ bp coord sp value ep conjuction shapeComment
 	{
-	  switch (localCpanda) {
-	  case 0: /* ignore it */
-	    break;
-	  case 1: /* normal cpanda */
-	    fr->createCpandaCmd(Vector($3),
-	      $5,$7,$9,
-	      $11,$13,$15,
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  case 2: /* one of our special pandas */
-	    fr->createCpandaCmd(Vector($3),
-	      aAngNum,aAngles,
-	      aNum,aAnnuli,
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  }
+	  // backwards compatibility
+	  fr->createCircleCmd(Vector($3),
+	  $5,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	}
-
 	| ELLIPSE_ bp coord sp vvalue sp optangle ep conjuction shapeComment
 	{
 	  // for ellipse annulus
@@ -1140,11 +1111,190 @@ shape	: CIRCLE_ bp coord sp value ep conjuction shapeComment
 	  aProps = localProps;
 
 	  fr->createEllipseCmd(Vector($3),
-	    Vector($5),
-	    $7,
+	  Vector($5),
+	  $7,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| BOX_ bp coord sp vvalue sp optangle ep conjuction shapeComment
+	{
+	  // for box annulus
+	  aStatus = 3;
+	  aCenter = Vector($3);
+	  aAngles[0] = $7;
+	  aVector[0] = Vector($5);
+	  aNumsao = 1;
+	  strncpy(aColor,localColor,16);
+	  aDash[0] = localDash[0];
+	  aDash[1] = localDash[1];
+	  aWidth = localWidth;
+	  strncpy(aFont,localFont,32);
+	  strncpy(aText,localText,80);
+	  strncpy(aComment,localComment,80);
+	  aProps = localProps;
+
+	  fr->createBoxCmd(Vector($3),
+	  Vector($5),
+	  $7,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| ROTBOX_ bp coord sp vvalue sp optangle ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createBoxCmd(Vector($3),
+	  Vector($5),
+	  $7,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| POLYGON_ {polylist.deleteAll();} bp polyNodes ep conjuction 
+	    shapeComment
+	{
+	  fr->createPolygonCmd(polylist, 
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+
+	| LINE_ bp coord sp coord ep conjuction shapeComment
+	{
+	  fr->createLineCmd(Vector($3),
+	  Vector($5),
+	  localLine1,localLine2,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| VECTOR_ bp coord sp value sp angle ep conjuction shapeComment
+	{
+	  fr->createVectCmd(Vector($3),
+	  $5,$7,
+	  localVector,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+ 	| TEXT_ bp coord ep conjuction shapeComment
+	{
+	  fr->createTextCmd(Vector($3),
+	   localTextAngle,localTextRotate,
+	   localColor,localDash,localWidth,localFont,
+	   localText,localProps,localComment,taglist,cblist);
+	}
+	| TEXT_ bp coord sp STRING ep {strncpy(localText,$5,80);} conjuction 
+	    shapeComment
+	{
+	  fr->createTextCmd(Vector($3),
+	  localTextAngle,localTextRotate,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| POINT_ bp coord ep conjuction shapeComment 
+	{
+	  fr->createPointCmd(Vector($3), 
+	  (Point::PointShape)localPoint, localPointSize, 
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| CIRCLE_ POINT_ bp coord ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createPointCmd(Vector($4), Point::CIRCLE, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| BOX_ POINT_ bp coord ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createPointCmd(Vector($4), Point::BOX, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| DIAMOND_ POINT_ bp coord ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createPointCmd(Vector($4), Point::DIAMOND, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| CROSS_ POINT_ bp coord ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createPointCmd(Vector($4), Point::CROSS, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| X_ POINT_ bp coord ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createPointCmd(Vector($4), Point::EX, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| ARROW_ POINT_ bp coord ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createPointCmd(Vector($4), Point::ARROW, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| BOXCIRCLE_ POINT_ bp coord ep conjuction shapeComment
+	{
+	  // backwards compatibility
+	  fr->createPointCmd(Vector($4), Point::BOXCIRCLE, localPointSize,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| RULER_ bp coord sp coord ep conjuction shapeComment
+	{
+	  fr->createRulerCmd(Vector($3),
+	  Vector($5),
+   	  localRulerCoordSystem, localRulerSkyFrame,
+	  localRulerDistSystem, localRulerDistFormat,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| COMPASS_ bp coord sp value ep conjuction shapeComment
+	{
+	  fr->createCompassCmd(Vector($3), 
+	  $5,
+	  localCompassNorth, localCompassEast, 
+	  localCompassNArrow, localCompassEArrow,
+   	  localCompassCoordSystem, localCompassSkyFrame,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| PROJECTION_ bp coord sp coord sp value ep conjuction shapeComment
+	{
+	  fr->createProjectionCmd(Vector($3),
+	  Vector($5),
+	  $7,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| ANNULUS_ bp coord sp value sp value ep conjuction shapeComment
+	{
+	  fr->createAnnulusCmd(Vector($3),
+	  $5,$7,1,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
+	| ANNULUS_ bp coord sp value sp value sp aRads ep conjuction 
+	    shapeComment
+	{
+	  aAnnuli[0] = $5;
+	  aAnnuli[1] = $7;
+	  fr->createAnnulusCmd(Vector($3),
+	    aNum,aAnnuli,
 	    localColor,localDash,localWidth,localFont,
 	    localText,localProps,localComment,taglist,cblist);
 	}
+	| ANNULUS_ bp coord sp value sp value sp numberof ep conjuction 
+	    shapeComment
+	{
+	  fr->createAnnulusCmd(Vector($3),
+	  $5,$7,$9,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
+	}
 	| ELLIPSE_ bp coord sp vvalue sp vvalue sp optangle ep conjuction 
 	    shapeComment
 	{
@@ -1177,68 +1327,14 @@ shape	: CIRCLE_ bp coord sp value ep conjuction shapeComment
 	    localColor,localDash,localWidth,localFont,
 	    localText,localProps,localComment,taglist,cblist);
 	}
-
 	| ELLIPSE_ bp coord sp vvalue sp optangle ep '&' '!' 
 	  ELLIPSE_ bp coord sp vvalue sp optangle ep
 	{	
+	  // backwards compatibility
 	  // old saoimage syntax
 	  aStatus = 2;
 	  aVector[aNumsao++] = Vector($5);
 	}
-	| EPANDA_ bp coord sp angle sp angle sp INT sp 
-	    vvalue sp vvalue sp INT sp optangle ep conjuction shapeComment
-	{
-	  switch (localEpanda) {
-	  case 0: /* ignore it */
-	    break;
-	  case 1: /* normal epanda */
-	    fr->createEpandaCmd(Vector($3),
-	      $5,$7,$9,
-	      Vector($11),Vector($13),$15,
-	      $17,
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  case 2: /* one of our special pandas */
-	    fr->createEpandaCmd(Vector($3),
-	      aAngNum,aAngles,
-	      aNum,aVector,
-	      aAngle,
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  }
-	}
-
-	| BOX_ bp coord sp vvalue sp optangle ep conjuction shapeComment
-	{
-	  // for box annulus
-	  aStatus = 3;
-	  aCenter = Vector($3);
-	  aAngles[0] = $7;
-	  aVector[0] = Vector($5);
-	  aNumsao = 1;
-	  strncpy(aColor,localColor,16);
-	  aDash[0] = localDash[0];
-	  aDash[1] = localDash[1];
-	  aWidth = localWidth;
-	  strncpy(aFont,localFont,32);
-	  strncpy(aText,localText,80);
-	  strncpy(aComment,localComment,80);
-	  aProps = localProps;
-
-	  fr->createBoxCmd(Vector($3),
-	    Vector($5),
-	    $7,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
-	}
-	| ROTBOX_ bp coord sp vvalue sp optangle ep conjuction shapeComment
-	  {fr->createBoxCmd(Vector($3),
-	    Vector($5),
-	    $7,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
 	| BOX_ bp coord sp vvalue sp vvalue sp optangle ep conjuction 
 	    shapeComment
 	{
@@ -1271,120 +1367,85 @@ shape	: CIRCLE_ bp coord sp value ep conjuction shapeComment
 	    localColor,localDash,localWidth,localFont,
 	    localText,localProps,localComment,taglist,cblist);
 	}
-
 	| BOX_ bp coord sp vvalue sp optangle ep '&' '!' 
 	  BOX_ bp coord sp vvalue sp optangle ep
 	{	
-	  // old saoimage syntax
+	  // backwards compatibility
+          // old saoimage syntax
 	  aStatus = 4;
 	  aVector[aNumsao++] = Vector($5);
 	}
-	| BPANDA_ bp coord sp angle sp angle sp INT sp 
-	    vvalue sp vvalue sp INT sp optangle ep conjuction shapeComment
+
+	| CPANDA_ bp coord sp angle sp angle sp INT sp 
+	    value sp value sp INT ep conjuction shapeComment
 	{
-	  switch (localBpanda) {
+	  switch (localCpanda) {
 	  case 0: /* ignore it */
 	    break;
-	  case 1: /* normal bpanda */
-	    fr->createBpandaCmd(Vector($3),
+	  case 1: /* normal cpanda */
+	    fr->createCpandaCmd(Vector($3),
 	      $5,$7,$9,
-	      Vector($11),Vector($13),$15,
-	      $17,
+	      $11,$13,$15,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
 	  case 2: /* one of our special pandas */
-	    fr->createBpandaCmd(Vector($3),
+	    fr->createCpandaCmd(Vector($3),
 	      aAngNum,aAngles,
-	      aNum,aVector,
-	      aAngle,
+	      aNum,aAnnuli,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
 	  }
 	}
-
-	| LINE_ bp coord sp coord ep conjuction shapeComment
-	  {fr->createLineCmd(Vector($3),
-	    Vector($5),
-	    localLine1,localLine2,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-
-	| POINT_ bp coord ep conjuction shapeComment 
+	| EPANDA_ bp coord sp angle sp angle sp INT sp 
+	    vvalue sp vvalue sp INT sp optangle ep conjuction shapeComment
 	{
-	  switch (localPoint) {
-	  case CIRCLE:
-	    fr->createCirclePointCmd(Vector($3), localPointSize, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
-	    break;
-	  case BOX:
-	    fr->createBoxPointCmd(Vector($3), localPointSize, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
+	  switch (localEpanda) {
+	  case 0: /* ignore it */
 	    break;
-	  case DIAMOND:
-	    fr->createDiamondPointCmd(Vector($3), localPointSize, 
+	  case 1: /* normal epanda */
+	    fr->createEpandaCmd(Vector($3),
+	      $5,$7,$9,
+	      Vector($11),Vector($13),$15,
+	      $17,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
-	  case CROSS:
-	    fr->createCrossPointCmd(Vector($3), localPointSize, 
+	  case 2: /* one of our special pandas */
+	    fr->createEpandaCmd(Vector($3),
+	      aAngNum,aAngles,
+	      aNum,aVector,
+	      aAngle,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
-	  case XPT:
-	    fr->createExPointCmd(Vector($3), localPointSize, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);
+	  }
+	}
+	| BPANDA_ bp coord sp angle sp angle sp INT sp 
+	    vvalue sp vvalue sp INT sp optangle ep conjuction shapeComment
+	{
+	  switch (localBpanda) {
+	  case 0: /* ignore it */
 	    break;
-	  case ARROW:
-	    fr->createArrowPointCmd(Vector($3), localPointSize, 
+	  case 1: /* normal bpanda */
+	    fr->createBpandaCmd(Vector($3),
+	      $5,$7,$9,
+	      Vector($11),Vector($13),$15,
+	      $17,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
-	  case BOXCIRCLE:
-	    fr->createBoxCirclePointCmd(Vector($3), localPointSize, 
+	  case 2: /* one of our special pandas */
+	    fr->createBpandaCmd(Vector($3),
+	      aAngNum,aAngles,
+	      aNum,aVector,
+	      aAngle,
 	      localColor,localDash,localWidth,localFont,
 	      localText,localProps,localComment,taglist,cblist);
 	    break;
 	  }
 	}
-	| CIRCLE_ POINT_ bp coord ep conjuction shapeComment
-	  {fr->createCirclePointCmd(Vector($4), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| BOX_ POINT_ bp coord ep conjuction shapeComment
-	  {fr->createBoxPointCmd(Vector($4), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| DIAMOND_ POINT_ bp coord ep conjuction shapeComment
-	  {fr->createDiamondPointCmd(Vector($4), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| CROSS_ POINT_ bp coord ep conjuction shapeComment
-	  {fr->createCrossPointCmd(Vector($4), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| X_ POINT_ bp coord ep conjuction shapeComment
-	  {fr->createExPointCmd(Vector($4), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| ARROW_ POINT_ bp coord ep conjuction shapeComment
-	  {fr->createArrowPointCmd(Vector($4), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| BOXCIRCLE_ POINT_ bp coord ep conjuction shapeComment
-	  {fr->createBoxCirclePointCmd(Vector($4), localPointSize, 
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-
-	| POLYGON_ {polylist.deleteAll();} bp polyNodes ep conjuction 
-	    shapeComment
-	  {fr->createPolygonCmd(polylist, 
-	      localColor,localDash,localWidth,localFont,
-	      localText,localProps,localComment,taglist,cblist);} 
 
 	| PIE_ bp coord sp angle sp angle ep conjuction shapeComment
 	| PIE_ bp coord sp angle sp angle sp aAngs ep conjuction shapeComment
@@ -1392,61 +1453,12 @@ shape	: CIRCLE_ bp coord sp value ep conjuction shapeComment
 	    shapeComment
 	| FIELD_ bp ep conjuction shapeComment
 
- 	| TEXT_ bp coord ep conjuction shapeComment
-	  {fr->createTextCmd(Vector($3),
-	    localTextAngle,localTextRotate,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| TEXT_ bp coord sp STRING ep {strncpy(localText,$5,80);} conjuction 
-	    shapeComment
-	  {fr->createTextCmd(Vector($3),
-	    localTextAngle,localTextRotate,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
 	| COMPOSITE_ bp coord sp optangle ep conjuction shapeComment
-	  {fr->createCompositeCmd(Vector($3),
-	    $5, localComposite,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| VECTOR_ bp coord sp value sp angle ep conjuction shapeComment
-	  {fr->createVectCmd(Vector($3),
-	    $5,$7,
-	    localVector,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| PROJECTION_ bp coord sp coord sp value ep conjuction shapeComment
 	{
-	  // hard coded into projection.tcl
-	  fr->createProjectionCmd(Vector($3),
-	    Vector($5),
-	    $7,
-	    "ProjectionPlotCB", "ProjectionPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
-	}
-	| RULER_ bp coord sp coord ep conjuction shapeComment
-	  {fr->createRulerCmd(Vector($3),
-	    Vector($5),
-   	    localRulerCoordSystem, localRulerSkyFrame,
-	    localRulerDistSystem, localRulerDistFormat,
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);}
-	| COMPASS_ bp coord sp value ep conjuction shapeComment
-	  {fr->createCompassCmd(Vector($3), 
-	   $5,
-	   localCompassNorth, localCompassEast, 
-	   localCompassNArrow, localCompassEArrow,
-   	   localCompassCoordSystem, localCompassSkyFrame,
-	   localColor,localDash,localWidth,localFont,
-	   localText,localProps,localComment,taglist,cblist);}
-	| CIRCLE3D_ bp coord sp value ep conjuction shapeComment
-	{
-	  // hard coded into circle3d.tcl
-	  fr->createCircle3dCmd(Vector($3),
-	    $5,
-	    "Circle3dPlotCB", "Circle3dPlotDeleteCB",
-	    localColor,localDash,localWidth,localFont,
-	    localText,localProps,localComment,taglist,cblist);
+	  fr->createCompositeCmd(Vector($3),
+	  $5, localComposite,
+	  localColor,localDash,localWidth,localFont,
+	  localText,localProps,localComment,taglist,cblist);
 	}
 	;
 
@@ -1524,23 +1536,23 @@ static void setProps(unsigned short* props, unsigned short prop, int value)
     *props &= ~prop;
 }
 
-static CoordSystem checkWCSSystem()
+static Coord::CoordSystem checkWCSSystem()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return WCS;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::WCS;
   default:
    return localSystem;
   }
 }
 
-static SkyFrame checkWCSSky()
+static Coord::SkyFrame checkWCSSky()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return FK5;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::FK5;
   default:
    return localSky;
   }
diff --git a/saotk/frame/ellipse.C b/saotk/frame/ellipse.C
index e93bddb..8f3cebb 100644
--- a/saotk/frame/ellipse.C
+++ b/saotk/frame/ellipse.C
@@ -3,14 +3,12 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "ellipse.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Ellipse::Ellipse(const Ellipse& a) : BaseEllipse(a) {}
 
 Ellipse::Ellipse(Base* p, const Vector& ctr,
-		 const Vector& r, 
-		 double ang, 
+		 const Vector& r, double ang, 
 		 const char* clr, int* dsh, 
 		 int wth, const char* fnt, const char* txt, 
 		 unsigned short prop, const char* cmt, 
@@ -21,7 +19,7 @@ Ellipse::Ellipse(Base* p, const Vector& ctr,
   annuli_ = new Vector[numAnnuli_];
   annuli_[0] = r;
 
-  strcpy(type,"ellipse");
+  strcpy(type_,"ellipse");
   numHandle = 4;
 
   updateBBox();
@@ -36,23 +34,60 @@ void Ellipse::edit(const Vector& v, int h)
   doCallBack(CallBack::EDITCB);
 }
 
+void Ellipse::analysis(AnalysisMethod mm, int which)
+{
+  switch (mm) {
+  case PLOT3D:
+    if (!analysisPlot3d_ && which) {
+      addCallBack(CallBack::MOVECB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::EDITCB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::ROTATECB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::DELETECB, analysisPlot3dCB_[1], 
+		  parent->options->cmdName);
+    }
+    if (analysisPlot3d_ && !which) {
+      deleteCallBack(CallBack::MOVECB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::EDITCB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::ROTATECB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::DELETECB, analysisPlot3dCB_[1]);
+    }
+
+    analysisPlot3d_ = which;
+    break;
+  }
+}
+
+void Ellipse::analysisPlot3d(char* xname, char* yname)
+{
+  double* x;
+  double* y;
+  Vector ll = -annuli_[0] * Rotate(angle) * Translate(center);
+  Vector ur =  annuli_[0] * Rotate(angle) * Translate(center);
+  BBox bb(ll,ur);
+  int num = parent->markerAnalysisPlot3d(&x, &y, this, bb);
+  analysisPlot3dResult(xname, yname, x, y, num);
+}
+
 // list
 
-void Ellipse::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		   SkyFormat format, int conj, int strip)
+void Ellipse::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		   Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       Vector r = ptr->mapLenFromRef(annuli_[0],sys);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	  << r[0] << ',' << r[1] << ',' 
 	  << radToDeg(parent->mapAngleFromRef(angle,sys)) << ')';
     }
@@ -61,16 +96,16 @@ void Ellipse::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 		<< r[0] << "\"" << ',' << r[1] << "\"" << ',' 
 		<< radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -79,8 +114,8 @@ void Ellipse::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	    string x(buf);
 	    istringstream wcs(x);
 	    wcs >> ra >> dec;
-	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    str << type << '(' << ra << ',' << dec << ',' 
+	    Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    str << type_ << '(' << ra << ',' << dec << ',' 
 		<< r[0] << "\""<< ',' << r[1] << "\""<< ',' 
 		<< radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
@@ -90,7 +125,7 @@ void Ellipse::list(ostream& str, CoordSystem sys, SkyFrame sky,
       else {
 	Vector v = ptr->mapFromRef(center,sys);
 	Vector r = ptr->mapLenFromRef(annuli_[0],sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	    << r[0] << ',' << r[1] << ',' 
 	    << radToDeg(parent->mapAngleFromRef(angle,sys)) << ')';
       }
@@ -100,13 +135,13 @@ void Ellipse::list(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Ellipse::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		      SkyFormat format)
+void Ellipse::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		      Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadius(ptr,sys,annuli_[0]);
@@ -116,7 +151,7 @@ void Ellipse::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Ellipse::listCiao(ostream& str, CoordSystem sys, int strip)
+void Ellipse::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listCiaoPre(str);
@@ -124,28 +159,28 @@ void Ellipse::listCiao(ostream& str, CoordSystem sys, int strip)
   // radius is always in image coords
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,PHYSICAL);
-      Vector r = ptr->mapLenFromRef(annuli_[0],PHYSICAL);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+      Vector v = ptr->mapFromRef(center,Coord::PHYSICAL);
+      Vector r = ptr->mapLenFromRef(annuli_[0],Coord::PHYSICAL);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	  << r[0] << ',' << r[1] << ',' << radToDeg(angle) << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
-      Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCMIN);
+      Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCMIN);
       char buf[64];
-      ptr->mapFromRef(center,sys,FK5,SEXAGESIMAL,buf,64);
+      ptr->mapFromRef(center,sys,Coord::FK5,Coord::SEXAGESIMAL,buf,64);
       char ra[16];
       char dec[16];
       string x(buf);
       istringstream wcs(x);
       wcs >> ra >> dec;
-      str << type << '(' << ra << ',' << dec << ',' 
+      str << type_ << '(' << ra << ',' << dec << ',' 
 	  << r[0] << '\'' << ',' << r[1] << '\'' << ',' 
 	  << radToDeg(angle) << ')';
     }
@@ -155,8 +190,8 @@ void Ellipse::listCiao(ostream& str, CoordSystem sys, int strip)
   listCiaoPost(str, strip);
 }
 
-void Ellipse::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-		     SkyFormat format, int strip)
+void Ellipse::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		     Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listSAOtngPre(str, strip);
@@ -164,39 +199,39 @@ void Ellipse::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
   // radius is always in image coords
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,IMAGE);
-      Vector r = ptr->mapLenFromRef(annuli_[0],IMAGE);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+      Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+      Vector r = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	  << r[0] << ',' << r[1] << ',' << radToDeg(angle) << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  Vector r = ptr->mapLenFromRef(annuli_[0],IMAGE);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	  Vector r = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	      << r[0] << ',' << r[1] << ',' << radToDeg(angle) << ')';
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
-	  Vector r = ptr->mapLenFromRef(annuli_[0],IMAGE);
+	  Vector r = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
 	  char ra[16];
 	  char dec[16];
 	  string x(buf);
 	  istringstream wcs(x);
 	  wcs >> ra >> dec;
-	  str << type << '(' << ra << ',' << dec << ',' 
+	  str << type_ << '(' << ra << ',' << dec << ',' 
 	      << r[0] << ',' << r[1] << ',' << radToDeg(angle) << ')';
 	}
 	break;
@@ -208,39 +243,39 @@ void Ellipse::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
   listSAOtngPost(str, strip);
 }
 
-void Ellipse::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-			   SkyFormat format, int strip)
+void Ellipse::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			   Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
       Vector v = ptr->mapFromRef(center,sys);
-      Vector r = ptr->mapLenFromRef(annuli_[0],IMAGE);
-      listProsCoordSystem(str,sys,sky);
-      str << "; " << type << ' ' << setprecision(8) << v << r
+      Vector r = ptr->mapLenFromRef(annuli_[0],Coord::IMAGE);
+      coord.listProsCoordSystem(str,sys,sky);
+      str << "; " << type_ << ' ' << setprecision(8) << v << r
 	  << radToDeg(angle);
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << setprecision(8) 
+	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << setprecision(8) 
 	      << v[0] << "d " << v[1] << "d " 
 	      << r[0] << "\" " << r[1] << "\" " << radToDeg(angle);
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -253,9 +288,9 @@ void Ellipse::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  if (dec[0]=='+')
 	    dec++;
 
-	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	  listProsCoordSystem(str,sys,sky);
-	  str << "; " << type << ' ' << ra << ' ' << dec << ' '
+	  Vector r = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	  coord.listProsCoordSystem(str,sys,sky);
+	  str << "; " << type_ << ' ' << ra << ' ' << dec << ' '
 	      << r[0] << "\" " << r[1] << "\" "
 	      << radToDeg(angle);
 	}
@@ -272,8 +307,8 @@ void Ellipse::listSAOimage(ostream& str, int strip)
   FitsImage* ptr = parent->findFits();
   listSAOimagePre(str);
 
-  Vector v = ptr->mapFromRef(center,IMAGE);
-  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
+  Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ',' 
       << annuli_[0][0] << ',' << annuli_[0][1] << ',' 
       << radToDeg(angle) << ')';
 
diff --git a/saotk/frame/ellipse.h b/saotk/frame/ellipse.h
index bcab40b..4183962 100644
--- a/saotk/frame/ellipse.h
+++ b/saotk/frame/ellipse.h
@@ -17,15 +17,18 @@ public:
 	  unsigned short prop, const char* cmt, 
 	  const List<Tag>& tg, const List<CallBack>& cb);
 
-  Marker* dup() {return new Ellipse(*this);}
+  virtual Marker* dup() {return new Ellipse(*this);}
   void edit(const Vector&, int);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listCiao(ostream&, CoordSystem, int);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listSAOimage(ostream&, int);
+  void analysis(AnalysisMethod, int);
+  void analysisPlot3d(char*, char*);
+
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  virtual void listCiao(ostream&, Coord::CoordSystem, int);
+  virtual void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listSAOimage(ostream&, int);
 };
 
 #endif
diff --git a/saotk/frame/ellipseannulus.C b/saotk/frame/ellipseannulus.C
index 8ca4594..8ba62df 100644
--- a/saotk/frame/ellipseannulus.C
+++ b/saotk/frame/ellipseannulus.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "ellipseannulus.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 EllipseAnnulus::EllipseAnnulus(const EllipseAnnulus& a) : BaseEllipse(a) {}
@@ -22,7 +21,7 @@ EllipseAnnulus::EllipseAnnulus(Base* p, const Vector& ctr,
 
   annuli_[0] = r;
 
-  strcpy(type,"ellipseannulus");
+  strcpy(type_,"ellipseannulus");
   numHandle = 4;
 
   updateBBox();
@@ -43,7 +42,7 @@ EllipseAnnulus::EllipseAnnulus(Base* p, const Vector& ctr,
   for (int i=0; i<numAnnuli_; i++)
     annuli_[i] = ((outer-inner)/num)*i+inner;
 
-  strcpy(type, "ellipseannulus");
+  strcpy(type_, "ellipseannulus");
   numHandle = 4 + numAnnuli_;
 
   updateBBox();
@@ -66,7 +65,7 @@ EllipseAnnulus::EllipseAnnulus(Base* p, const Vector& ctr,
     annuli_[i] = r[i];
   sortAnnuli();
 
-  strcpy(type, "ellipseannulus");
+  strcpy(type_, "ellipseannulus");
   numHandle = 4 + numAnnuli_;
 
   updateBBox();
@@ -117,17 +116,17 @@ int EllipseAnnulus::addAnnuli(const Vector& v)
 
 // list
 
-void EllipseAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
-			  SkyFormat format, int conj, int strip)
+void EllipseAnnulus::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			  Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       str << "ellipse(" << setprecision(8) << v[0] << ',' << v[1] << ',';
@@ -142,18 +141,18 @@ void EllipseAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
 	    str << "ellipse(" << setprecision(8) << v[0] << ',' << v[1] << ',';
 	    for (int i=0; i<numAnnuli_; i++) {
-	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	      str << r[0] << "\"" << ',' << r[1] << "\"" << ',' ;
 	    }
 	    str << radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -165,7 +164,7 @@ void EllipseAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
 
 	    str << "ellipse(" << ra << ',' << dec << ',' ;
 	    for (int i=0; i<numAnnuli_; i++) {
-	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	      Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	      str << r[0] << "\""<< ',' << r[1] << "\""<< ',';
 	    }
 	    str << radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
@@ -188,13 +187,13 @@ void EllipseAnnulus::list(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void EllipseAnnulus::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-			     SkyFormat format)
+void EllipseAnnulus::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			     Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadius(ptr,sys,annuli_,numAnnuli_);
@@ -204,28 +203,28 @@ void EllipseAnnulus::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void EllipseAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-			      SkyFormat format, int strip)
+void EllipseAnnulus::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			      Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
       Vector v = ptr->mapFromRef(center,sys);
       for (int i=0; i<numAnnuli_; i++) {
-	listProsCoordSystem(str,sys,sky);
+	coord.listProsCoordSystem(str,sys,sky);
 	str << "; ";
 
-	Vector r = ptr->mapLenFromRef(annuli_[i],IMAGE);
+	Vector r = ptr->mapLenFromRef(annuli_[i],Coord::IMAGE);
 	str << "ellipse " << setprecision(8) << v << r << radToDeg(angle);
 
 	if (i!=0) {
-	  Vector r1 = ptr->mapLenFromRef(annuli_[i-1],IMAGE);
+	  Vector r1 = ptr->mapLenFromRef(annuli_[i-1],Coord::IMAGE);
 	  str << " & !ellipse " << setprecision(8) << v << r1<<radToDeg(angle);
 	}
 
@@ -236,19 +235,19 @@ void EllipseAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
 	  for (int i=0; i<numAnnuli_; i++) {
-	    listProsCoordSystem(str,sys,sky);
+	    coord.listProsCoordSystem(str,sys,sky);
 	    str << "; ";
 
-	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	    str << "ellipse " << setprecision(8) << v[0] << "d " << v[1]<<"d " 
 		<< r[0] << "\" " << r[1] << "\" " << radToDeg(angle);
 
 	    if (i!=0) {
-	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
+	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
 	      str << " & !ellipse " << setprecision(8) 
 		  << v[0] << "d " << v[1] << "d " 
 		  << r1[0] << "\" " << r1[1] << "\" " << radToDeg(angle);
@@ -258,7 +257,7 @@ void EllipseAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  }
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -272,15 +271,15 @@ void EllipseAnnulus::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	    dec++;
 
 	  for (int i=0; i<numAnnuli_; i++) {
-	    listProsCoordSystem(str,sys,sky);
+	    coord.listProsCoordSystem(str,sys,sky);
 	    str << "; ";
 
-	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);
+	    Vector r = ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);
 	    str << "ellipse " << ra << ' ' << dec << ' ' 
 		<< r[0] << "\" " << r[1] << "\" " << radToDeg(angle);
 
 	    if (i!=0) {
-	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
+	      Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
 	      str << " & !ellipse " << ra << ' ' << dec << ' ' 
 		  << r1[0] << "\" " << r1[1] << "\" " << radToDeg(angle);
 	    }
@@ -300,7 +299,7 @@ void EllipseAnnulus::listSAOimage(ostream& str, int strip)
   listSAOimagePre(str);
 
   for (int i=0; i<numAnnuli_; i++) {
-    Vector v = ptr->mapFromRef(center,IMAGE);
+    Vector v = ptr->mapFromRef(center,Coord::IMAGE);
     str << "ellipse(" << setprecision(8) << v[0] << ',' << v[1] << ',' 
 	<< annuli_[i][0] << ',' << annuli_[i][1] << ',' << radToDeg(angle) << ')';
 
diff --git a/saotk/frame/ellipseannulus.h b/saotk/frame/ellipseannulus.h
index 2014593..cf80d5f 100644
--- a/saotk/frame/ellipseannulus.h
+++ b/saotk/frame/ellipseannulus.h
@@ -38,9 +38,9 @@ public:
 
   int addAnnuli(const Vector&);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
   void listSAOimage(ostream&, int);
 };
 
diff --git a/saotk/frame/epanda.C b/saotk/frame/epanda.C
index bcc3c0f..0b70fa8 100644
--- a/saotk/frame/epanda.C
+++ b/saotk/frame/epanda.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "epanda.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Epanda::Epanda(const Epanda& a) : BasePanda(a), BaseEllipse(a) {}
@@ -25,7 +24,7 @@ Epanda::Epanda(Base* p, const Vector& ctr,
   for (int ii=0; ii<numAnnuli_; ii++)
     annuli_[ii] = ((r2-r1)/rn)*ii+r1;
 
-  strcpy(type, "epanda");
+  strcpy(type_, "epanda");
   numHandle = 4 + numAnnuli_ + numAngles_;
 
   startAng_ = angles_[0];
@@ -52,7 +51,7 @@ Epanda::Epanda(Base* p, const Vector& ctr,
     annuli_[ii] = r[ii];
   sortAnnuli();
 
-  strcpy(type, "epanda");
+  strcpy(type_, "epanda");
   numHandle = 4 + numAnnuli_ + numAngles_;
 
   startAng_ = angles_[0];
@@ -61,7 +60,7 @@ Epanda::Epanda(Base* p, const Vector& ctr,
   updateBBox();
 }
 
-void Epanda::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Epanda::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   BaseEllipse::renderX(drawable, sys, mode);
 
@@ -101,8 +100,8 @@ void Epanda::renderPS(int mode)
   Vector r1 = annuli_[numAnnuli_-1];
 
   for (int ii=0; ii<numAngles_; ii++) {
-    Vector rr0 = fwdMap(intersect(r0,-angles_[ii]),CANVAS);
-    Vector rr1 = fwdMap(intersect(r1,-angles_[ii]),CANVAS);
+    Vector rr0 = fwdMap(intersect(r0,-angles_[ii]),Coord::CANVAS);
+    Vector rr1 = fwdMap(intersect(r1,-angles_[ii]),Coord::CANVAS);
 
     ostringstream str;
     str << "newpath " 
@@ -124,8 +123,8 @@ void Epanda::renderMACOSX()
   Vector r1 = annuli_[numAnnuli_-1];
 
   for (int ii=0; ii<numAngles_; ii++) {
-    Vector rr0 = fwdMap(intersect(r0,-angles_[ii]),CANVAS);
-    Vector rr1 = fwdMap(intersect(r1,-angles_[ii]),CANVAS);
+    Vector rr0 = fwdMap(intersect(r0,-angles_[ii]),Coord::CANVAS);
+    Vector rr1 = fwdMap(intersect(r1,-angles_[ii]),Coord::CANVAS);
 
     macosxDrawLine(rr0,rr1);
   }
@@ -143,8 +142,8 @@ void Epanda::renderWIN32()
   Vector r1 = annuli_[numAnnuli_-1];
 
   for (int ii=0; ii<numAngles_; ii++) {
-    Vector rr0 = fwdMap(intersect(r0,-angles_[ii]),CANVAS);
-    Vector rr1 = fwdMap(intersect(r1,-angles_[ii]),CANVAS);
+    Vector rr0 = fwdMap(intersect(r0,-angles_[ii]),Coord::CANVAS);
+    Vector rr1 = fwdMap(intersect(r1,-angles_[ii]),Coord::CANVAS);
 
     win32DrawLine(rr0,rr1);
   }
@@ -159,7 +158,7 @@ void Epanda::updateHandles()
 
   Vector rr = annuli_[numAnnuli_-1];
   for (int ii=0; ii<numAngles_; ii++)
-    handle[ii+4+numAnnuli_] = fwdMap(intersect(rr,-angles_[ii]),CANVAS);
+    handle[ii+4+numAnnuli_] = fwdMap(intersect(rr,-angles_[ii]),Coord::CANVAS);
 }
 
 void Epanda::edit(const Vector& v, int h)
@@ -326,8 +325,8 @@ void Epanda::deleteAnglesAnnuli(int h)
 
 // list
 
-void Epanda::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		 SkyFormat format, int conj, int strip)
+void Epanda::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		 Coord::SkyFormat format, int conj, int strip)
 {
   int regular = 1;
   if (numAngles_>2) {
@@ -368,17 +367,17 @@ void Epanda::list(ostream& str, CoordSystem sys, SkyFrame sky,
     listB(str, sys, sky, format, conj, strip);
 }
 
-void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
-		  SkyFormat format, int conj, int strip)
+void Epanda::listA(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		  Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       double ang1 = radToDeg(parent->mapAngleFromRef(angles_[0],sys));
       double ang2 = radToDeg(parent->mapAngleFromRef(angles_[numAngles_-1],sys));
@@ -388,7 +387,7 @@ void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
       Vector v = ptr->mapFromRef(center,sys);
       Vector r1 = ptr->mapLenFromRef(annuli_[0],sys);
       Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	  << ang1 << ',' << ang2 << ',' << numAngles_-1 << ','
 	  << r1[0] << ',' << r1[1] << ',' << r2[0] << ',' << r2[1] << ','
 	  << numAnnuli_-1 << ','
@@ -399,7 +398,7 @@ void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    double ang1 = radToDeg(parent->mapAngleFromRef(angles_[0],sys,sky));
 	    double ang2 = radToDeg(parent->mapAngleFromRef(angles_[numAngles_-1],sys,sky));
@@ -408,9 +407,9 @@ void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	      ang2 += 360;
 
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,ARCSEC);
-	    str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,Coord::ARCSEC);
+	    str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 		<< ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
 		<< r1[0] << '"' << ',' << r1[1] << '"' << ','
 		<< r2[0] << '"' << ',' << r2[1] << '"' << ','
@@ -418,7 +417,7 @@ void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 		<< radToDeg(parent->mapAngleFromRef(angle,sys,sky)) << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -434,9 +433,9 @@ void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	    if (ang2<=ang1+FLT_EPSILON)
 	      ang2 += 360;
 
-	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,ARCSEC);
-	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,ARCSEC);
-	    str << type << '(' << ra << ',' << dec << ','
+	    Vector r1 = ptr->mapLenFromRef(annuli_[0],sys,Coord::ARCSEC);
+	    Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys,Coord::ARCSEC);
+	    str << type_ << '(' << ra << ',' << dec << ','
 		<< ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
 		<< r1[0] << '"' << ',' << r1[1] << '"' << ','
 		<< r2[0] << '"' << ',' << r2[1] << '"' << ','
@@ -456,7 +455,7 @@ void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
 	Vector v = ptr->mapFromRef(center,sys);
 	Vector r1 = ptr->mapLenFromRef(annuli_[0],sys);
 	Vector r2 =  ptr->mapLenFromRef(annuli_[numAnnuli_-1],sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ','
 	    << ang1 << ',' << ang2 <<',' << numAngles_-1 << ','
 	    << r1[0] << ',' << r1[1] << ',' << r2[0] << ',' << r2[1] << ','
 	    << numAnnuli_-1 << ','
@@ -468,16 +467,16 @@ void Epanda::listA(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
-		  SkyFormat format, int conj, int strip)
+void Epanda::listB(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		  Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
       for (int j=1; j<numAngles_; j++) {
@@ -492,7 +491,7 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
 	  Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys);
 	  Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys);	
-	  str << type << '(' << setprecision(8) 
+	  str << type_ << '(' << setprecision(8) 
 	      << v[0] << ',' << v[1] << ','
 	      << ang1 << ',' << ang2 << ",1,"
 	      << r1[0] << ',' << r1[1] << ',' << r2[0] << ',' << r2[1] << ','
@@ -540,7 +539,7 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
 	    for (int j=1; j<numAngles_; j++) {
@@ -553,9 +552,9 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	      for (int i=1; i<numAnnuli_; i++) {
 		listPre(str, sys, sky, ptr, strip, 0);
 
-		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
-		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);	
-		str << type << '(' << setprecision(8) 
+		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
+		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);	
+		str << type_ << '(' << setprecision(8) 
 		    << v[0] << ',' << v[1] << ','
 		    << ang1 << ',' << ang2 << ",1,"
 		    << r1[0] << '"' << ',' << r1[1] << '"' << ',' 
@@ -576,7 +575,7 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 			  << ((k<numAngles_-1) ? ' ' : ')');
 		    str << '(';
 		    for (int k=0; k<numAnnuli_; k++) {
-		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,ARCSEC);
+		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,Coord::ARCSEC);
 		      str << r[0] << '"' << ' ' << r[1] << '"' 
 			  << ((k<numAnnuli_-1) ? ' ' : ')');
 		    }
@@ -600,7 +599,7 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	    }
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -620,9 +619,9 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 	      for (int i=1; i<numAnnuli_; i++) {
 		listPre(str, sys, sky, ptr, strip, 0);
 
-		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,ARCSEC);
-		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,ARCSEC);	
-		str << type << '(' << ra << ',' << dec << ','
+		Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys,Coord::ARCSEC);
+		Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys,Coord::ARCSEC);	
+		str << type_ << '(' << ra << ',' << dec << ','
 		    << ang1 << ',' << ang2 << ",1,"
 		    << r1[0] << '"' << ',' << r1[1] << '"' <<',' 
 		    << r2[0] << '"' << ',' << r2[1] << '"' <<',' 
@@ -642,7 +641,7 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 			  << ((k<numAngles_-1) ? ' ' : ')');
 		    str << '(';
 		    for (int k=0; k<numAnnuli_; k++) {
-		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,ARCSEC);
+		      Vector r = ptr->mapLenFromRef(annuli_[k],sys,Coord::ARCSEC);
 		      str << r[0] << '"' << ' ' << r[1] << '"' 
 			  << ((k<numAnnuli_-1) ? ' ' : ')');
 		    }
@@ -683,7 +682,7 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
 
 	    Vector r1 = ptr->mapLenFromRef(annuli_[i-1],sys);
 	    Vector r2 =  ptr->mapLenFromRef(annuli_[i],sys);	
-	    str << type << '(' << setprecision(8) 
+	    str << type_ << '(' << setprecision(8) 
 		<< v[0] << ',' << v[1] << ','
 		<< ang1 << ',' << ang2 << ",1,"
 		<< r1[0] << ',' << r1[1] << ','	<< r2[0] << ',' << r2[1] << ','
@@ -728,13 +727,13 @@ void Epanda::listB(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Epanda::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		     SkyFormat format)
+void Epanda::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		     Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowRadius(ptr,sys,annuli_,numAnnuli_);
diff --git a/saotk/frame/epanda.h b/saotk/frame/epanda.h
index 31ea3dd..4447b13 100644
--- a/saotk/frame/epanda.h
+++ b/saotk/frame/epanda.h
@@ -10,7 +10,7 @@
 
 class Epanda : public BasePanda, public BaseEllipse {
  private:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
@@ -21,8 +21,8 @@ class Epanda : public BasePanda, public BaseEllipse {
 
   void updateHandles();
 
-  void listA(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listB(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
+  void listA(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listB(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
 
  public:
   Epanda(const Epanda&);
@@ -55,8 +55,8 @@ class Epanda : public BasePanda, public BaseEllipse {
   void setAnglesAnnuli(const double*, int, const Vector*, int);
   void deleteAnglesAnnuli(int h);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
 };
 
 #endif
diff --git a/saotk/frame/fitsbin.C b/saotk/frame/fitsbin.C
index 701c05d..35bcef3 100644
--- a/saotk/frame/fitsbin.C
+++ b/saotk/frame/fitsbin.C
@@ -82,6 +82,18 @@ void FitsImage::initHist()
   nextHist(getHistCenter());
 }
 
+int FitsImage::hasBinCol(const char* str)
+{
+  if (fits_) {
+    FitsHead* head = fits_->head();
+    if (head) {
+      FitsTableHDU* hdu = (FitsTableHDU*)head->hdu();
+      return hdu->find(str) ? 1 : 0;
+    }
+  }
+  return 0;
+}
+
 void FitsImage::setBinCursor(const Vector& v)
 {
   histCursor = v * refToPhysical;
diff --git a/saotk/frame/fitsdata.C b/saotk/frame/fitsdata.C
index e1bfa1a..9277c8d 100644
--- a/saotk/frame/fitsdata.C
+++ b/saotk/frame/fitsdata.C
@@ -7,8 +7,6 @@
 
 #include "NaN.h"
 
-#define AUTOCUTSIZE 2048
-
 // ZSCALE
 
 #define ZSMAX(a,b) ((a) > (b) ? (a) : (b))
@@ -83,8 +81,6 @@ FitsData::FitsData(FitsFile* fits, Base* p)
   zLine = 5;
   zscaleValid = 0;
 
-  autoCutHist = NULL;
-  autoCutTotal = 0;
   autoCutValid = 0;
   autoCutPer = 0;
 
@@ -116,8 +112,6 @@ FitsData::FitsData(FitsFile* fits, Base* p)
 
 FitsData::~FitsData()
 {
-  if (autoCutHist)
-    delete [] autoCutHist;
 }
 
 const char* FitsData::getLow()
@@ -152,38 +146,34 @@ int FitsData::getIncr()
 }
 
 // AutoCut
+#define AUTOCUTSIZE 10240
 void FitsData::autoCut(FitsBound* params)
 {
   double amin = getMinDouble();
   double amax = getMaxDouble();
 
-  if (!autoCutHist) {
-    // bin it up
-    autoCutHist = new double[AUTOCUTSIZE];
-    for (int i=0; i<AUTOCUTSIZE; i++)
-      autoCutHist[i] = 0;
-    bin(autoCutHist, AUTOCUTSIZE, amin, amax, params);
-
-    // find total number of pixels
-    {
-      autoCutTotal = 0;
-      for (int i=0; i<AUTOCUTSIZE; i++)
-	autoCutTotal += autoCutHist[i];
-    }
-  }
+  // bin it up
+  double hist[AUTOCUTSIZE];
+  memset(hist,0,sizeof(double)*AUTOCUTSIZE);
+  bin(hist, AUTOCUTSIZE, amin, amax, params);
+
+  // find total number of pixels
+  int total = 0;
+  for (int ii=0; ii<AUTOCUTSIZE; ii++)
+    total += hist[ii];
   
   // calc cut off
-  int cutoff = (autoCutTotal*(100.-autoCutPer)/100.)/2.;
+  int cutoff = (total*(100.-autoCutPer)/100.)/2.;
   int count;
   int ll, hh;
   for (ll=0,count=0; ll<AUTOCUTSIZE; ll++) {
-    count += autoCutHist[ll];
+    count += hist[ll];
     if (count > cutoff)
       break;
   }
 
-  for (hh=AUTOCUTSIZE-1,count=0; hh>=0; hh--) {
-    count += autoCutHist[hh];
+  for (hh=AUTOCUTSIZE-1,count=0; hh>ll+1; hh--) {
+    count += hist[hh];
     if (count > cutoff)
       break;
   }
diff --git a/saotk/frame/fitsdata.h b/saotk/frame/fitsdata.h
index 5b0f87c..42d232f 100644
--- a/saotk/frame/fitsdata.h
+++ b/saotk/frame/fitsdata.h
@@ -66,8 +66,6 @@ protected:
   int zLine;
   int zscaleValid;
 
-  double* autoCutHist;
-  int autoCutTotal;
   int autoCutValid;
   float autoCutPer;
 
diff --git a/saotk/frame/fitsimage.C b/saotk/frame/fitsimage.C
index 4ab568f..344db4a 100644
--- a/saotk/frame/fitsimage.C
+++ b/saotk/frame/fitsimage.C
@@ -20,6 +20,7 @@
 #include "hist.h"
 #include "compress.h"
 #include "analysis.h"
+#include "photo.h"
 
 #define MAXPV 99
 
@@ -501,6 +502,32 @@ FitsImageArrVar::FitsImageArrVar(Base* p, Tcl_Interp* interp,
   process(fn,id);
 }
 
+// Photo
+
+FitsImagePhoto::FitsImagePhoto(Base* p, Tcl_Interp* interp, 
+				  const char* ph, const char* fn, int id)
+  : FitsImage(p)
+{
+  fits_ = new FitsPhoto(interp, ph);
+  process(fn,id);
+}
+
+FitsImagePhotoCube::FitsImagePhotoCube(Base* p, Tcl_Interp* interp, 
+				       const char* ph, const char* fn, int id)
+  : FitsImage(p)
+{
+  fits_ = new FitsPhotoCube(interp, ph);
+  process(fn,id);
+}
+
+FitsImagePhotoCubeNext::FitsImagePhotoCubeNext(Base* p, const char* fn,
+					       FitsFile* prev, int id)
+  : FitsImage(p)
+{
+  fits_ = new FitsPhotoCubeNext(prev);
+  process(fn,id);
+}
+
 // Mosaic
 
 FitsImageMosaicAlloc::FitsImageMosaicAlloc(Base* p, 
@@ -1077,13 +1104,13 @@ void FitsImage::initWCS(FitsHead* head, FitsHead* primary)
 
 void FitsImage::initWCS0(const Vector& pix)
 {
-  int ii = WCS0-WCS;
+  int ii = Coord::WCS0-Coord::WCS;
   if (wcs[ii])
     wcsfree(wcs[ii]);
   wcs[ii] = NULL;
 
   if (wcs[0]) {
-    Vector cc = mapFromRef(pix, IMAGE, FK5);
+    Vector cc = mapFromRef(pix, Coord::IMAGE, Coord::FK5);
     WorldCoor* ww = wcs[0];
     wcs[ii] = wcskinit(ww->nxpix, ww->nypix, "RA---TAN", "DEC--TAN", 
 		       cc[0], cc[1], 0, 0, ww->cd, 0, 0, 0, 2000, 2000);
@@ -1155,30 +1182,30 @@ void FitsImage::load()
   processKeywords();
 }
 
-Matrix& FitsImage::matrixToData(InternalSystem sys)
+Matrix& FitsImage::matrixToData(Coord::InternalSystem sys)
 {
   switch (sys) {
-  case WIDGET:
+  case Coord::WIDGET:
     return widgetToData;
-  case PANNER:
+  case Coord::PANNER:
     return pannerToData;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     return magnifierToData;
-  case PS:
+  case Coord::PS:
     return psToData;
   }
 }
 
-Matrix3d& FitsImage::matrixToData3d(InternalSystem sys)
+Matrix3d& FitsImage::matrixToData3d(Coord::InternalSystem sys)
 {
   switch (sys) {
-  case WIDGET:
+  case Coord::WIDGET:
     return widgetToData3d;
-  case PANNER:
+  case Coord::PANNER:
     return pannerToData3d;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     return magnifierToData3d;
-  case PS:
+  case Coord::PS:
     return psToData3d;
   }
 }
@@ -1438,8 +1465,8 @@ void FitsImage::processKeywords()
 int FitsImage::processKeywordsIRAF(FitsImage* fits)
 {
   // DETSEC
-  Orientation orientation = NORMAL;
-  Orientation mo = NORMAL;
+  Coord::Orientation orientation = Coord::NORMAL;
+  Coord::Orientation mo = Coord::NORMAL;
 
   char* detstr =  image_->getString("DETSEC");
   Vector dv1,dv2;
@@ -1455,13 +1482,13 @@ int FitsImage::processKeywordsIRAF(FitsImage* fits)
   int yy = (dv1[1] < dv2[1]);
 
   if (xx && yy)
-    orientation = NORMAL;
+    orientation = Coord::NORMAL;
   else if (!xx && yy)
-    orientation = XX;
+    orientation = Coord::XX;
   else if (!xx && !yy)
-    orientation = XY;
+    orientation = Coord::XY;
   else if (xx && !yy)
-    orientation = YY;
+    orientation = Coord::YY;
 
   // DETSIZE
   char* sizestr = image_->getString("DETSIZE");
@@ -1500,15 +1527,15 @@ int FitsImage::processKeywordsIRAF(FitsImage* fits)
 
   Matrix flip;
   switch (orientation) {
-  case NORMAL:
+  case Coord::NORMAL:
     break;
-  case XX:
+  case Coord::XX:
     flip = FlipX();
       break;
-  case YY:
+  case Coord::YY:
     flip = FlipY();
       break;
-  case XY:
+  case Coord::XY:
     flip = FlipXY();
       break;
   }
@@ -1516,15 +1543,15 @@ int FitsImage::processKeywordsIRAF(FitsImage* fits)
   // internal flip
   Matrix mflip;
   switch (parent->IRAFOrientation(orientation)) {
-  case NORMAL:
+  case Coord::NORMAL:
     break;
-  case XX:
+  case Coord::XX:
     mflip = FlipX();
     break;
-  case YY:
+  case Coord::YY:
     mflip = FlipY();
     break;
-  case XY:
+  case Coord::XY:
     mflip = FlipXY();
     break;
   }
@@ -1563,12 +1590,12 @@ int FitsImage::processKeywordsIRAF(FitsImage* fits)
   return 1;
 }
 
-int FitsImage::processKeywordsWCS(FitsImage* fits, CoordSystem sys)
+int FitsImage::processKeywordsWCS(FitsImage* fits, Coord::CoordSystem sys)
 {
   if (!fits->hasWCS(sys))
     return 0;
 
-  wcsToRef = parent->calcAlignWCS(fits, this, sys, sys, FK5);
+  wcsToRef = parent->calcAlignWCS(fits, this, sys, sys, Coord::FK5);
 
   if (DebugMosaic)
     cerr << "ProcessKeywordsWCS " << endl
@@ -1640,7 +1667,7 @@ void FitsImage::resetWCS()
 
 void FitsImage::resetWCS0()
 {
-  int ii = WCS0-WCS;
+  int ii = Coord::WCS0-Coord::WCS;
   if (wcs[ii])
     wcsfree(wcs[ii]);
   wcs[ii] = NULL;
@@ -2198,10 +2225,38 @@ void FitsImage::updatePS(Matrix3d ps)
 
 // WCS
 
-Vector FitsImage::getWCScdelt(CoordSystem sys)
+Vector FitsImage::getWCScrpix(Coord::CoordSystem sys)
+{
+  if (hasWCS(sys)) {
+    int i = sys-Coord::WCS;
+
+    if (!wcs[i]->coorflip)
+      return Vector(wcs[i]->crpix[0], wcs[i]->crpix[1]);
+    else
+      return Vector(wcs[i]->crpix[1], wcs[i]->crpix[0]);
+  }
+  else
+    return Vector();
+}
+
+Vector FitsImage::getWCScrval(Coord::CoordSystem sys)
+{
+  if (hasWCS(sys)) {
+    int i = sys-Coord::WCS;
+
+    if (!wcs[i]->coorflip)
+      return Vector(wcs[i]->crval[0], wcs[i]->crval[1]);
+    else
+      return Vector(wcs[i]->crval[1], wcs[i]->crval[0]);
+  }
+  else
+    return Vector();
+}
+
+Vector FitsImage::getWCScdelt(Coord::CoordSystem sys)
 {
   if (hasWCS(sys)) {
-    int i = sys-WCS;
+    int i = sys-Coord::WCS;
 
     if (!wcs[i]->coorflip)
       return Vector(wcs[i]->cdelt[0], wcs[i]->cdelt[1]);
@@ -2212,7 +2267,7 @@ Vector FitsImage::getWCScdelt(CoordSystem sys)
     return Vector();
 }
 
-Orientation FitsImage::getWCSOrientation(CoordSystem sys, SkyFrame sky)
+Coord::Orientation FitsImage::getWCSOrientation(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (hasWCS(sys)) {
     Vector orpix = center();
@@ -2228,19 +2283,19 @@ Orientation FitsImage::getWCSOrientation(CoordSystem sys, SkyFrame sky)
     if ((north[0]==0 && north[1]==0) ||
 	(east[0]==0 && east[1]==0) ||
 	(diff[0]<.01 && diff[1]<.01))
-      return NORMAL;
+      return Coord::NORMAL;
 
     // take the cross product and see which way the 3rd axis is pointing
     double w = east[0]*north[1]-east[1]*north[0];
 
     if (!hasWCSCel(sys))
-      return w>0 ? NORMAL : XX;
+      return w>0 ? Coord::NORMAL : Coord::XX;
     else
-      return w<0 ? NORMAL : XX;
+      return w<0 ? Coord::NORMAL : Coord::XX;
   }
 }
 
-double FitsImage::getWCSRotation(CoordSystem sys, SkyFrame sky)
+double FitsImage::getWCSRotation(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (hasWCS(sys)) {
     Vector orpix = center();
@@ -2258,7 +2313,7 @@ double FitsImage::getWCSRotation(CoordSystem sys, SkyFrame sky)
 	(diff[0]<.01 && diff[1]<.01))
       return 0;
 
-    if (wcs[sys-WCS]->imflip)
+    if (wcs[sys-Coord::WCS]->imflip)
       return  (north.angle()-M_PI_2);
     else 
       return -(north.angle()-M_PI_2);
@@ -2267,11 +2322,11 @@ double FitsImage::getWCSRotation(CoordSystem sys, SkyFrame sky)
 }
 
 // AST
-Vector FitsImage::ASTpix2wcs(Vector in, CoordSystem sys, SkyFrame sky)
+Vector FitsImage::ASTpix2wcs(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   astClearStatus;
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && ast && ast[ii]) {
     double xx =0;
     double yy =0;
@@ -2295,7 +2350,7 @@ Vector FitsImage::ASTpix2wcs(Vector in, CoordSystem sys, SkyFrame sky)
 }
 
 Vector* FitsImage::ASTpix2wcs(Vector* in, int num, 
-			      CoordSystem sys, SkyFrame sky)
+			      Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   astClearStatus;
   double xin[num];
@@ -2309,7 +2364,7 @@ Vector* FitsImage::ASTpix2wcs(Vector* in, int num,
     yin[ii] = (in[ii])[1];
   }
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && ast && ast[ii]) {
     double xx =0;
     double yy =0;
@@ -2338,12 +2393,12 @@ Vector* FitsImage::ASTpix2wcs(Vector* in, int num,
   return out;
 }
 
-char* FitsImage::ASTpix2wcs(Vector in, CoordSystem sys, SkyFrame sky,
-			    SkyFormat format, char* lbuf, int len)
+char* FitsImage::ASTpix2wcs(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			    Coord::SkyFormat format, char* lbuf, int len)
 {
   astClearStatus;
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && ast && ast[ii]) {
     double xx =0;
     double yy =0;
@@ -2357,28 +2412,28 @@ char* FitsImage::ASTpix2wcs(Vector in, CoordSystem sys, SkyFrame sky,
       }
 
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	xx =radToDeg(xx); // 0 to 360
 	yy *=180./M_PI;
 
 	str << setprecision(8) << xx << ' ' << yy 
-	    << ' ' << skyFrameStr_[sky] << ends;
+	    << ' ' << coord.skyFrameStr(sky) << ends;
 	break;
 
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	switch (sky) {
-	case FK4:
-	case FK4_NO_E:
-	case FK5:
-	case ICRS:
+	case Coord::FK4:
+	case Coord::FK4_NO_E:
+	case Coord::FK5:
+	case Coord::ICRS:
 	  xx = zeroTWOPI(xx);
 	  setAstFormat(ast[ii],1,"hms.3");
 	  setAstFormat(ast[ii],2,"+dms.2");
 	  break;
-	case GALACTIC:
-	case SUPERGALACTIC:
-	case ECLIPTIC:
-	case HELIOECLIPTIC:
+	case Coord::GALACTIC:
+	case Coord::SUPERGALACTIC:
+	case Coord::ECLIPTIC:
+	case Coord::HELIOECLIPTIC:
 	  xx = zeroTWOPI(xx);
 	  setAstFormat(ast[ii],1,"+dms.3");
 	  setAstFormat(ast[ii],2,"+dms.3");
@@ -2386,7 +2441,7 @@ char* FitsImage::ASTpix2wcs(Vector in, CoordSystem sys, SkyFrame sky,
 	}
 
 	str << astFormat(ast[ii], 1, xx) << ' ' << astFormat(ast[ii], 2, yy) 
-	    << ' ' << skyFrameStr_[sky] << ends;
+	    << ' ' << coord.skyFrameStr(sky) << ends;
 	break;
       }
     }
@@ -2405,11 +2460,11 @@ char* FitsImage::ASTpix2wcs(Vector in, CoordSystem sys, SkyFrame sky,
   return lbuf;
 }
 
-Vector FitsImage::ASTwcs2pix(Vector in, CoordSystem sys, SkyFrame sky)
+Vector FitsImage::ASTwcs2pix(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   astClearStatus;
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && ast && ast[ii]) {
     double xx =0;
     double yy =0;
@@ -2434,7 +2489,7 @@ Vector FitsImage::ASTwcs2pix(Vector in, CoordSystem sys, SkyFrame sky)
 }
 
 Vector* FitsImage::ASTwcs2pix(Vector* in, int num, 
-			      CoordSystem sys, SkyFrame sky)
+			      Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   astClearStatus;
   double xin[num];
@@ -2448,7 +2503,7 @@ Vector* FitsImage::ASTwcs2pix(Vector* in, int num,
     yin[ii] = (in[ii])[1];
   }
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && ast && ast[ii]) {
     double xx =0;
     double yy =0;
@@ -2481,11 +2536,11 @@ Vector* FitsImage::ASTwcs2pix(Vector* in, int num,
   return out;
 }
 
-double FitsImage::ASTwcsdist(Vector a, Vector b, CoordSystem sys)
+double FitsImage::ASTwcsdist(Vector a, Vector b, Coord::CoordSystem sys)
 {
   astClearStatus;
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   double rr=0;
   if (ii>=0 && ast && ast[ii]) {
     if (astIsASkyFrame(astGetFrame(ast[ii], AST__CURRENT))) {
@@ -2506,12 +2561,12 @@ double FitsImage::ASTwcsdist(Vector a, Vector b, CoordSystem sys)
 }
 
 // WCSSUB
-Vector FitsImage::WCSpix2wcs(Vector in, CoordSystem sys, SkyFrame sky)
+Vector FitsImage::WCSpix2wcs(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && wcs && wcs[ii]) {
     if (hasWCSCel(sys))
-      wcsoutinit(wcs[ii], skyFrameStr_[sky]);
+      wcsoutinit(wcs[ii], coord.skyFrameStr(sky));
     else
       wcsoutinit(wcs[ii], ::getradecsys(wcs[ii]));
 
@@ -2526,20 +2581,20 @@ Vector FitsImage::WCSpix2wcs(Vector in, CoordSystem sys, SkyFrame sky)
   return Vector();
 }
 
-char* FitsImage::WCSpix2wcs(Vector in, CoordSystem sys, SkyFrame sky,
-			    SkyFormat format, char* lbuf, int len)
+char* FitsImage::WCSpix2wcs(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			    Coord::SkyFormat format, char* lbuf, int len)
 {
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && wcs && wcs[ii]) {
     if (hasWCSCel(sys)) {
-      wcsoutinit(wcs[ii], skyFrameStr_[sky]);
+      wcsoutinit(wcs[ii], coord.skyFrameStr(sky));
 
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	setwcsdeg(wcs[ii],1);
 	wcs[ii]->ndec = 5;
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	setwcsdeg(wcs[ii],0);
 	wcs[ii]->ndec = 3;
 	break;
@@ -2556,12 +2611,12 @@ char* FitsImage::WCSpix2wcs(Vector in, CoordSystem sys, SkyFrame sky,
   return lbuf;
 }
 
-Vector FitsImage::WCSwcs2pix(Vector in, CoordSystem sys, SkyFrame sky)
+Vector FitsImage::WCSwcs2pix(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && wcs && wcs[ii]) {
     if (hasWCSCel(sys))
-      wcsininit(wcs[ii], skyFrameStr_[sky]);
+      wcsininit(wcs[ii], coord.skyFrameStr(sky));
     else
       wcsininit(wcs[ii], ::getradecsys(wcs[ii]));
 
@@ -2582,9 +2637,9 @@ Vector FitsImage::WCSwcs2pix(Vector in, CoordSystem sys, SkyFrame sky)
   return Vector();
 }
 
-double FitsImage::WCSwcsdist(Vector a, Vector b, CoordSystem sys)
+double FitsImage::WCSwcsdist(Vector a, Vector b, Coord::CoordSystem sys)
 {
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && wcs && wcs[ii])
     return ::wcsdist(a[0],a[1],b[0],b[1]);
 
@@ -2592,17 +2647,17 @@ double FitsImage::WCSwcsdist(Vector a, Vector b, CoordSystem sys)
   return 0;
 }
 
-int FitsImage::hasWCS(CoordSystem sys)
+int FitsImage::hasWCS(Coord::CoordSystem sys)
 {
-  int ii = sys-WCS;
-  return (sys>=WCS && ast && ast[ii]) ? 1 : 0;
+  int ii = sys-Coord::WCS;
+  return (sys>=Coord::WCS && ast && ast[ii]) ? 1 : 0;
 }
 
-int FitsImage::hasWCSEqu(CoordSystem sys)
+int FitsImage::hasWCSEqu(Coord::CoordSystem sys)
 {
   astClearStatus;
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && ast && ast[ii])
     if (astIsASkyFrame(astGetFrame(ast[ii], AST__CURRENT))) {
       // special case of xLON/xLAT
@@ -2629,11 +2684,11 @@ int FitsImage::hasWCSEqu(CoordSystem sys)
   return 0;
 }
 
-int FitsImage::hasWCSCel(CoordSystem sys)
+int FitsImage::hasWCSCel(Coord::CoordSystem sys)
 {
   astClearStatus;
 
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   if (ii>=0 && ast && ast[ii])
     if (astIsASkyFrame(astGetFrame(ast[ii], AST__CURRENT)))
       return 1;
@@ -2643,19 +2698,19 @@ int FitsImage::hasWCSCel(CoordSystem sys)
 
 // WCSX
 
-int FitsImage::hasWCSx(CoordSystem sys, int ss)
+int FitsImage::hasWCSx(Coord::CoordSystem sys, int ss)
 {
   int rr = ss-2;
-  int ii = sys-WCS;
+  int ii = sys-Coord::WCS;
   int kk = WCSXMAX*rr+ii;
-  return (rr<WCSXMAX && sys>=WCS && wcsx[kk]) ? 1 : 0;
+  return (rr<WCSXMAX && sys>=Coord::WCS && wcsx[kk]) ? 1 : 0;
 }
 
-double FitsImage::pix2wcsx(double in, CoordSystem sys, int ss)
+double FitsImage::pix2wcsx(double in, Coord::CoordSystem sys, int ss)
 {
   if (hasWCSx(sys,ss)) {
     int rr = ss-2;
-    int ii = sys-WCS;
+    int ii = sys-Coord::WCS;
     int kk = WCSXMAX*rr+ii;
     return (in-crpixx[kk])*cdx[kk] + crvalx[kk];
   }
@@ -2663,11 +2718,11 @@ double FitsImage::pix2wcsx(double in, CoordSystem sys, int ss)
     return in;
 }
 
-double FitsImage::wcs2pixx(double in, CoordSystem sys, int ss)
+double FitsImage::wcs2pixx(double in, Coord::CoordSystem sys, int ss)
 {
   if (hasWCSx(sys,ss)) {
     int rr = ss-2;
-    int ii = sys-WCS;
+    int ii = sys-Coord::WCS;
     int kk = WCSXMAX*rr+ii;
     return (in-crvalx[kk])/cdx[kk] + crpixx[kk];
   }
@@ -2734,8 +2789,9 @@ void FitsImage::astinit(int ii)
     return;
   }
 
-  // DSS goes straight to AST
-  if (wcs[ii]->prjcode==WCS_DSS)
+  // DSS and HPX goes straight to AST
+  if (wcs[ii]->prjcode==WCS_DSS || 
+      (wcs[ii]->prjcode==WCS_LIN && !strncmp(wcs[ii]->ptype,"HPX",3)))
     ast[ii] = fits2ast();
   else
     ast[ii] = wcs2ast(ii);
@@ -2745,7 +2801,7 @@ void FitsImage::astinit(int ii)
 
   // set default skyframe
   if (astIsASkyFrame(astGetFrame(ast[ii], AST__CURRENT)))
-    setAstSkyFrame(ast[ii],FK5);
+    setAstSkyFrame(ast[ii],Coord::FK5);
 
   if (DebugAST)
     astShow(ast[ii]);
@@ -2774,7 +2830,7 @@ void FitsImage::setAstFormat(AstFrameSet* aa, int id, const char* format)
   astSet(aa, str.str().c_str());
 }
 
-void FitsImage::setAstSkyFrame(AstFrameSet* aa, SkyFrame sky)
+void FitsImage::setAstSkyFrame(AstFrameSet* aa, Coord::SkyFrame sky)
 {
   // is sky frame
   if (!astIsASkyFrame(astGetFrame(aa, AST__CURRENT)))
@@ -2789,44 +2845,44 @@ void FitsImage::setAstSkyFrame(AstFrameSet* aa, SkyFrame sky)
     return;
 
   switch (sky) {
-  case FK4_NO_E:
+  case Coord::FK4_NO_E:
     if (!strncmp(str,"FK4-NO-E",8))
       return;
     astSet(aa, "System=FK4-NO-E, Equinox=B1950");
     return;
-  case FK4:
+  case Coord::FK4:
     if (!strncmp(str,"FK4",3))
       return;
     astSet(aa, "System=FK4, Equinox=B1950");
     return;
-  case FK5:
+  case Coord::FK5:
     if (!strncmp(str,"FK5",3))
       return;
     astSet(aa, "System=FK5, Equinox=J2000");
     return;
-  case ICRS:
+  case Coord::ICRS:
     if (!strncmp(str,"ICRS",4))
       return;
     astSet(aa, "System=ICRS");
     return;
-  case GALACTIC:
+  case Coord::GALACTIC:
     if (!strncmp(str,"GALACTIC",8))
       return;
     astSet(aa, "System=GALACTIC");
     return;
-  case SUPERGALACTIC:
+  case Coord::SUPERGALACTIC:
     if (!strncmp(str,"SUPERGALACTIC",13))
       return;
     astSet(aa, "System=SUPERGALACTIC");
     return;
-  case ECLIPTIC:
+  case Coord::ECLIPTIC:
     if (!strncmp(str,"ECLIPTIC",8))
       return;
     astSet(aa, "System=ECLIPTIC");
     // get AST to agree with WCSSUBS
     astSetD(aa, "EQUINOX", astGetD(aa, "EPOCH"));
     return;
-  case HELIOECLIPTIC:
+  case Coord::HELIOECLIPTIC:
     if (!strncmp(str,"HELIOECLIPTIC",13))
       return;
     astSet(aa, "System=HELIOECLIPTIC");
@@ -2916,10 +2972,10 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
       putFitsCard(chan, "CTYPE2", str.str().c_str());
     }
   }
-  else if (wcs[ii]->prjcode == WCS_LIN && wcs[ii]->distcode) {
-    // this is not a mistake, WCS manges the ctype[0]
-    putFitsCard(chan, "CTYPE1", wcs[ii]->ctype[1]);
-    putFitsCard(chan, "CTYPE2", wcs[ii]->ctype[1]);
+  else if (wcs[ii]->prjcode == WCS_PIX || wcs[ii]->prjcode == WCS_LIN) {
+    // this is not a mistake, WCS manges the ctype[0] and ctype[1]
+    putFitsCard(chan, "CTYPE1", wcs[ii]->c1type);
+    putFitsCard(chan, "CTYPE2", wcs[ii]->c2type);
   }
   else {
     putFitsCard(chan, "CTYPE1", wcs[ii]->ctype[0]);
@@ -2943,7 +2999,7 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
     ostringstream pc;
     pc << "PC1_1" << alt << ends;
 
-    if (fits->find(cd.str().c_str())) {
+    if (fits->find(cd.str().c_str(), wcsHeader)) {
       if (!wcs[ii]->cd[1] && !wcs[ii]->cd[2] && !wcs[ii]->rot &&
 	  wcs[ii]->latpole == 999 && wcs[ii]->longpole == 999) {
 	// simple case
@@ -2957,29 +3013,41 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
 	putFitsCard(chan, "CD2_2", wcs[ii]->cd[3]);
       }
     }
-    else if (fits->find(cdelt.str().c_str())) {
+    else if (fits->find(cdelt.str().c_str(), wcsHeader)) {
       putFitsCard(chan, "CDELT1", wcs[ii]->cdelt[0]);
       putFitsCard(chan, "CDELT2", wcs[ii]->cdelt[1]);
 
-      if (fits->find(pc.str().c_str())) {
+      if (fits->find(pc.str().c_str(), wcsHeader)) {
 	putFitsCard(chan, "PC1_1", wcs[ii]->pc[0]);
 	putFitsCard(chan, "PC1_2", wcs[ii]->pc[1]);
 	putFitsCard(chan, "PC2_1", wcs[ii]->pc[2]);
 	putFitsCard(chan, "PC2_2", wcs[ii]->pc[3]);
       }
-      else if (!ii && fits->find("PC001001")) {
+      else if (!ii && fits->find("PC001001", wcsHeader)) {
 	putFitsCard(chan, "PC001001", wcs[ii]->pc[0]);
 	putFitsCard(chan, "PC001002", wcs[ii]->pc[1]);
 	putFitsCard(chan, "PC002001", wcs[ii]->pc[2]);
 	putFitsCard(chan, "PC002002", wcs[ii]->pc[3]);
       }
       else {
-	if (!ii && fits->find("CROTA1"))
+	if (!ii && fits->find("CROTA1", wcsHeader))
 	  putFitsCard(chan, "CROTA1", wcs[ii]->rot);
-	if (!ii && fits->find("CROTA2"))
+	if (!ii && fits->find("CROTA2", wcsHeader))
 	  putFitsCard(chan, "CROTA2", wcs[ii]->rot);
       }
     }
+    else if (!wcs[ii]->cd[0] && 
+	     !wcs[ii]->cd[1] && 
+	     !wcs[ii]->cd[2] && 
+	     !wcs[ii]->cd[3]) {
+      // sanity check
+      putFitsCard(chan, "CDELT1", wcs[ii]->cdelt[0]);
+      putFitsCard(chan, "CDELT2", wcs[ii]->cdelt[1]);
+      putFitsCard(chan, "PC1_1", wcs[ii]->pc[0]);
+      putFitsCard(chan, "PC1_2", wcs[ii]->pc[1]);
+      putFitsCard(chan, "PC2_1", wcs[ii]->pc[2]);
+      putFitsCard(chan, "PC2_2", wcs[ii]->pc[3]);
+    } 
     else {
       putFitsCard(chan, "CD1_1", wcs[ii]->cd[0]);
       putFitsCard(chan, "CD1_2", wcs[ii]->cd[1]);
@@ -3031,8 +3099,8 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
       ostringstream str,str2;
       str << "PV" << i << '_' << m << alt << ends;
       str2 << "PV" << i << '_' << m << ends;
-      if (fits->find(str.str().c_str())) {
-	double val = fits->getReal(str.str().c_str(),0);
+      if (fits->find(str.str().c_str(), wcsHeader)) {
+	double val = fits->getReal(str.str().c_str(),0, wcsHeader);
 	putFitsCard(chan, str2.str().c_str(), val);
       }
     }
@@ -3044,8 +3112,8 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
       ostringstream str,str2;
       str << "QV" << i << '_' << m << alt << ends;
       str2 << "QV" << i << '_' << m << ends;
-      if (fits->find(str.str().c_str())) {
-	double val = fits->getReal(str.str().c_str(),0);
+      if (fits->find(str.str().c_str(), wcsHeader)) {
+	double val = fits->getReal(str.str().c_str(),0, wcsHeader);
 	putFitsCard(chan, str2.str().c_str(), val);
       }
     }
@@ -3057,8 +3125,8 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
       for (int ii=1; ii<=9; ii++) {
 	ostringstream str;
 	str << "WAT" << jj << "_00" << ii << ends;
-	if (fits->find(str.str().c_str())) {
-	  char* val = fits->getString(str.str().c_str());
+	if (fits->find(str.str().c_str(), wcsHeader)) {
+	  char* val = fits->getString(str.str().c_str(), wcsHeader);
 	  if (val) {
 	    putFitsCard(chan, str.str().c_str(), val);
 	    delete [] val;
@@ -3071,29 +3139,29 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
   // -SIP (only primary)
   if (!ii && wcs[ii]->distcode
       && (wcs[ii]->prjcode == WCS_TAN || wcs[ii]->prjcode == WCS_LIN)) {
-    if (fits->find("A_ORDER")) {
-      int val = fits->getInteger("A_ORDER",0);
+    if (fits->find("A_ORDER", wcsHeader)) {
+      int val = fits->getInteger("A_ORDER",0, wcsHeader);
       putFitsCard(chan, "A_ORDER", val);
     }
-    if (fits->find("AP_ORDER")) {
-      int val = fits->getInteger("AP_ORDER",0);
+    if (fits->find("AP_ORDER", wcsHeader)) {
+      int val = fits->getInteger("AP_ORDER",0, wcsHeader);
       putFitsCard(chan, "AP_ORDER", val);
     }
-    if (fits->find("A_DMAX")) {
-      double val = fits->getReal("A_DMAX",0.);
+    if (fits->find("A_DMAX", wcsHeader)) {
+      double val = fits->getReal("A_DMAX",0, wcsHeader);
       putFitsCard(chan, "A_DMAX", val);
     }
 
-    if (fits->find("B_ORDER")) {
-      int val = fits->getInteger("B_ORDER",0);
+    if (fits->find("B_ORDER", wcsHeader)) {
+      int val = fits->getInteger("B_ORDER",0, wcsHeader);
       putFitsCard(chan, "B_ORDER", val);
     }
-    if (fits->find("BP_ORDER")) {
-      int val = fits->getInteger("BP_ORDER",0);
+    if (fits->find("BP_ORDER", wcsHeader)) {
+      int val = fits->getInteger("BP_ORDER",0, wcsHeader);
       putFitsCard(chan, "BP_ORDER", val);
     }
-    if (fits->find("B_DMAX")) {
-      double val = fits->getReal("B_DMAX",0.);
+    if (fits->find("B_DMAX", wcsHeader)) {
+      double val = fits->getReal("B_DMAX",0, wcsHeader);
       putFitsCard(chan, "B_DMAX", val);
     }
 
@@ -3102,32 +3170,32 @@ AstFrameSet* FitsImage::wcs2ast(int ii)
 	{
 	  ostringstream str;
 	  str << "A_" << jj << "_" << ii << ends;
-	  if (fits->find(str.str().c_str())) {
-	    double val = fits->getReal(str.str().c_str(),0.);
+	  if (fits->find(str.str().c_str(), wcsHeader)) {
+	    double val = fits->getReal(str.str().c_str(),0, wcsHeader);
 	    putFitsCard(chan, str.str().c_str(), val);
 	  }
 	}
 	{
 	  ostringstream str;
 	  str << "AP_" << jj << "_" << ii << ends;
-	  if (fits->find(str.str().c_str())) {
-	    double val = fits->getReal(str.str().c_str(),0.);
+	  if (fits->find(str.str().c_str(), wcsHeader)) {
+	    double val = fits->getReal(str.str().c_str(),0, wcsHeader);
 	    putFitsCard(chan, str.str().c_str(), val);
 	  }
 	}
 	{
 	  ostringstream str;
 	  str << "B_" << jj << "_" << ii << ends;
-	  if (fits->find(str.str().c_str())) {
-	    double val = fits->getReal(str.str().c_str(),0.);
+	  if (fits->find(str.str().c_str(), wcsHeader)) {
+	    double val = fits->getReal(str.str().c_str(),0, wcsHeader);
 	    putFitsCard(chan, str.str().c_str(), val);
 	  }
 	}
 	{
 	  ostringstream str;
 	  str << "BP_" << jj << "_" << ii << ends;
-	  if (fits->find(str.str().c_str())) {
-	    double val = fits->getReal(str.str().c_str(),0.);
+	  if (fits->find(str.str().c_str(), wcsHeader)) {
+	    double val = fits->getReal(str.str().c_str(),0, wcsHeader);
 	    putFitsCard(chan, str.str().c_str(), val);
 	  }
 	}
diff --git a/saotk/frame/fitsimage.h b/saotk/frame/fitsimage.h
index 3cb78ce..b7944ed 100644
--- a/saotk/frame/fitsimage.h
+++ b/saotk/frame/fitsimage.h
@@ -119,23 +119,23 @@ class FitsImage {
   void wcsShow(WorldCoor*);
   void astinit(int);
   int checkAst(double, double);
-  AstFrameSet* fits2ast();
+  AstFrameSet* fits2ast();  
   AstFrameSet* wcs2ast(int);
   void putFitsCard(void* chan, const char* key, const char* value);
   void putFitsCard(void* chan, const char* key, int value);
   void putFitsCard(void* chan, const char* key, double value);
 
-  char* ASTpix2wcs(Vector, CoordSystem, SkyFrame, SkyFormat, char*, int);
-  Vector ASTpix2wcs(Vector, CoordSystem, SkyFrame);
-  Vector* ASTpix2wcs(Vector*, int, CoordSystem, SkyFrame);
-  Vector ASTwcs2pix(Vector, CoordSystem, SkyFrame);
-  Vector* ASTwcs2pix(Vector*, int, CoordSystem, SkyFrame);
-  double ASTwcsdist(Vector, Vector, CoordSystem);
+  char* ASTpix2wcs(Vector, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, char*, int);
+  Vector ASTpix2wcs(Vector, Coord::CoordSystem, Coord::SkyFrame);
+  Vector* ASTpix2wcs(Vector*, int, Coord::CoordSystem, Coord::SkyFrame);
+  Vector ASTwcs2pix(Vector, Coord::CoordSystem, Coord::SkyFrame);
+  Vector* ASTwcs2pix(Vector*, int, Coord::CoordSystem, Coord::SkyFrame);
+  double ASTwcsdist(Vector, Vector, Coord::CoordSystem);
 
-  char* WCSpix2wcs(Vector, CoordSystem, SkyFrame, SkyFormat, char*, int);
-  Vector WCSpix2wcs(Vector, CoordSystem, SkyFrame);
-  Vector WCSwcs2pix(Vector, CoordSystem, SkyFrame);
-  double WCSwcsdist(Vector, Vector, CoordSystem);
+  char* WCSpix2wcs(Vector, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, char*, int);
+  Vector WCSpix2wcs(Vector, Coord::CoordSystem, Coord::SkyFrame);
+  Vector WCSwcs2pix(Vector, Coord::CoordSystem, Coord::SkyFrame);
+  double WCSwcsdist(Vector, Vector, Coord::CoordSystem);
 
  public:
   Matrix wcsToRef;          // iraf/wcs matrix
@@ -264,6 +264,8 @@ class FitsImage {
   void setBinColMinMax(const char* str, const Vector& lim)
     {if (fits_) fits_->setColMinMax(str,lim);}
 
+  int hasBinCol(const char*);
+
   const char* getObjectName() {return objectName;}
   void setObjectName(const char*);
   const char* getRootBaseFileName() {return rootBaseFileName;}
@@ -302,20 +304,20 @@ class FitsImage {
   int hasDTMV() {return keyDTMV;}
   int isIIS() {return iisMode;}
 
-  char* pix2wcs(Vector in, CoordSystem sys, SkyFrame sky, SkyFormat format, char* lbuf, int len) 
+  char* pix2wcs(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, char* lbuf, int len) 
   {return ASTpix2wcs(in, sys, sky, format, lbuf, len);}
-  Vector pix2wcs(Vector in, CoordSystem sys, SkyFrame sky)
+  Vector pix2wcs(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky)
   {return ASTpix2wcs(in, sys, sky);}
-  Vector wcs2pix(Vector in, CoordSystem sys, SkyFrame sky)
+  Vector wcs2pix(Vector in, Coord::CoordSystem sys, Coord::SkyFrame sky)
   {return ASTwcs2pix(in, sys, sky);}
-  double wcsdist(Vector aa, Vector bb, CoordSystem sys)
+  double wcsdist(Vector aa, Vector bb, Coord::CoordSystem sys)
   {return ASTwcsdist(aa, bb, sys);}
 
-  double pix2wcsx(double, CoordSystem, int);
-  double wcs2pixx(double, CoordSystem, int);
+  double pix2wcsx(double, Coord::CoordSystem, int);
+  double wcs2pixx(double, Coord::CoordSystem, int);
 
   void initWCS(FitsHead*, FitsHead*);
-  void listWCS(ostream&, CoordSystem);
+  void listWCS(ostream&, Coord::CoordSystem);
   void resetWCS();
   void replaceWCS(FitsHead*);
   void appendWCS(FitsHead*);
@@ -324,25 +326,27 @@ class FitsImage {
 
   void processKeywords();
   int processKeywordsIRAF(FitsImage*);
-  int processKeywordsWCS(FitsImage*, CoordSystem);
-
-  WorldCoor* getWCS(CoordSystem sys) 
-    {return (wcs && wcs[sys-WCS]) ? wcs[sys-WCS] : NULL;}
-  const char* getWCSName(CoordSystem sys) 
-    {return (wcs && wcs[sys-WCS]) ? wcs[sys-WCS]->wcsname : NULL;}
-  Orientation getWCSOrientation(CoordSystem, SkyFrame);
-  double getWCSRotation(CoordSystem, SkyFrame);
-  Vector getWCScdelt(CoordSystem);
-
-  void setAstSkyFrame(AstFrameSet*, SkyFrame);
+  int processKeywordsWCS(FitsImage*, Coord::CoordSystem);
+
+  WorldCoor* getWCS(Coord::CoordSystem sys) 
+  {return (wcs && wcs[sys-Coord::WCS]) ? wcs[sys-Coord::WCS] : NULL;}
+  const char* getWCSName(Coord::CoordSystem sys) 
+  {return (wcs && wcs[sys-Coord::WCS]) ? wcs[sys-Coord::WCS]->wcsname : NULL;}
+  Coord::Orientation getWCSOrientation(Coord::CoordSystem, Coord::SkyFrame);
+  double getWCSRotation(Coord::CoordSystem, Coord::SkyFrame);
+  Vector getWCScdelt(Coord::CoordSystem);
+  Vector getWCScrpix(Coord::CoordSystem);
+  Vector getWCScrval(Coord::CoordSystem);
+
+  void setAstSkyFrame(AstFrameSet*, Coord::SkyFrame);
   void setAstFormat(AstFrameSet*, int, const char*);
-  AstFrameSet* getAST(CoordSystem sys) 
-    {return (ast && ast[sys-WCS]) ? ast[sys-WCS] : NULL;}
+  AstFrameSet* getAST(Coord::CoordSystem sys) 
+    {return (ast && ast[sys-Coord::WCS]) ? ast[sys-Coord::WCS] : NULL;}
 
-  int hasWCS(CoordSystem);
-  int hasWCSx(CoordSystem, int);
-  int hasWCSEqu(CoordSystem);
-  int hasWCSCel(CoordSystem);
+  int hasWCS(Coord::CoordSystem);
+  int hasWCSx(Coord::CoordSystem, int);
+  int hasWCSEqu(Coord::CoordSystem);
+  int hasWCSCel(Coord::CoordSystem);
 
   void updateMatrices(Matrix&, Matrix&, Matrix&);
   void updateMatrices(Matrix3d&);
@@ -356,22 +360,22 @@ class FitsImage {
   void updatePS(Matrix);
   void updatePS(Matrix3d);
 
-  Matrix& matrixToData(InternalSystem);
-  Matrix3d& matrixToData3d(InternalSystem);
-
-  Vector mapFromRef(const Vector&, CoordSystem, SkyFrame =FK5);
-  double mapFromRef3(double, CoordSystem, int);
-  void mapFromRef(const Vector&, CoordSystem, SkyFrame, SkyFormat, char*,int);
-  Vector mapToRef(const Vector&, CoordSystem, SkyFrame =FK5);
-  double mapToRef3(double, CoordSystem, int);
-  double mapLenFromRef(double, CoordSystem, SkyDist =DEGREE);
-  Vector mapLenFromRef(const Vector&, CoordSystem, SkyDist =DEGREE);
-  double mapLenToRef(double, CoordSystem, SkyDist =DEGREE);
-  Vector mapLenToRef(const Vector&, CoordSystem, SkyDist =DEGREE);
-  Vector mapLenFromImage(const Vector&, CoordSystem, SkyDist =DEGREE);
-  Vector mapLenToImage(const Vector&, CoordSystem, SkyDist =DEGREE);
-  double mapDistFromRef(const Vector&, const Vector&, CoordSystem,
-		       SkyDist =DEGREE);
+  Matrix& matrixToData(Coord::InternalSystem);
+  Matrix3d& matrixToData3d(Coord::InternalSystem);
+
+  Vector mapFromRef(const Vector&, Coord::CoordSystem, Coord::SkyFrame =Coord::FK5);
+  double mapFromRef3(double, Coord::CoordSystem, int);
+  void mapFromRef(const Vector&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, char*,int);
+  Vector mapToRef(const Vector&, Coord::CoordSystem, Coord::SkyFrame =Coord::FK5);
+  double mapToRef3(double, Coord::CoordSystem, int);
+  double mapLenFromRef(double, Coord::CoordSystem, Coord::SkyDist =Coord::DEGREE);
+  Vector mapLenFromRef(const Vector&, Coord::CoordSystem, Coord::SkyDist =Coord::DEGREE);
+  double mapLenToRef(double, Coord::CoordSystem, Coord::SkyDist =Coord::DEGREE);
+  Vector mapLenToRef(const Vector&, Coord::CoordSystem, Coord::SkyDist =Coord::DEGREE);
+  Vector mapLenFromImage(const Vector&, Coord::CoordSystem, Coord::SkyDist =Coord::DEGREE);
+  Vector mapLenToImage(const Vector&, Coord::CoordSystem, Coord::SkyDist =Coord::DEGREE);
+  double mapDistFromRef(const Vector&, const Vector&, Coord::CoordSystem,
+		       Coord::SkyDist =Coord::DEGREE);
 
 // we assume that 'data' is valid
 
@@ -418,24 +422,22 @@ class FitsImage {
   int findKeyword(const char*);
 
   int saveFitsImageFile(const char* fn, int compress)
-    {return image_ ? image_->saveFitsImageFile(fn, compress) : 0;}
+  {return image_ ? image_->saveFitsImageFile(fn, compress) : 0;}
 
-  int saveFitsImageChannel(Tcl_Interp* interp, const char* ch, 
-				      int compress)
-    {return image_ ? image_->saveFitsImageChannel(interp, ch, compress) : 0;}
+  int saveFitsImageChannel(Tcl_Interp* interp, const char* ch, int compress)
+  {return image_ ? image_->saveFitsImageChannel(interp, ch, compress) : 0;}
 
   int saveFitsImageSocket(int s, int compress)
-    {return image_ ? image_->saveFitsImageSocket(s, compress) : 0;}
+  {return image_ ? image_->saveFitsImageSocket(s, compress) : 0;}
 
   int saveFitsTableFile(const char* fn, int compress)
-    {return fits_ ? fits_->saveFitsTableFile(fn, compress) : 0;}
+  {return fits_ ? fits_->saveFitsTableFile(fn, compress) : 0;}
 
-  int saveFitsTableChannel(Tcl_Interp* interp, const char* ch, 
-				      int compress)
-    {return fits_ ? fits_->saveFitsTableChannel(interp, ch, compress): 0;}
+  int saveFitsTableChannel(Tcl_Interp* interp, const char* ch, int compress)
+  {return fits_ ? fits_->saveFitsTableChannel(interp, ch, compress): 0;}
 
   int saveFitsTableSocket(int s, int compress)
-    {return fits_ ? fits_->saveFitsTableSocket(s, compress) : 0;}
+  {return fits_ ? fits_->saveFitsTableSocket(s, compress) : 0;}
 
   int saveArrayFile(const char* fn, FitsFile::ArchType endian)
   {return image_ ? image_->saveArrayFile(fn, endian) : 0;}
@@ -625,6 +627,23 @@ public:
   FitsImageArrVar(Base*, Tcl_Interp*, const char*, const char*, int);
 };
 
+// Photo
+
+class FitsImagePhoto : public FitsImage {
+public:
+  FitsImagePhoto(Base*, Tcl_Interp*, const char*, const char*, int);
+};
+
+class FitsImagePhotoCube : public FitsImage {
+public:
+  FitsImagePhotoCube(Base*, Tcl_Interp*, const char*, const char*, int);
+};
+
+class FitsImagePhotoCubeNext : public FitsImage {
+public:
+  FitsImagePhotoCubeNext(Base*, const char*, FitsFile*, int);
+};
+
 // Mosaic
 
 class FitsImageMosaicAlloc : public FitsImage {
diff --git a/saotk/frame/fitsmap.C b/saotk/frame/fitsmap.C
index 34a6e6a..e72e7be 100644
--- a/saotk/frame/fitsmap.C
+++ b/saotk/frame/fitsmap.C
@@ -6,16 +6,16 @@
 
 // Map Point
 
-Vector FitsImage::mapFromRef(const Vector& vv, CoordSystem out, SkyFrame sky)
+Vector FitsImage::mapFromRef(const Vector& vv, Coord::CoordSystem out, Coord::SkyFrame sky)
 {
   switch (out) {
-  case IMAGE:
+  case Coord::IMAGE:
     return vv * refToImage;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     return vv * refToPhysical;
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     return vv * refToAmplifier;
-  case DETECTOR:
+  case Coord::DETECTOR:
     return vv * refToDetector;
   default:
     if (hasWCS(out))
@@ -26,8 +26,8 @@ Vector FitsImage::mapFromRef(const Vector& vv, CoordSystem out, SkyFrame sky)
   return vv;
 }      
 
-void FitsImage::mapFromRef(const Vector& vv, CoordSystem out, SkyFrame sky,
-			    SkyFormat format, char* buf, int length)
+void FitsImage::mapFromRef(const Vector& vv, Coord::CoordSystem out, Coord::SkyFrame sky,
+			    Coord::SkyFormat format, char* buf, int length)
 {
   if (hasWCS(out)) {
     pix2wcs(vv * refToImage, out, sky, format, buf, length);
@@ -38,16 +38,16 @@ void FitsImage::mapFromRef(const Vector& vv, CoordSystem out, SkyFrame sky,
   strcpy(buf,"");
 }
 
-Vector FitsImage::mapToRef(const Vector& vv, CoordSystem in, SkyFrame sky)
+Vector FitsImage::mapToRef(const Vector& vv, Coord::CoordSystem in, Coord::SkyFrame sky)
 {
   switch (in) {
-  case IMAGE:
+  case Coord::IMAGE:
     return vv * imageToRef;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     return vv * physicalToRef;
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     return vv * amplifierToRef;
-  case DETECTOR:
+  case Coord::DETECTOR:
     return vv * detectorToRef;
   default:
     if (hasWCS(in))
@@ -60,23 +60,23 @@ Vector FitsImage::mapToRef(const Vector& vv, CoordSystem in, SkyFrame sky)
 
 // Map Length
 
-double FitsImage::mapLenFromRef(double dd, CoordSystem sys, SkyDist dist)
+double FitsImage::mapLenFromRef(double dd, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Vector rr = mapLenFromRef(Vector(dd,0),sys,dist);
   return rr[0];
 }
 
-Vector FitsImage::mapLenFromRef(const Vector& vv, CoordSystem sys, SkyDist dist)
+Vector FitsImage::mapLenFromRef(const Vector& vv, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   // really from image coords
   switch (sys) {
-  case IMAGE:
+  case Coord::IMAGE:
     return mapLen(vv,refToImage);
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     return mapLen(vv,refToPhysical);
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     return mapLen(vv,refToPhysical * physicalToAmplifier);
-  case DETECTOR:
+  case Coord::DETECTOR:
     return mapLen(vv,refToPhysical * physicalToDetector);
   default:
     if (hasWCS(sys)) {
@@ -86,12 +86,12 @@ Vector FitsImage::mapLenFromRef(const Vector& vv, CoordSystem sys, SkyDist dist)
 
       if (hasWCSCel(sys)) {
 	switch (dist) {
-	case DEGREE:
+	case Coord::DEGREE:
 	  break;
-	case ARCMIN:
+	case Coord::ARCMIN:
 	  out *= 60;
 	  break;
-	case ARCSEC:
+	case Coord::ARCSEC:
 	  out *=60*60;
 	  break;
 	}
@@ -104,22 +104,22 @@ Vector FitsImage::mapLenFromRef(const Vector& vv, CoordSystem sys, SkyDist dist)
   return Vector();
 }
 
-double FitsImage::mapLenToRef(double dd, CoordSystem sys, SkyDist dist)
+double FitsImage::mapLenToRef(double dd, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Vector rr = mapLenToRef(Vector(dd,0), sys, dist);
   return rr[0];
 }
 
-Vector FitsImage::mapLenToRef(const Vector& vv,CoordSystem sys, SkyDist dist)
+Vector FitsImage::mapLenToRef(const Vector& vv,Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   switch (sys) {
-  case IMAGE:
+  case Coord::IMAGE:
     return mapLen(vv,imageToRef);
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     return mapLen(vv,physicalToRef);
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     return mapLen(vv,amplifierToPhysical * physicalToRef);
-  case DETECTOR:
+  case Coord::DETECTOR:
     return mapLen(vv,detectorToPhysical * physicalToRef);
   default:
     if (hasWCS(sys)) {
@@ -129,12 +129,12 @@ Vector FitsImage::mapLenToRef(const Vector& vv,CoordSystem sys, SkyDist dist)
 
       if (hasWCSCel(sys)) {
 	switch (dist) {
-	case DEGREE:
+	case Coord::DEGREE:
 	  break;
-	case ARCMIN:
+	case Coord::ARCMIN:
 	  out /= 60;
 	  break;
-	case ARCSEC:
+	case Coord::ARCSEC:
 	  out /= 60*60;
 	  break;
 	}
@@ -147,16 +147,16 @@ Vector FitsImage::mapLenToRef(const Vector& vv,CoordSystem sys, SkyDist dist)
   return Vector();
 }
 
-Vector FitsImage::mapLenFromImage(const Vector& vv, CoordSystem sys, SkyDist dist)
+Vector FitsImage::mapLenFromImage(const Vector& vv, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   switch (sys) {
-  case IMAGE:
+  case Coord::IMAGE:
     return vv;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     return mapLen(vv,imageToPhysical);
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     return mapLen(vv,imageToPhysical * physicalToAmplifier);
-  case DETECTOR:
+  case Coord::DETECTOR:
     return mapLen(vv,imageToPhysical * physicalToDetector);
   default:
     if (hasWCS(sys)) {
@@ -166,12 +166,12 @@ Vector FitsImage::mapLenFromImage(const Vector& vv, CoordSystem sys, SkyDist dis
 
       if (hasWCSCel(sys)) {
 	switch (dist) {
-	case DEGREE:
+	case Coord::DEGREE:
 	  break;
-	case ARCMIN:
+	case Coord::ARCMIN:
 	  out *= 60;
 	  break;
-	case ARCSEC:
+	case Coord::ARCSEC:
 	  out *=60*60;
 	  break;
 	}
@@ -184,16 +184,16 @@ Vector FitsImage::mapLenFromImage(const Vector& vv, CoordSystem sys, SkyDist dis
   return Vector();
 }
 
-Vector FitsImage::mapLenToImage(const Vector& vv,CoordSystem sys, SkyDist dist)
+Vector FitsImage::mapLenToImage(const Vector& vv,Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   switch (sys) {
-  case IMAGE:
+  case Coord::IMAGE:
     return vv;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     return mapLen(vv,physicalToImage);
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     return mapLen(vv,amplifierToPhysical * physicalToImage);
-  case DETECTOR:
+  case Coord::DETECTOR:
     return mapLen(vv,detectorToPhysical * physicalToImage);
   default:
     if (hasWCS(sys)) {
@@ -203,12 +203,12 @@ Vector FitsImage::mapLenToImage(const Vector& vv,CoordSystem sys, SkyDist dist)
 
       if (hasWCSCel(sys)) {
 	switch (dist) {
-	case DEGREE:
+	case Coord::DEGREE:
 	  break;
-	case ARCMIN:
+	case Coord::ARCMIN:
 	  out /= 60;
 	  break;
-	case ARCSEC:
+	case Coord::ARCSEC:
 	  out /= 60*60;
 	  break;
 	}
@@ -224,28 +224,28 @@ Vector FitsImage::mapLenToImage(const Vector& vv,CoordSystem sys, SkyDist dist)
 // Map Distance
 
 double FitsImage::mapDistFromRef(const Vector& vv1, const Vector& vv2, 
-				 CoordSystem sys, SkyDist dist)
+				 Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   switch (sys) {
-  case IMAGE:
+  case Coord::IMAGE:
     {
       Vector v1 = vv1 * refToImage;
       Vector v2 = vv2 * refToImage;
       return (v2-v1).length();
     }
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     {
       Vector v1 = vv1 * refToPhysical;
       Vector v2 = vv2 * refToPhysical;
       return (v2-v1).length();
     }
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     {
       Vector v1 = vv1 * refToPhysical * physicalToAmplifier;
       Vector v2 = vv2 * refToPhysical * physicalToAmplifier;
       return (v2-v1).length();
     }
-  case DETECTOR:
+  case Coord::DETECTOR:
     {
       Vector v1 = vv1 * refToPhysical * physicalToDetector;
       Vector v2 = vv2 * refToPhysical * physicalToDetector;
@@ -253,16 +253,16 @@ double FitsImage::mapDistFromRef(const Vector& vv1, const Vector& vv2,
     }
   default:
     if (hasWCS(sys)) {
-      Vector v1 = pix2wcs(vv1 * refToImage, sys, FK5);
-      Vector v2 = pix2wcs(vv2 * refToImage, sys, FK5);
+      Vector v1 = pix2wcs(vv1 * refToImage, sys, Coord::FK5);
+      Vector v2 = pix2wcs(vv2 * refToImage, sys, Coord::FK5);
 
       if (hasWCSCel(sys)) {
 	switch (dist) {
-	case DEGREES:
+	case Coord::DEGREE:
 	  return wcsdist(v1,v2,sys);
-	case ARCMIN:
+	case Coord::ARCMIN:
 	  return wcsdist(v1,v2,sys)*60;
-	case ARCSEC:
+	case Coord::ARCSEC:
 	  return wcsdist(v1,v2,sys)*60*60;
 	}
       }
@@ -275,26 +275,26 @@ double FitsImage::mapDistFromRef(const Vector& vv1, const Vector& vv2,
   return 0;
 }
 
-double FitsImage::mapFromRef3(double vv, CoordSystem out, int ss)
+double FitsImage::mapFromRef3(double vv, Coord::CoordSystem out, int ss)
 {
   switch (out) {
-  case IMAGE:
-  case PHYSICAL:
-  case AMPLIFIER: 
-  case DETECTOR:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::AMPLIFIER: 
+  case Coord::DETECTOR:
     return vv+.5;
   default:
     return pix2wcsx(vv+.5,out,ss);
   }
 }      
 
-double FitsImage::mapToRef3(double vv, CoordSystem in, int ss)
+double FitsImage::mapToRef3(double vv, Coord::CoordSystem in, int ss)
 {
   switch (in) {
-  case IMAGE:
-  case PHYSICAL:
-  case AMPLIFIER: 
-  case DETECTOR:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::AMPLIFIER: 
+  case Coord::DETECTOR:
     return vv-.5;
   default:
     return wcs2pixx(vv,in,ss) -.5;
diff --git a/saotk/frame/fr3dcommand.C b/saotk/frame/fr3dcommand.C
index 94c72e2..10974bb 100644
--- a/saotk/frame/fr3dcommand.C
+++ b/saotk/frame/fr3dcommand.C
@@ -68,10 +68,10 @@ void Frame3dBase::crop3dMotionCmd(const Vector& vv, int which)
 
   // erase 
   if (cropBegin[0]!=cropEnd[0] || cropBegin[1]!=cropEnd[1]) {
-    Vector ll = mapFromRef3d(ss,CANVAS,cropsl_);
-    Vector lr = mapFromRef3d(Vector(tt[0],ss[1]),CANVAS,cropsl_);
-    Vector ur = mapFromRef3d(tt,CANVAS,cropsl_);
-    Vector ul = mapFromRef3d(Vector(ss[0],tt[1]),CANVAS,cropsl_);
+    Vector ll = mapFromRef3d(ss,Coord::CANVAS,cropsl_);
+    Vector lr = mapFromRef3d(Vector(tt[0],ss[1]),Coord::CANVAS,cropsl_);
+    Vector ur = mapFromRef3d(tt,Coord::CANVAS,cropsl_);
+    Vector ul = mapFromRef3d(Vector(ss[0],tt[1]),Coord::CANVAS,cropsl_);
 
     BBox bb(ll);
     bb.bound(lr);
@@ -106,10 +106,10 @@ void Frame3dBase::crop3dMotionCmd(const Vector& vv, int which)
 
   // and draw to window
   {
-    Vector ll = mapFromRef3d(ss,WINDOW,cropsl_);
-    Vector lr = mapFromRef3d(Vector(tt[0],ss[1]),WINDOW,cropsl_);
-    Vector ur = mapFromRef3d(tt,WINDOW,cropsl_);
-    Vector ul = mapFromRef3d(Vector(ss[0],tt[1]),WINDOW,cropsl_);
+    Vector ll = mapFromRef3d(ss,Coord::WINDOW,cropsl_);
+    Vector lr = mapFromRef3d(Vector(tt[0],ss[1]),Coord::WINDOW,cropsl_);
+    Vector ur = mapFromRef3d(tt,Coord::WINDOW,cropsl_);
+    Vector ul = mapFromRef3d(Vector(ss[0],tt[1]),Coord::WINDOW,cropsl_);
 
     XDrawLine(display,Tk_WindowId(tkwin),selectGCXOR,ll[0],ll[1],lr[0],lr[1]);
     XDrawLine(display,Tk_WindowId(tkwin),selectGCXOR,lr[0],lr[1],ur[0],ur[1]);
@@ -132,10 +132,10 @@ void Frame3dBase::crop3dEndCmd(const Vector& vv, int which)
 
   // erase 
   if (cropBegin[0]!=cropEnd[0] || cropBegin[1]!=cropEnd[1]) {
-    Vector ll = mapFromRef3d(ss,CANVAS,cropsl_);
-    Vector lr = mapFromRef3d(Vector(tt[0],ss[1]),CANVAS,cropsl_);
-    Vector ur = mapFromRef3d(tt,CANVAS,cropsl_);
-    Vector ul = mapFromRef3d(Vector(ss[0],tt[1]),CANVAS,cropsl_);
+    Vector ll = mapFromRef3d(ss,Coord::CANVAS,cropsl_);
+    Vector lr = mapFromRef3d(Vector(tt[0],ss[1]),Coord::CANVAS,cropsl_);
+    Vector ur = mapFromRef3d(tt,Coord::CANVAS,cropsl_);
+    Vector ul = mapFromRef3d(Vector(ss[0],tt[1]),Coord::CANVAS,cropsl_);
 
     BBox bb(ll);
     bb.bound(lr);
@@ -207,6 +207,7 @@ void Frame3dBase::crop3dEndCmd(const Vector& vv, int which)
     }
   }
 
+  keyContext->frScale.clearHistogram();
   keyContext->updateClip();
   keyContext->updateContours();
   updateColorScale();
@@ -248,31 +249,31 @@ void Frame3dBase::get3dThreadsCmd()
 void Frame3dBase::get3dViewCmd()
 {
   ostringstream str;
-  str << radToDeg(az_) << ' ' << radToDeg(el_) << ends;
+  str << m180To180(radToDeg(az_)) << ' ' << m180To180(radToDeg(el_)) << ends;
   Tcl_AppendResult(interp, str.str().c_str(), NULL);
 }
 
-void Frame3dBase::getCursorCmd(InternalSystem sys)
+void Frame3dBase::getCursorCmd(Coord::InternalSystem sys)
 {
   Vector aa = Vector(options->width,options->height)/2.;
-  Vector bb = mapToRef(aa,WIDGET);
+  Vector bb = mapToRef(aa,Coord::WIDGET);
   Vector cc = mapFromRef(bb,sys);
   printVector(cc, DEFAULT);
 } 
 
-void Frame3dBase::getCursorCmd(CoordSystem sys, SkyFrame sky, SkyFormat format,
+void Frame3dBase::getCursorCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format,
 			       Precision pp)
 {
   if (keyContext->fits) {
     Vector aa = Vector(options->width,options->height)/2.;
-    Vector bb = mapToRef(aa,WIDGET);
+    Vector bb = mapToRef(aa,Coord::WIDGET);
     printFromRef(keyContext->fits, bb, sys, sky, format, pp);
   }
   else
     printVector(Vector(), DEFAULT);
 } 
 
-void Frame3dBase::gridCmd(CoordSystem sys, SkyFrame sky, SkyFormat format, 
+void Frame3dBase::gridCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, 
 			Grid::GridType type, const char* ops)
 {
   if (grid)
@@ -290,6 +291,13 @@ void Frame3dBase::gridCmd(CoordSystem sys, SkyFrame sky, SkyFormat format,
   update(PIXMAP);
 }
 
+void Frame3dBase::loadPhotoCmd(const char* ph, const char* fn)
+{
+  unloadFits();
+  FitsImage* img = new FitsImagePhotoCube(this, interp, ph, fn, 1);
+  loadDone(currentContext->load(this, PHOTO, fn, img, IMG), IMG);
+}
+
 void Frame3dBase::panCmd(const Vector& v1, const Vector& v2)
 {
   viewCursor_ -= (v1-v2)*Scale(1/zoom_[0],1/zoom_[1]);
@@ -304,17 +312,17 @@ void Frame3dBase::panCmd(const Vector& vv)
   update(MATRIX);
 }
 
-void Frame3dBase::panCmd(const Vector& vv, CoordSystem sys, SkyFrame sky)
+void Frame3dBase::panCmd(const Vector& vv, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!keyContext->fits)
     return;
 
   Vector cc = Vector(options->width,options->height)/2.;
-  Vector dd = mapToRef(cc,WIDGET);
+  Vector dd = mapToRef(cc,Coord::WIDGET);
   Vector uu = keyContext->fits->mapFromRef(dd, sys, sky);
   uu += vv;
   Vector ee = keyContext->fits->mapToRef(uu, sys, sky);
-  Vector ff = mapFromRef(ee,WIDGET);
+  Vector ff = mapFromRef(ee,Coord::WIDGET);
   viewCursor_ += (cc-ff)*Scale(1/zoom_[0],1/zoom_[1]);
 
   update(MATRIX);
@@ -328,13 +336,13 @@ void Frame3dBase::panToCmd(const Vector& vv)
   update(MATRIX);
 }
 
-void Frame3dBase::panToCmd(const Vector& vv, CoordSystem sys, SkyFrame sky)
+void Frame3dBase::panToCmd(const Vector& vv, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!keyContext->fits)
     return;
 
   Vector aa = keyContext->fits->mapToRef(vv, sys, sky);
-  Vector dd = Vector(options->width,options->height)/2. - mapFromRef(aa,WIDGET);
+  Vector dd = Vector(options->width,options->height)/2. - mapFromRef(aa,Coord::WIDGET);
   viewCursor_ += dd*Scale(1/zoom_[0],1/zoom_[1]);
 
   update(MATRIX);
@@ -423,13 +431,13 @@ void Frame3dBase::zoomAboutCmd(const Vector& zz, const Vector& vv)
 }
 
 void Frame3dBase::zoomAboutCmd(const Vector& zz, const Vector& vv, 
-			       CoordSystem sys, SkyFrame sky)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!keyContext->fits)
     return;
 
   Vector aa = keyContext->fits->mapToRef(vv, sys, sky);
-  Vector dd = Vector(options->width,options->height)/2. - mapFromRef(aa,WIDGET);
+  Vector dd = Vector(options->width,options->height)/2. - mapFromRef(aa,Coord::WIDGET);
   viewCursor_ += dd*Scale(1/zoom_[0],1/zoom_[1]);
 
   Vector az = ((Vector&)zz).abs();
@@ -450,13 +458,13 @@ void Frame3dBase::zoomToAboutCmd(const Vector& zz, const Vector& vv)
 }
 
 void Frame3dBase::zoomToAboutCmd(const Vector& zz, const Vector& vv, 
-			       CoordSystem sys, SkyFrame sky)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!keyContext->fits)
     return;
 
   Vector aa = keyContext->fits->mapToRef(vv, sys, sky);
-  Vector dd = Vector(options->width,options->height)/2. - mapFromRef(aa,WIDGET);
+  Vector dd = Vector(options->width,options->height)/2. - mapFromRef(aa,Coord::WIDGET);
   viewCursor_ += dd*Scale(1/zoom_[0],1/zoom_[1]);
 
   zoom_ = ((Vector&)zz).abs();
diff --git a/saotk/frame/fr3dmap.C b/saotk/frame/fr3dmap.C
index 48141f8..2ad5bfa 100644
--- a/saotk/frame/fr3dmap.C
+++ b/saotk/frame/fr3dmap.C
@@ -6,32 +6,37 @@
 #include "frame3dbase.h"
 #include "fitsimage.h"
 
-Vector3d Frame3dBase::mapFromRef3d(const Vector& vv, InternalSystem sys)
+Vector3d Frame3dBase::mapFromRef3d(const Vector& vv, Coord::InternalSystem sys)
 {
   // context->slice() IMAGE (ranges 1-n)
   double sl = keyContext->slice(2)-.5;
   return mapFromRef3d(vv,sys,sl);
 }
 
-Vector3d Frame3dBase::mapFromRef3d(const Vector& vv, InternalSystem sys, 
+Vector3d Frame3dBase::mapFromRef3d(const Vector& vv, Coord::InternalSystem sys, 
 				   double sl)
 {
   // note: sl is in REF=DATA coordinates
   Matrix3d mm;
   switch (sys) {
-  case WIDGET:
+  case Coord::REF:
+    return Vector3d(vv,sl);
+  case Coord::USER:
+    mm = refToUser3d;
+    break;
+  case Coord::WIDGET:
     mm = refToWidget3d;
     break;
-  case CANVAS:
+  case Coord::CANVAS:
     mm = refToCanvas3d;
     break;
-  case WINDOW:
+  case Coord::WINDOW:
     mm = refToWindow3d;
     break;
-  case PANNER:
+  case Coord::PANNER:
     mm = refToPanner3d;
     break;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     mm = refToMagnifier3d;
     break;
   }
@@ -39,16 +44,23 @@ Vector3d Frame3dBase::mapFromRef3d(const Vector& vv, InternalSystem sys,
   return Vector3d(vv,sl)*mm;
 }
 
-Vector3d Frame3dBase::mapToRef3d(const Vector& vv, InternalSystem sys)
+Vector3d Frame3dBase::mapToRef3d(const Vector& vv, Coord::InternalSystem sys)
 {
   // context->slice() IMAGE (ranges 1-n)
   double sl = keyContext->slice(2)-.5;
   return mapToRef3d(vv,sys,sl);
 }
 
-Vector3d Frame3dBase::mapToRef3d(const Vector& vv, InternalSystem sys, 
+Vector3d Frame3dBase::mapToRef3d(const Vector& vv, Coord::InternalSystem sys, 
 				 double sl)
 {
+  switch (sys) {
+  case Coord::REF:
+    return Vector3d(vv,sl);
+  case Coord::USER:
+    return Vector3d(vv,sl)*userToRef3d;
+  }
+ 
   // note: sl is in REF=DATA coordinates
   Vector3d xx = Vector3d(1,0,sl)*refToWidget3d;
   Vector3d yy = Vector3d(0,1,sl)*refToWidget3d;
@@ -64,19 +76,19 @@ Vector3d Frame3dBase::mapToRef3d(const Vector& vv, InternalSystem sys,
 
   Vector ww;
   switch (sys) {
-  case WIDGET:
+  case Coord::WIDGET:
     ww = vv;
     break;
-  case CANVAS:
+  case Coord::CANVAS:
     ww = vv*canvasToWidget;
     break;
-  case WINDOW:
+  case Coord::WINDOW:
     ww = vv*windowToWidget;
     break;
-  case PANNER:
+  case Coord::PANNER:
     ww = vv*pannerToWidget;
     break;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     ww = vv*magnifierToWidget;
     break;
   }
diff --git a/saotk/frame/frame.C b/saotk/frame/frame.C
index b670f4f..603500c 100644
--- a/saotk/frame/frame.C
+++ b/saotk/frame/frame.C
@@ -49,7 +49,7 @@ Frame::~Frame()
     delete [] indexCells;
 }
 
-unsigned char* Frame::fillImage(int width, int height, InternalSystem sys)
+unsigned char* Frame::fillImage(int width, int height, Coord::InternalSystem sys)
 {
   // img
   unsigned char* img = new unsigned char[width*height*3];
@@ -289,5 +289,94 @@ void Frame::iisWCSCmd(const Matrix& mx, const Vector& z, int zt)
     ((FitsImageIIS*)context->cfits)->iisWCS(mx, z, zt);
 }
 
+void Frame::savePhotoCmd(const char* ph)
+{
+  FitsImage* fits = currentContext->cfits;
+  if (!fits)
+    return;
+
+  // basics
+  int length = colorScale->size() - 1;
+  const unsigned char* table = colorScale->psColors();
+
+  // variable
+  FitsBound* params = fits->getDataParams(context->frScale.scanMode());
+  double ll = fits->getLowDouble();
+  double hh = fits->getHighDouble();
+  double diff = hh - ll;
+
+  int width = params->xmax - params->xmin;
+  int height = params->ymax - params->ymin;
+
+  // photo
+  if (*ph == '\0') {
+    Tcl_AppendResult(interp, "bad image name ", NULL);
+    return;
+  }
+  Tk_PhotoHandle photo = Tk_FindPhoto(interp, ph);
+  if (!photo) {
+    Tcl_AppendResult(interp, "bad image handle ", NULL);
+    return;
+  }
+  if (Tk_PhotoSetSize(interp, photo, width, height) != TCL_OK) {
+    Tcl_AppendResult(interp, "bad photo set size ", NULL);
+    return;
+  }    
+  Tk_PhotoBlank(photo);
+  Tk_PhotoImageBlock block;
+  if (!Tk_PhotoGetImage(photo,&block)) {
+    Tcl_AppendResult(interp, "bad image block ", NULL);
+    return;
+  }
+
+  if (block.pixelSize<4) {
+    Tcl_AppendResult(interp, "bad pixel size ", NULL);
+    return;
+  }
+
+  // main loop
+  SETSIGBUS
+  unsigned char* dest = block.pixelPtr;
+  for (long jj=params->ymax-1; jj>=params->ymin; jj--) {
+    for (long ii=params->xmin; ii<params->xmax; ii++, dest += block.pixelSize) {
+      double value = fits->getValueDouble(Vector(ii,jj));
+
+      if (!isnand(value)) {
+	if (value <= ll) {
+	  *(dest+3) = 255;
+	  *(dest+2) = table[0];
+	  *(dest+1) = table[1];
+	  *dest = table[2];
+	}
+	else if (value >= hh) {
+	  *(dest+3) = 255;
+	  *(dest+2) = table[length*3];
+	  *(dest+1) = table[length*3+1];
+	  *dest = table[length*3+2];
+	}
+	else {
+	  int l = (int)(((value - ll)/diff * length) + .5);
+	  *(dest+3) = 255;
+	  *(dest+2) = table[l*3];
+	  *(dest+1) = table[l*3+1];
+	  *dest = table[l*3+2];
+	}
+      }
+      else {
+	*(dest+3) = 255;
+	*(dest+2) = nanColor->blue;
+	*(dest+1) = nanColor->green;
+	*dest = nanColor->red;
+      }
+    }
+  }
+  CLEARSIGBUS
+
+  if (Tk_PhotoPutBlock(interp, photo, &block, 0, 0, width, height, 
+			TK_PHOTO_COMPOSITE_SET) != TCL_OK) {
+    Tcl_AppendResult(interp, "bad put block ", NULL);
+    return;
+  }
+}
 
 
diff --git a/saotk/frame/frame.h b/saotk/frame/frame.h
index 29e7e6c..5d1b4f2 100644
--- a/saotk/frame/frame.h
+++ b/saotk/frame/frame.h
@@ -31,7 +31,7 @@ class Frame : public virtual FrameBase {
  protected:
   int isFrame() {return 1;}
 
-  unsigned char* fillImage(int width, int height, InternalSystem);
+  unsigned char* fillImage(int width, int height, Coord::InternalSystem);
   int validColorScale() {return colorScale ? 1 : 0;}
   void updateColorCells(unsigned short*, unsigned char*, int);
 
@@ -50,6 +50,8 @@ class Frame : public virtual FrameBase {
   void iisGetCmd(char*, int, int, int, int);
   void iisSetCmd(const char*, int, int, int, int);
   void iisWCSCmd(const Matrix&, const Vector&, int);
+
+  void savePhotoCmd(const char*);
 };
 
 #endif
diff --git a/saotk/frame/frame3d.C b/saotk/frame/frame3d.C
index 69c00e1..871fc9f 100644
--- a/saotk/frame/frame3d.C
+++ b/saotk/frame/frame3d.C
@@ -75,11 +75,11 @@ Frame3d::~Frame3d()
     delete [] yid;
 }
 
-unsigned char* Frame3d::fillImage(int width, int height, InternalSystem sys)
+unsigned char* Frame3d::fillImage(int width, int height, Coord::InternalSystem sys)
 {
   unsigned char* img;
   switch (sys) {
-  case WIDGET:
+  case Coord::WIDGET:
     zbuf = &zbufWidget_;
     mkzbuf = &mkzbufWidget_;
     if (syncUpdate)
@@ -87,17 +87,17 @@ unsigned char* Frame3d::fillImage(int width, int height, InternalSystem sys)
     else
       img = fillImageDetach(width, height, sys);
     break;
-  case PANNER:
+  case Coord::PANNER:
     zbuf = &zbufPanner_;
     mkzbuf = &mkzbufPanner_;
     img = fillImageJoin(width, height, sys);
     break;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     zbuf = &zbufMagnifier_;
     mkzbuf = &mkzbufMagnifier_;
     img = fillImageJoin(width, height, sys);
     break;
-  case PS:
+  case Coord::PS:
     zbuf = &zbufPS_;
     mkzbuf = &mkzbufPS_;
     img = fillImageJoin(width, height, sys);
@@ -111,10 +111,10 @@ unsigned char* Frame3d::fillImage(int width, int height, InternalSystem sys)
 
   // no need to carry this around
   switch (sys) {
-  case WIDGET:
-  case PANNER:
+  case Coord::WIDGET:
+  case Coord::PANNER:
     break;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     if (zbufMagnifier_)
       delete [] zbufMagnifier_;
     zbufMagnifier_ = NULL;
@@ -122,7 +122,7 @@ unsigned char* Frame3d::fillImage(int width, int height, InternalSystem sys)
       delete [] mkzbufMagnifier_;
     mkzbufMagnifier_ = NULL;
     break;
-  case PS:
+  case Coord::PS:
     if (zbufPS_)
       delete [] zbufPS_;
     zbufPS_ = NULL;
@@ -140,7 +140,7 @@ void* raytrace(void* arg)
   t_arg* targ = (t_arg*)arg;
   Frame3dBase::RenderMethod renderMethod = targ->renderMethod;
   int width = targ->width;
-  InternalSystem sys = targ->sys;
+  Coord::InternalSystem sys = targ->sys;
   float** zbuf = targ->zbuf;
   unsigned char** mkzbuf = targ->mkzbuf;
   Context* context = targ->context;
@@ -252,7 +252,7 @@ void* raytrace(void* arg)
   return 0;
 }
 
-unsigned char* Frame3d::fillImageJoin(int width, int height, InternalSystem sys)
+unsigned char* Frame3d::fillImageJoin(int width, int height, Coord::InternalSystem sys)
 {
   if (!*zbuf) {
     *zbuf = new float[width*height];
@@ -333,7 +333,7 @@ unsigned char* Frame3d::fillImageJoin(int width, int height, InternalSystem sys)
 }
 
 unsigned char* Frame3d::fillImageDetach(int width, int height,
-					InternalSystem sys)
+					Coord::InternalSystem sys)
 {
   if (!*zbuf) {
     *zbuf = new float[width*height];
@@ -600,7 +600,7 @@ unsigned char* Frame3d::fillImageColor(int width, int height)
   return img;
 }
 
-BBox3d Frame3d::imageBounds(int width, int height, InternalSystem sys)
+BBox3d Frame3d::imageBounds(int width, int height, Coord::InternalSystem sys)
 {
   Matrix3d mx = keyContext->fits->matrixToData3d(sys).invert() *
     Translate3d(.5,.5,.5);
diff --git a/saotk/frame/frame3d.h b/saotk/frame/frame3d.h
index 5287986..2b7a84d 100644
--- a/saotk/frame/frame3d.h
+++ b/saotk/frame/frame3d.h
@@ -12,7 +12,7 @@
 typedef struct {
   Frame3dBase::RenderMethod renderMethod;
   int width;
-  InternalSystem sys;
+  Coord::InternalSystem sys;
   float** zbuf;
   unsigned char** mkzbuf;
   Context* context;
@@ -29,22 +29,6 @@ typedef struct {
   int done;
 } t_arg;
 
-/*
-typedef struct {
-  Frame3dBase::RenderMethod renderMethod;
-  int width;
-  InternalSystem sys;
-  float** zbuf;
-  unsigned char** mkzbuf;
-  BBox3d bb;
-  Context* context;
-
-  int rows;
-  int abort;
-  int done;
-} t_arg;
-*/
-
 class Frame3d : public virtual Frame3dBase {
  protected:
   float** zbuf;
@@ -67,11 +51,11 @@ class Frame3d : public virtual Frame3dBase {
   Tcl_TimerToken timer;
 
  private:
-  BBox3d imageBounds(int, int, InternalSystem);
+  BBox3d imageBounds(int, int, Coord::InternalSystem);
   void cancelImage();
   unsigned char* fillImageColor(int, int);
-  unsigned char* fillImageJoin(int, int, InternalSystem);
-  unsigned char* fillImageDetach(int, int, InternalSystem);
+  unsigned char* fillImageJoin(int, int, Coord::InternalSystem);
+  unsigned char* fillImageDetach(int, int, Coord::InternalSystem);
 
   void reset();
 
@@ -87,7 +71,7 @@ class Frame3d : public virtual Frame3dBase {
  protected:
   int isFrame3d() {return 1;}
 
-  unsigned char* fillImage(int width, int height, InternalSystem);
+  unsigned char* fillImage(int width, int height, Coord::InternalSystem);
 
   void updateColorCells(unsigned short*, unsigned char*, int);
   int validColorScale() {return colorScale ? 1 : 0;}
diff --git a/saotk/frame/frame3dbase.C b/saotk/frame/frame3dbase.C
index 2c3b3b8..c2fabed 100644
--- a/saotk/frame/frame3dbase.C
+++ b/saotk/frame/frame3dbase.C
@@ -65,7 +65,7 @@ Frame3dBase::~Frame3dBase()
     delete [] mkzbufPS_;
 }
 
-void Frame3dBase::calcHighlite(InternalSystem sys, Vector* vv, int* rr)
+void Frame3dBase::calcHighlite(Coord::InternalSystem sys, Vector* vv, int* rr)
 {
   if (!keyContext->fits)
     return;
@@ -327,7 +327,7 @@ void Frame3dBase::psHighlite(PSColorSpace mode)
 
   Vector vv[4];
   int rr[4];
-  calcHighlite(CANVAS,vv,rr);
+  calcHighlite(Coord::CANVAS,vv,rr);
 
   {
     ostringstream str;
@@ -569,7 +569,7 @@ void Frame3dBase::renderHighlite()
 
   Vector vv[4];
   int rr[4];
-  calcHighlite(WIDGET,vv,rr);
+  calcHighlite(Coord::WIDGET,vv,rr);
 
   renderDash(threedGC,rr[0]);
   XDrawLine(display,pixmap,threedGC,vv[0][0],vv[0][1],vv[1][0],vv[1][1]);
@@ -924,7 +924,7 @@ void Frame3dBase::win32Highlite()
 
   Vector vv[4];
   int rr[4];
-  calcHighlite(CANVAS,vv,rr);
+  calcHighlite(Coord::CANVAS,vv,rr);
 
   float dlist[2] = {8,3};
   win32Color(getXColor("blue"));
diff --git a/saotk/frame/frame3dbase.h b/saotk/frame/frame3dbase.h
index 53b6d15..b85c26e 100644
--- a/saotk/frame/frame3dbase.h
+++ b/saotk/frame/frame3dbase.h
@@ -73,7 +73,7 @@ class Frame3dBase : public Base {
   Matrix3d windowToWidget3d;
 
  private:
-  void calcHighlite(InternalSystem, Vector*, int*);
+  void calcHighlite(Coord::InternalSystem, Vector*, int*);
 
  protected:
   virtual void cancelImage() =0;
@@ -107,14 +107,14 @@ class Frame3dBase : public Base {
   Frame3dBase(Tcl_Interp*, Tk_Canvas, Tk_Item*);
   virtual ~Frame3dBase();
 
-  Vector mapFromRef(const Vector& vv, InternalSystem sys)
+  Vector mapFromRef(const Vector& vv, Coord::InternalSystem sys)
   {return mapFromRef3d(vv,sys);}
-  Vector3d mapFromRef3d(const Vector&, InternalSystem);
-  Vector3d mapFromRef3d(const Vector&, InternalSystem, double);
-  Vector mapToRef(const Vector& vv, InternalSystem sys)
+  Vector3d mapFromRef3d(const Vector&, Coord::InternalSystem);
+  Vector3d mapFromRef3d(const Vector&, Coord::InternalSystem, double);
+  Vector mapToRef(const Vector& vv, Coord::InternalSystem sys)
   {return mapToRef3d(vv,sys);}
-  Vector3d mapToRef3d(const Vector&, InternalSystem);
-  Vector3d mapToRef3d(const Vector&, InternalSystem, double);
+  Vector3d mapToRef3d(const Vector&, Coord::InternalSystem);
+  Vector3d mapToRef3d(const Vector&, Coord::InternalSystem, double);
 
   // Bin Commands
   void binToFitCmd();
@@ -123,8 +123,8 @@ class Frame3dBase : public Base {
   void clipScopeCmd(FrScale::ClipScope) {} // scope is always GLOBAL
 
   // Coordinate Commands
-  void getCursorCmd(InternalSystem);
-  void getCursorCmd(CoordSystem, SkyFrame, SkyFormat, Precision);
+  void getCursorCmd(Coord::InternalSystem);
+  void getCursorCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Precision);
 
   // Crop Commands
   void crop3dBeginCmd(const Vector&, int);
@@ -132,23 +132,26 @@ class Frame3dBase : public Base {
   void crop3dEndCmd(const Vector&, int);
 
   // Grid Commands
-  void gridCmd(CoordSystem, SkyFrame, SkyFormat, Grid::GridType, const char*);
+  void gridCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Grid::GridType, const char*);
+
+  // Load Commands
+  void loadPhotoCmd(const char*, const char*);
 
   // Pan Zoom Rotate Orient Commands
   void panCmd(const Vector&);
   void panCmd(const Vector&, const Vector&);
-  void panCmd(const Vector&, CoordSystem, SkyFrame);
+  void panCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void panToCmd(const Vector&);
-  void panToCmd(const Vector&, CoordSystem, SkyFrame);
+  void panToCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void panBBoxCmd(const Vector&);
   void panEndCmd(const Vector&);
   void rotateBeginCmd();
   void rotateMotionCmd(double);
   void rotateEndCmd();
   void zoomAboutCmd(const Vector&, const Vector&);
-  void zoomAboutCmd(const Vector&, const Vector&, CoordSystem, SkyFrame);
+  void zoomAboutCmd(const Vector&, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void zoomToAboutCmd(const Vector&, const Vector&);
-  void zoomToAboutCmd(const Vector&, const Vector&, CoordSystem, SkyFrame);
+  void zoomToAboutCmd(const Vector&, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void zoomToFitCmd(double);
 
   // 3d Commands
diff --git a/saotk/frame/frame3dtruecolor.C b/saotk/frame/frame3dtruecolor.C
index de99b66..e1b3724 100644
--- a/saotk/frame/frame3dtruecolor.C
+++ b/saotk/frame/frame3dtruecolor.C
@@ -23,7 +23,7 @@ Frame3dTrueColor::~Frame3dTrueColor()
     delete [] colormapData;
 }
 
-void Frame3dTrueColor::buildXImage(XImage* ximage, InternalSystem sys)
+void Frame3dTrueColor::buildXImage(XImage* ximage, Coord::InternalSystem sys)
 {
   // we need a colorScale before we can render
   if (!validColorScale())
diff --git a/saotk/frame/frame3dtruecolor.h b/saotk/frame/frame3dtruecolor.h
index c8e9ce9..95ddef0 100644
--- a/saotk/frame/frame3dtruecolor.h
+++ b/saotk/frame/frame3dtruecolor.h
@@ -13,7 +13,7 @@ class Frame3dTrueColor : public Frame3d, public Frame3dTrue {
   long* colormapData;
 
  private:
-  void buildXImage(XImage*, InternalSystem);
+  void buildXImage(XImage*, Coord::InternalSystem);
 
  public:
   Frame3dTrueColor(Tcl_Interp*, Tk_Canvas, Tk_Item*);
diff --git a/saotk/frame/framebase.h b/saotk/frame/framebase.h
index 3f819df..92038b0 100644
--- a/saotk/frame/framebase.h
+++ b/saotk/frame/framebase.h
@@ -33,22 +33,22 @@ public:
   FrameBase(Tcl_Interp*, Tk_Canvas, Tk_Item*);
   virtual ~FrameBase();
 
-  Vector mapFromRef(const Vector&, InternalSystem);
-  Vector3d mapFromRef3d(const Vector& vv, InternalSystem sys) 
+  Vector mapFromRef(const Vector&, Coord::InternalSystem);
+  Vector3d mapFromRef3d(const Vector& vv, Coord::InternalSystem sys) 
   {return mapFromRef(vv,sys);}
-  Vector mapToRef(const Vector&, InternalSystem);
-  Vector3d mapToRef3d(const Vector& vv, InternalSystem sys) 
+  Vector mapToRef(const Vector&, Coord::InternalSystem);
+  Vector3d mapToRef3d(const Vector& vv, Coord::InternalSystem sys) 
   {return mapToRef(vv,sys);}
 
   // Bin Commands
   void binToFitCmd();
 
   // Coordinate Commands
-  void getCursorCmd(InternalSystem);
-  void getCursorCmd(CoordSystem, SkyFrame, SkyFormat, Precision);
+  void getCursorCmd(Coord::InternalSystem);
+  void getCursorCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Precision);
 
   // Grid Commands
-  void gridCmd(CoordSystem, SkyFrame, SkyFormat, Grid::GridType, const char*);
+  void gridCmd(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Grid::GridType, const char*);
 
   // Fits Commands
   void saveFitsResampleFileCmd(const char*, int);
@@ -62,8 +62,8 @@ public:
   void iisGetFileNameCmd(int);
   void iisGetFileNameCmd(const Vector&);
   void iisMessageCmd(const char*);
-  void iisSetCursorCmd(const Vector&, InternalSystem);
-  void iisSetCursorCmd(const Vector&, CoordSystem);
+  void iisSetCursorCmd(const Vector&, Coord::InternalSystem);
+  void iisSetCursorCmd(const Vector&, Coord::CoordSystem);
   void iisSetFileNameCmd(const char*);
   void iisSetFileNameCmd(const char*,int);
   void iisUpdateCmd() {updateNow(MATRIX);}
@@ -71,18 +71,18 @@ public:
   // Pan Zoom Rotate Orient Commands
   void panCmd(const Vector&);
   void panCmd(const Vector&, const Vector&);
-  void panCmd(const Vector&, CoordSystem, SkyFrame);
+  void panCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void panToCmd(const Vector&);
-  void panToCmd(const Vector&, CoordSystem, SkyFrame);
+  void panToCmd(const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void panBBoxCmd(const Vector&);
   void panEndCmd(const Vector&);
   void rotateBeginCmd();
   void rotateMotionCmd(double);
   void rotateEndCmd();
   void zoomAboutCmd(const Vector&, const Vector&);
-  void zoomAboutCmd(const Vector&, const Vector&, CoordSystem, SkyFrame);
+  void zoomAboutCmd(const Vector&, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void zoomToAboutCmd(const Vector&, const Vector&);
-  void zoomToAboutCmd(const Vector&, const Vector&, CoordSystem, SkyFrame);
+  void zoomToAboutCmd(const Vector&, const Vector&, Coord::CoordSystem, Coord::SkyFrame);
   void zoomToFitCmd(double);
 
   // 3d
diff --git a/saotk/frame/framepseudocolor.C b/saotk/frame/framepseudocolor.C
index 809761d..70417c4 100644
--- a/saotk/frame/framepseudocolor.C
+++ b/saotk/frame/framepseudocolor.C
@@ -14,7 +14,7 @@ FramePseudoColor::FramePseudoColor(Tcl_Interp* i, Tk_Canvas c, Tk_Item* item)
 {
 }
 
-void FramePseudoColor::buildXImage(XImage* xmap, InternalSystem sys)
+void FramePseudoColor::buildXImage(XImage* xmap, Coord::InternalSystem sys)
 {
   // we need a colorScale before we can render
   if (!validColorScale())
diff --git a/saotk/frame/framepseudocolor.h b/saotk/frame/framepseudocolor.h
index bab2d2f..ae6f870 100644
--- a/saotk/frame/framepseudocolor.h
+++ b/saotk/frame/framepseudocolor.h
@@ -10,7 +10,7 @@
 
 class FramePseudoColor : public virtual FrameBase, public Frame, public FramePseudo {
 private:
-  void buildXImage(XImage* xmap, InternalSystem);
+  void buildXImage(XImage* xmap, Coord::InternalSystem);
 
 public:
   FramePseudoColor(Tcl_Interp*, Tk_Canvas, Tk_Item*);
diff --git a/saotk/frame/framergb.C b/saotk/frame/framergb.C
index 6601755..da6d729 100644
--- a/saotk/frame/framergb.C
+++ b/saotk/frame/framergb.C
@@ -20,7 +20,7 @@ FrameRGB::FrameRGB(Tcl_Interp* i, Tk_Canvas c, Tk_Item* item)
   context[2].parent(this);
 
   channel = 0;
-  rgbSystem = WCS;
+  rgbSystem = Coord::WCS;
 
   for (int ii=0; ii<3; ii++) {
     view[ii] = 1;
@@ -54,7 +54,7 @@ FrameRGB::~FrameRGB()
 void FrameRGB::alignWCS()
 {
   if (!wcsAlign_ || !(keyContext->fits) || !keyContext->fits->hasWCS(wcsSystem_)) {
-    wcsOrientation = NORMAL;
+    wcsOrientation = Coord::NORMAL;
     wcsOrientationMatrix.identity();
     wcsRotation = 0;
   }
@@ -65,10 +65,10 @@ void FrameRGB::alignWCS()
   updateRGBMatrices();
 }   
 
-void FrameRGB::alignWCS(CoordSystem sys, SkyFrame sky)
+void FrameRGB::alignWCS(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!wcsAlign_ || !(keyContext->fits) || !keyContext->fits->hasWCS(sys)) {
-    wcsOrientation = NORMAL;
+    wcsOrientation = Coord::NORMAL;
     wcsOrientationMatrix.identity();
     wcsRotation = 0;
   }
@@ -79,11 +79,11 @@ void FrameRGB::alignWCS(CoordSystem sys, SkyFrame sky)
   updateRGBMatrices();
 }
 
-void FrameRGB::alignWCS(FitsImage* ptr, CoordSystem sys)
+void FrameRGB::alignWCS(FitsImage* ptr, Coord::CoordSystem sys)
 {
   if (!wcsAlign_ || !(keyContext->fits) || !ptr || 
       !keyContext->fits->hasWCS(wcsSystem_)) {
-    wcsOrientation = NORMAL;
+    wcsOrientation = Coord::NORMAL;
     wcsOrientationMatrix.identity();
     wcsRotation = 0;
   }
@@ -101,7 +101,7 @@ int FrameRGB::doRender()
 	  (context[2].fits&&view[2]));
 }
 
-unsigned char* FrameRGB::fillImage(int width, int height, InternalSystem sys)
+unsigned char* FrameRGB::fillImage(int width, int height, Coord::InternalSystem sys)
 {
   // img
   unsigned char* img = new unsigned char[width*height*3];
@@ -337,12 +337,18 @@ void FrameRGB::loadRGBCube(MemType which, const char* fn, FitsImage* img)
     if (context[1].fits && context[1].fits->isValid())
       context[2].fits = new FitsImageFitsNextVar(this, fn, context[1].fits->fitsFile(),3);
     break;
-    case COMPRESS:
-      if (context[0].fits && context[0].fits->isValid())
-	context[1].fits = new FitsImageFitsNextCompress(this, img,context[0].fits->baseFile(),2);
-      if (context[1].fits && context[1].fits->isValid())
-	context[2].fits = new FitsImageFitsNextCompress(this, img,context[1].fits->baseFile(),3);
-      break;
+  case COMPRESS:
+    if (context[0].fits && context[0].fits->isValid())
+      context[1].fits = new FitsImageFitsNextCompress(this, img,context[0].fits->baseFile(),2);
+    if (context[1].fits && context[1].fits->isValid())
+      context[2].fits = new FitsImageFitsNextCompress(this, img,context[1].fits->baseFile(),3);
+    break;
+  case PHOTO:
+    if (context[0].fits && context[0].fits->isValid())
+      context[1].fits = new FitsImagePhotoCubeNext(this, fn, context[0].fits->baseFile(),2);
+    if (context[1].fits && context[1].fits->isValid())
+      context[2].fits = new FitsImagePhotoCubeNext(this, fn, context[1].fits->baseFile(),3);
+    break;
   }
 
   // is everything ok?
@@ -519,7 +525,7 @@ void FrameRGB::loadRGBImage(MemType which, const char* fn, FitsImage* img)
 void FrameRGB::loadRGBFinish()
 {
   for (int ii=0; ii<3; ii++) {
-    context[ii].loadInit(NOMOSAIC,WCS);
+    context[ii].loadInit(NOMOSAIC,Coord::WCS);
     context[ii].loadFinish();
   }
 
@@ -611,7 +617,7 @@ void FrameRGB::reset()
 void FrameRGB::rgbAlignWCS(int ii)
 {
   if (keyContext->fits  && keyContext->fits->hasWCS(rgbSystem))
-    rgb[ii] = calcAlignWCS(keyContext->fits, context[ii].fits, rgbSystem, rgbSystem, FK5);
+    rgb[ii] = calcAlignWCS(keyContext->fits, context[ii].fits, rgbSystem, rgbSystem, Coord::FK5);
 
   if (DebugRGB)
     cerr << "rgbAlignWCS " << rgb[ii] << endl;
@@ -703,12 +709,12 @@ void FrameRGB::updateColorScale()
 void FrameRGB::updateRGBMatrices()
 {
   // image,pysical,amplifier,detector are ok, check for wcs
-  if (rgbSystem >= WCS) {
+  if (rgbSystem >= Coord::WCS) {
     for (int ii=0; ii<3; ii++) {
       if (context[ii].fits && !context[ii].fits->hasWCS(rgbSystem)) {
 	// ok, don't have requested coordinate system
 	// down grade to image
-	rgbSystem = IMAGE;
+	rgbSystem = Coord::IMAGE;
 	break;
       }
     }
@@ -720,21 +726,21 @@ void FrameRGB::updateRGBMatrices()
 
     if (context[ii].fits && keyContext->fits) {
       switch (rgbSystem) {
-      case IMAGE:
+      case Coord::IMAGE:
 	// nothing to do here
 	break;
-      case PHYSICAL:
+      case Coord::PHYSICAL:
 	if (context[ii].fits != keyContext->fits) 
 	  rgb[ii] = 
 	    context[ii].fits->imageToPhysical *
 	    keyContext->fits->physicalToImage;
 	break;
-      case AMPLIFIER:
+      case Coord::AMPLIFIER:
 	if (context[ii].fits != keyContext->fits) 
 	  rgb[ii] = context[ii].fits->imageToAmplifier *
 	    keyContext->fits->amplifierToImage;
 	break;
-      case DETECTOR:
+      case Coord::DETECTOR:
 	if (context[ii].fits != keyContext->fits) 
 	  rgb[ii] = context[ii].fits->imageToDetector * 
 	    keyContext->fits->detectorToImage;
@@ -799,7 +805,7 @@ void FrameRGB::getColorbarCmd()
   Tcl_AppendResult(interp, str.str().c_str(), NULL);
 }
 
-void FrameRGB::getInfoCmd(const Vector& vv, InternalSystem ref, char* var)
+void FrameRGB::getInfoCmd(const Vector& vv, Coord::InternalSystem ref, char* var)
 {
   FrameBase::getInfoCmd(vv, ref, var);
   if (!currentContext->cfits)
@@ -872,6 +878,13 @@ void FrameRGB::getTypeCmd()
   Tcl_AppendResult(interp, "rgb", NULL);
 }
 
+void FrameRGB::loadPhotoCmd(const char* ph, const char* fn)
+{
+  unloadAllFits();
+  FitsImage* img = new FitsImagePhotoCube(this, interp, ph, fn, 1);
+  loadRGBCube(ALLOC,fn,img);
+}
+
 void FrameRGB::loadRGBCubeAllocCmd(const char* ch, const char* fn)
 {
   unloadAllFits();
@@ -1114,7 +1127,7 @@ void FrameRGB::setRGBChannelCmd(const char* c)
   update(BASE);
 }
 
-void FrameRGB::setRGBSystemCmd(CoordSystem sys)
+void FrameRGB::setRGBSystemCmd(Coord::CoordSystem sys)
 {
   rgbSystem = sys;
 
diff --git a/saotk/frame/framergb.h b/saotk/frame/framergb.h
index 8410548..f6982d4 100644
--- a/saotk/frame/framergb.h
+++ b/saotk/frame/framergb.h
@@ -14,7 +14,7 @@
 class FrameRGB : public virtual FrameBase {
  protected:
   int channel;                  // current channel
-  CoordSystem rgbSystem;        // alignment coordinate system
+  Coord::CoordSystem rgbSystem;        // alignment coordinate system
   Matrix rgb[3];                // rgb matrix
 
   int view[3];                  // visible channels
@@ -27,8 +27,8 @@ class FrameRGB : public virtual FrameBase {
 
  private:
   void alignWCS();
-  void alignWCS(CoordSystem, SkyFrame);
-  void alignWCS(FitsImage*, CoordSystem);
+  void alignWCS(Coord::CoordSystem, Coord::SkyFrame);
+  void alignWCS(FitsImage*, Coord::CoordSystem);
 
   int doRender();
 
@@ -56,7 +56,7 @@ class FrameRGB : public virtual FrameBase {
  protected:
   int isFrameRGB() {return 1;}
 
-  unsigned char* fillImage(int, int, InternalSystem);
+  unsigned char* fillImage(int, int, Coord::InternalSystem);
   void updateColorCells(unsigned char*, int);
   void updateColorScale();
   void unloadAllFits();
@@ -69,7 +69,7 @@ class FrameRGB : public virtual FrameBase {
   virtual ~FrameRGB();
 
   void getColorbarCmd();
-  void getInfoCmd(const Vector&, InternalSystem, char*);
+  void getInfoCmd(const Vector&, Coord::InternalSystem, char*);
   void getRGBChannelCmd();
   void getRGBSystemCmd();
   void getRGBViewCmd();
@@ -81,6 +81,8 @@ class FrameRGB : public virtual FrameBase {
   void iisSetCmd(const char*, int, int, int, int) {}
   void iisWCSCmd(const Matrix&, const Vector&, int) {}
 
+  void loadPhotoCmd(const char*, const char*);
+
   void loadRGBCubeAllocCmd(const char*, const char*);
   void loadRGBCubeAllocGZCmd(const char*, const char*);
   void loadRGBCubeChannelCmd(const char*, const char*);
@@ -115,7 +117,7 @@ class FrameRGB : public virtual FrameBase {
 
   void setRGBChannelCmd(const char*);
   void setRGBViewCmd(int, int, int);
-  void setRGBSystemCmd(CoordSystem);
+  void setRGBSystemCmd(Coord::CoordSystem);
 };
 
 #endif
diff --git a/saotk/frame/framergbtruecolor.C b/saotk/frame/framergbtruecolor.C
index 0d36d4c..97a180c 100644
--- a/saotk/frame/framergbtruecolor.C
+++ b/saotk/frame/framergbtruecolor.C
@@ -27,7 +27,7 @@ FrameRGBTrueColor::~FrameRGBTrueColor()
       delete [] colormapData[kk];
 }
 
-void FrameRGBTrueColor::buildXImage(XImage* ximage, InternalSystem sys)
+void FrameRGBTrueColor::buildXImage(XImage* ximage, Coord::InternalSystem sys)
 {
   // we need a colorScale before we can render
   if (!validColorScale())
@@ -116,7 +116,7 @@ void FrameRGBTrueColor::colormapBeginCmd()
     int mosaic = context[kk].isMosaic();
 
     // variable
-    double* mm = sptr->matrixToData(WIDGET).mm();
+    double* mm = sptr->matrixToData(Coord::WIDGET).mm();
     FitsBound* params = sptr->getDataParams(context[kk].frScale.scanMode());
     int srcw = sptr->width();
 
@@ -134,7 +134,7 @@ void FrameRGBTrueColor::colormapBeginCmd()
 	if (mosaic) {
 	  sptr = context[kk].cfits;
 
-	  mm = sptr->matrixToData(WIDGET).mm();
+	  mm = sptr->matrixToData(Coord::WIDGET).mm();
 	  params = sptr->getDataParams(context[kk].frScale.scanMode());
 	  srcw = sptr->width();
 
@@ -169,7 +169,7 @@ void FrameRGBTrueColor::colormapBeginCmd()
 	      sptr = sptr->nextMosaic();
 
 	      if (sptr) {
-		mm = sptr->matrixToData(WIDGET).mm();
+		mm = sptr->matrixToData(Coord::WIDGET).mm();
 		params = sptr->getDataParams(context[kk].frScale.scanMode());
 		srcw = sptr->width();
 
diff --git a/saotk/frame/framergbtruecolor.h b/saotk/frame/framergbtruecolor.h
index 24d0178..0b868ab 100644
--- a/saotk/frame/framergbtruecolor.h
+++ b/saotk/frame/framergbtruecolor.h
@@ -13,7 +13,7 @@ class FrameRGBTrueColor : public virtual FrameBase, public FrameRGB, public Fram
   long* colormapData[3];     // preextract data
 
  private:
-  void buildXImage(XImage*, InternalSystem);
+  void buildXImage(XImage*, Coord::InternalSystem);
 
  public:
   FrameRGBTrueColor(Tcl_Interp*, Tk_Canvas, Tk_Item*);
diff --git a/saotk/frame/frametruecolor.C b/saotk/frame/frametruecolor.C
index 48cb096..8c154af 100644
--- a/saotk/frame/frametruecolor.C
+++ b/saotk/frame/frametruecolor.C
@@ -49,7 +49,7 @@ unsigned char* FrameTrueColor::blend(unsigned char* src, unsigned char* msk,
   return src;
 }
 
-void FrameTrueColor::buildXImage(XImage* ximage, InternalSystem sys)
+void FrameTrueColor::buildXImage(XImage* ximage, Coord::InternalSystem sys)
 {
   // we need a colorScale before we can render
   if (!validColorScale())
@@ -129,7 +129,7 @@ void FrameTrueColor::colormapBeginCmd()
   long* dest = colormapData;
 
   // variable
-  double* mm = sptr->matrixToData(WIDGET).mm();
+  double* mm = sptr->matrixToData(Coord::WIDGET).mm();
   FitsBound* params = sptr->getDataParams(context->frScale.scanMode());
   int srcw = sptr->width();
 
@@ -148,7 +148,7 @@ void FrameTrueColor::colormapBeginCmd()
       if (mosaic) {
 	sptr = context->cfits;
 
-	mm = sptr->matrixToData(WIDGET).mm();
+	mm = sptr->matrixToData(Coord::WIDGET).mm();
 	params = sptr->getDataParams(context->frScale.scanMode());
 	srcw = sptr->width();
 
@@ -183,7 +183,7 @@ void FrameTrueColor::colormapBeginCmd()
 	    sptr = sptr->nextMosaic();
 
 	    if (sptr) {
-	      mm = sptr->matrixToData(WIDGET).mm();
+	      mm = sptr->matrixToData(Coord::WIDGET).mm();
 	      params = sptr->getDataParams(context->frScale.scanMode());
 	      srcw = sptr->width();
 
@@ -291,7 +291,7 @@ void FrameTrueColor::colormapEndCmd()
 }
 
 unsigned char* FrameTrueColor::fillImage(int width, int height, 
-					 InternalSystem sys)
+					 Coord::InternalSystem sys)
 {
   unsigned char* img = Frame::fillImage(width, height, sys);
 
@@ -309,7 +309,7 @@ unsigned char* FrameTrueColor::fillImage(int width, int height,
 }
 
 unsigned char* FrameTrueColor::fillMask(FitsMask* msk, int width, int height,
-					InternalSystem sys)
+					Coord::InternalSystem sys)
 {
   FitsImage* currentMsk = msk->current();
   XColor* maskColor = msk->color();
diff --git a/saotk/frame/frametruecolor.h b/saotk/frame/frametruecolor.h
index 7062ac5..45d16cd 100644
--- a/saotk/frame/frametruecolor.h
+++ b/saotk/frame/frametruecolor.h
@@ -14,9 +14,9 @@ class FrameTrueColor : public virtual FrameBase, public Frame, public FrameTrue
 
  private:
   unsigned char* blend(unsigned char*, unsigned char*, int, int);
-  void buildXImage(XImage*, InternalSystem);
-  unsigned char* fillImage(int, int,  InternalSystem);
-  unsigned char* fillMask(FitsMask*, int, int,  InternalSystem);
+  void buildXImage(XImage*, Coord::InternalSystem);
+  unsigned char* fillImage(int, int,  Coord::InternalSystem);
+  unsigned char* fillMask(FitsMask*, int, int,  Coord::InternalSystem);
 
   void pushMatrices();
   void pushMagnifierMatrices();
diff --git a/saotk/frame/frblt.C b/saotk/frame/frblt.C
index 80950fc..1c09033 100644
--- a/saotk/frame/frblt.C
+++ b/saotk/frame/frblt.C
@@ -9,69 +9,19 @@
 #include "blt.h"
 #include "bltVector.h"
 #include "projection.h"
-#include "circle3d.h"
 
 #include "sigbus.h"
 
-void Base::bltProjection(char* xname, char* yname, char* xcname, char* ycname,
-			 Projection* pp)
-{
-  double* x;
-  double* y;
-  double* xc;
-  double* yc;
-
-  int num = bltProjFits(&x, &y, &xc, &yc, pp);
-
-  Blt_Vector* xx;
-  if (Blt_GetVector(interp, xname, &xx) != TCL_OK)
-    goto error;
-
-  if (Blt_ResetVector(xx, x, num, num*sizeof(double), TCL_DYNAMIC) 
-      != TCL_OK)
-    goto error;
-
-  Blt_Vector* yy;
-  if (Blt_GetVector(interp, yname, &yy) != TCL_OK) 
-    goto error;
-
-  if (Blt_ResetVector(yy, y, num, num*sizeof(double), TCL_DYNAMIC) 
-      != TCL_OK)
-    goto error;
-
-  Blt_Vector* xxc;
-  if (Blt_GetVector(interp, xcname, &xxc) != TCL_OK)
-    goto error;
-
-  if (Blt_ResetVector(xxc, xc, num, num*sizeof(double), TCL_DYNAMIC) 
-      != TCL_OK)
-    goto error;
-
-  Blt_Vector* yyc;
-  if (Blt_GetVector(interp, ycname, &yyc) != TCL_OK) 
-    goto error;
-
-  if (Blt_ResetVector(yyc, yc, num, num*sizeof(double), TCL_DYNAMIC) 
-      != TCL_OK)
-    goto error;
-
-  return;
-
- error:
-  result = TCL_ERROR;
-  return;
-}
-
-int Base::bltProjFits(double** x, double** y, double** xc, double** yc, 
-		      Projection* pp)
+int Base::markerAnalysisPlot2d(double** x, double** y, double** xc, 
+			       double** yc, Marker* pp, 
+			       Vector& p1, Vector& p2, int width)
 {
   // does not extend across mosaic boundries
   // uses currentContext
 
   Vector cc = pp->getCenter();
-  Vector p1 = pp->getP1();
-  Vector p2 = pp->getP2(); 
-  int width = pp->getWidth();
+  Coord::CoordSystem sys = pp->analysisSystem();
+  Coord::SkyFrame sky = pp->analysisSky();
 
   FitsImage* ptr = currentContext->cfits;
   while (ptr) {
@@ -84,6 +34,8 @@ int Base::bltProjFits(double** x, double** y, double** xc, double** yc,
 
     ptr = ptr->nextMosaic();
   }
+
+  // default
   if (!ptr)
     ptr = currentContext->cfits;
 
@@ -109,7 +61,7 @@ int Base::bltProjFits(double** x, double** y, double** xc, double** yc,
     (*y)[ii] = 0;
     cnt[ii] = 0;
 
-    Vector tv = ptr->mapFromRef(t, pp->getSystem(), pp->getSkyFrame());
+    Vector tv = ptr->mapFromRef(t, sys, sky);
     (*xc)[ii] = tv[0];
     (*yc)[ii] = tv[1];
 
@@ -147,7 +99,7 @@ int Base::bltProjFits(double** x, double** y, double** xc, double** yc,
   }
 
   // average if needed
-  if (pp->getMethod())
+  if (pp->analysisParam() == Marker::AVERAGE)
     for (long ii=0; ii<num; ii++)
       if (!isnand((*y)[ii]) && cnt[ii]!=0)
 	(*y)[ii] /= cnt[ii];
@@ -157,51 +109,14 @@ int Base::bltProjFits(double** x, double** y, double** xc, double** yc,
   return num;
 }
 
-void Base::bltCircle3d(char* xname, char* yname, char* xcname, Circle3d* pp)
-{
-  double* x;
-  double* y;
-  double* xc;
-
-  int num = bltCircle3dFits(&x, &y, &xc, pp);
-
-  Blt_Vector* xx;
-  if (Blt_GetVector(interp, xname, &xx) != TCL_OK)
-    goto error;
-
-  if (Blt_ResetVector(xx, x, num, num*sizeof(double), TCL_DYNAMIC) 
-      != TCL_OK)
-    goto error;
-
-  Blt_Vector* yy;
-  if (Blt_GetVector(interp, yname, &yy) != TCL_OK) 
-    goto error;
-
-  if (Blt_ResetVector(yy, y, num, num*sizeof(double), TCL_DYNAMIC) 
-      != TCL_OK)
-    goto error;
-
-  Blt_Vector* xxc;
-  if (Blt_GetVector(interp, xcname, &xxc) != TCL_OK)
-    goto error;
-
-  if (Blt_ResetVector(xxc, xc, num, num*sizeof(double), TCL_DYNAMIC) 
-      != TCL_OK)
-    goto error;
-
-  return;
-
- error:
-  result = TCL_ERROR;
-  return;
-}
-
-int Base::bltCircle3dFits(double** x, double** y, double** xc, Circle3d* pp)
+int Base::markerAnalysisPlot3d(double** x, double** y, Marker* pp, 
+			       const BBox& bb)
 {
   // does not extend across mosaic boundries
   // uses currentContext, firstSlice
 
   Vector cc = pp->getCenter();
+  Coord::CoordSystem sys = pp->analysisSystem();
 
   FitsImage* ptr = currentContext->fits;
   while (ptr) {
@@ -225,7 +140,6 @@ int Base::bltCircle3dFits(double** x, double** y, double** xc, Circle3d* pp)
       ptr = ptr->nextSlice();
 
   int srcw = ptr->width();
-  int srch = ptr->height();
   // will be incorrect for multiple ext/file cubes
   //  long srcd = ptr->depth();
   int srcd = currentContext->naxis(2);
@@ -240,36 +154,34 @@ int Base::bltCircle3dFits(double** x, double** y, double** xc, Circle3d* pp)
       sptr = sptr->nextSlice();
   }
 
+  // init
   int cnt[srcd];
   *x = (double*)malloc(srcd*sizeof(double));
   *y = (double*)malloc(srcd*sizeof(double));
-  *xc = (double*)malloc(srcd*sizeof(double));
-
-  Vector cd = cc * ptr->refToData;
-  float rr = (pp->annuli(0))[0];
-  float rr2 = rr*rr;
-  FitsBound* params = ptr->getDataParams(currentContext->frScale.scanMode());
-
-  // main loop
-
-  SETSIGBUS
   for (long kk=0; kk<srcd; kk++) {
-    (*x)[kk] = kk+1;
+    (*x)[kk] = 0;
     (*y)[kk] = 0;
     cnt[kk] = 0;
+  }
 
-    (*xc)[kk] = ptr->mapFromRef3(kk+.5, pp->getSystem(), 2);
-
-    if (kk>=params->zmin && kk<params->zmax) {
-      for (long jj=-rr; jj<=rr; jj++) {
-	for (long ii=-rr; ii<=rr; ii++) {
-	  Vector aa = cd + Vector(ii,jj);
+  // take the bbox and extend to lower/upper pixel boundaries
+  Vector ll = (bb.ll*ptr->refToData).floor();
+  Vector ur = (bb.ur*ptr->refToData).ceil();
 
-	  if (aa[0]>=params->xmin && aa[0]<params->xmax && 
-	      aa[1]>=params->ymin && aa[1]<params->ymax) {
-	    if (ii*ii+jj*jj <= rr2) {
-	      double val = 
-		sjv[kk]->getValueDouble(long(aa[1])*srcw+long(aa[0]));
+  FitsBound* params = ptr->getDataParams(currentContext->frScale.scanMode());
+  // main loop
+  SETSIGBUS
+  for (int jj=ll[1]; jj<ur[1]; jj++) {
+    for (int ii=ll[0]; ii<ur[0]; ii++) {
+      if (ii>=params->xmin && ii<params->xmax && 
+	  jj>=params->ymin && jj<params->ymax) {
+	// shift to center of pixel in DATA
+	Vector rr = Vector(ii,jj)+Vector(.5,.5);
+	if (pp->isIn(rr*ptr->dataToRef,Coord::REF)) {
+	  for (int kk=0; kk<srcd; kk++) {
+	    (*x)[kk] = ptr->mapFromRef3(kk+.5, sys, 2);
+	    if (kk>=params->zmin && kk<params->zmax) {
+	      double val =sjv[kk]->getValueDouble(long(jj)*srcw+long(ii));
 	      // check for nan
 	      if (!isnand(val)) {
 		(*y)[kk] += val;
@@ -281,22 +193,22 @@ int Base::bltCircle3dFits(double** x, double** y, double** xc, Circle3d* pp)
       }
     }
   }
+  CLEARSIGBUS
 
   // average if needed
-  if (pp->getMethod())
+  if (pp->analysisParam() == Marker::AVERAGE)
     for (long kk=0; kk<srcd; kk++)
       if (cnt[kk]!=0)
 	(*y)[kk] /= cnt[kk];
 
-  CLEARSIGBUS
 
   return srcd;
 }
 
-void Base::bltCut(char* xname, char* yname, Orientation axis, const Vector& rr)
+void Base::bltCut(char* xname, char* yname, Coord::Orientation axis, const Vector& rr)
 {
   int size;
-  if (axis == XX)
+  if (axis == Coord::XX)
     size = options->width;
   else
     size = options->height;
@@ -339,7 +251,7 @@ void Base::bltCut(char* xname, char* yname, Orientation axis, const Vector& rr)
     return;
 }
 
-void Base::bltCutFits(double* xx, double* yy, int size, Orientation axis,
+void Base::bltCutFits(double* xx, double* yy, int size, Coord::Orientation axis,
 		      const Vector& r)
 {
   // Widget
@@ -366,7 +278,7 @@ void Base::bltCutFits(double* xx, double* yy, int size, Orientation axis,
 
     do {
       Vector img;
-      if (axis == XX)
+      if (axis == Coord::XX)
 	img = Vector(1+ii,rr[1]) * sptr->widgetToData;
       else
 	img = Vector(rr[0],1+ii) * sptr->widgetToData;
diff --git a/saotk/frame/frcommand.C b/saotk/frame/frcommand.C
index 2adbb6b..25e8783 100644
--- a/saotk/frame/frcommand.C
+++ b/saotk/frame/frcommand.C
@@ -59,12 +59,12 @@ void FrameBase::get3dViewCmd()
   Tcl_AppendResult(interp, "0 0", NULL);
 }
 
-void FrameBase::getCursorCmd(InternalSystem sys)
+void FrameBase::getCursorCmd(Coord::InternalSystem sys)
 {
   printVector(mapFromRef(cursor,sys), DEFAULT);
 } 
 
-void FrameBase::getCursorCmd(CoordSystem sys, SkyFrame sky, SkyFormat format,
+void FrameBase::getCursorCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format,
 			     Precision pp)
 {
   if (currentContext->cfits)
@@ -73,7 +73,7 @@ void FrameBase::getCursorCmd(CoordSystem sys, SkyFrame sky, SkyFormat format,
     printVector(Vector(), DEFAULT);
 } 
 
-void FrameBase::gridCmd(CoordSystem sys, SkyFrame sky, SkyFormat format, 
+void FrameBase::gridCmd(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, 
 			Grid::GridType type, const char* ops)
 {
   if (grid)
@@ -147,7 +147,7 @@ void FrameBase::iisGetFileNameCmd(int which)
 
 void FrameBase::iisGetFileNameCmd(const Vector& vv)
 {
-  if (FitsImage* ptr = isInFits(vv, CANVAS, NULL))
+  if (FitsImage* ptr = isInFits(vv, Coord::CANVAS, NULL))
     Tcl_AppendResult(interp, ptr->iisGetFileName(), NULL);
 }
 
@@ -187,7 +187,7 @@ void FrameBase::iisMessageCmd(const char* ptr)
   }
 }
 
-void FrameBase::iisSetCursorCmd(const Vector& v, InternalSystem sys)
+void FrameBase::iisSetCursorCmd(const Vector& v, Coord::InternalSystem sys)
 {
   // assume canvas
   if (!currentContext->cfits)
@@ -199,7 +199,7 @@ void FrameBase::iisSetCursorCmd(const Vector& v, InternalSystem sys)
   XWarpPointer(display, None, Tk_WindowId(tkwin), 0,0,0,0,(int)r[0],(int)r[1]);
 }
 
-void FrameBase::iisSetCursorCmd(const Vector& v, CoordSystem sys)
+void FrameBase::iisSetCursorCmd(const Vector& v, Coord::CoordSystem sys)
 {
   if (!currentContext->cfits)
     return;
@@ -234,8 +234,8 @@ void FrameBase::iisSetFileNameCmd(const char* fn, int which)
 
 void FrameBase::panCmd(const Vector& v1, const Vector& v2)
 {
-  Vector start = mapToRef(v1,CANVAS);
-  Vector stop = mapToRef(v2,CANVAS);
+  Vector start = mapToRef(v1,Coord::CANVAS);
+  Vector stop = mapToRef(v2,Coord::CANVAS);
   cursor -= stop - start;
 
   setBinCursor();
@@ -244,15 +244,15 @@ void FrameBase::panCmd(const Vector& v1, const Vector& v2)
 
 void FrameBase::panCmd(const Vector& vv)
 {
-  Vector uu = mapFromRef(cursor,CANVAS);
+  Vector uu = mapFromRef(cursor,Coord::CANVAS);
   uu += vv;
-  cursor = mapToRef(uu,CANVAS);
+  cursor = mapToRef(uu,Coord::CANVAS);
 
   setBinCursor();
   update(MATRIX);
 }
 
-void FrameBase::panCmd(const Vector& vv, CoordSystem sys, SkyFrame sky)
+void FrameBase::panCmd(const Vector& vv, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!currentContext->cfits)
     return;
@@ -267,13 +267,13 @@ void FrameBase::panCmd(const Vector& vv, CoordSystem sys, SkyFrame sky)
 
 void FrameBase::panToCmd(const Vector& vv)
 {
-  cursor = mapToRef(vv,CANVAS);
+  cursor = mapToRef(vv,Coord::CANVAS);
 
   setBinCursor();
   update(MATRIX);
 }
 
-void FrameBase::panToCmd(const Vector& vv, CoordSystem sys, SkyFrame sky)
+void FrameBase::panToCmd(const Vector& vv, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   if (!currentContext->cfits)
     return;
@@ -299,7 +299,7 @@ void FrameBase::panBBoxCmd(const Vector& vv)
 
 void FrameBase::panEndCmd(const Vector& vv)
 {
-  // vv and panCursor are in CANVAS coords
+  // vv and panCursor are in Coord::CANVAS coords
   // delete tmp pixmap
   if (panPM)
     Tk_FreePixmap(display, panPM);
@@ -371,14 +371,14 @@ void FrameBase::zoomAboutCmd(const Vector& zz, const Vector& vv)
   zoom_[0] *= az[0];
   zoom_[1] *= az[1];
 
-  cursor = mapToRef(vv,CANVAS);
+  cursor = mapToRef(vv,Coord::CANVAS);
 
   setBinCursor();
   update(MATRIX);
 }
 
 void FrameBase::zoomAboutCmd(const Vector& z, const Vector& vv, 
-			     CoordSystem sys, SkyFrame sky)
+			     Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Vector az = ((Vector&)z).abs();
   zoom_[0] *= az[0];
@@ -395,14 +395,14 @@ void FrameBase::zoomToAboutCmd(const Vector& z, const Vector& vv)
 {
   zoom_ = ((Vector&)z).abs();
 
-  cursor = mapToRef(vv,CANVAS);
+  cursor = mapToRef(vv,Coord::CANVAS);
 
   setBinCursor();
   update(MATRIX);
 }
 
 void FrameBase::zoomToAboutCmd(const Vector& z, const Vector& vv, 
-			       CoordSystem sys, SkyFrame sky)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   zoom_ = ((Vector&)z).abs();
 
diff --git a/saotk/frame/frload.C b/saotk/frame/frload.C
index e88a44e..9478a02 100644
--- a/saotk/frame/frload.C
+++ b/saotk/frame/frload.C
@@ -194,6 +194,15 @@ void Base::loadArrVarCmd(const char* ch, const char* fn, LayerType ll)
   loadDone(currentContext->load(this, VAR, fn, img, ll),ll);
 }
 
+// *** Photo ***
+
+void Base::loadPhotoCmd(const char* ph, const char* fn)
+{
+  unloadFits();
+  FitsImage* img = new FitsImagePhoto(this, interp, ph, fn, 1);
+  loadDone(currentContext->load(this, PHOTO, fn, img, IMG), IMG);
+}
+
 // *** Data Cube ***
 
 void Base::loadExtCubeAllocCmd(const char* ch, const char* fn)
@@ -344,7 +353,7 @@ void Base::loadSliceVarCmd(const char* ch, const char* fn, LoadMethod lm)
 
 // *** Mosaic Image ***
 
-void Base::loadMosaicImageAllocCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicImageAllocCmd(MosaicType type, Coord::CoordSystem sys,
 				   const char* ch, const char* fn, LayerType ll)
 {
   if (ll == IMG)
@@ -353,7 +362,7 @@ void Base::loadMosaicImageAllocCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaicImage(this, ALLOC, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicImageAllocGZCmd(MosaicType type, CoordSystem sys, 
+void Base::loadMosaicImageAllocGZCmd(MosaicType type, Coord::CoordSystem sys, 
 				     const char* ch, const char* fn, 
 				     LayerType ll)
 {
@@ -363,7 +372,7 @@ void Base::loadMosaicImageAllocGZCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaicImage(this, ALLOCGZ, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicImageChannelCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicImageChannelCmd(MosaicType type, Coord::CoordSystem sys,
 				     const char* ch, const char* fn, 
 				     LayerType ll)
 {
@@ -374,7 +383,7 @@ void Base::loadMosaicImageChannelCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaicImage(this, CHANNEL, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicImageMMapCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicImageMMapCmd(MosaicType type, Coord::CoordSystem sys,
 				  const char* fn, LoadMethod lm, LayerType ll)
 {
   if (ll == IMG)
@@ -385,7 +394,7 @@ void Base::loadMosaicImageMMapCmd(MosaicType type, CoordSystem sys,
 }
 
 void Base::loadMosaicImageMMapIncrCmd(MosaicType type, 
-				      CoordSystem sys, 
+				      Coord::CoordSystem sys, 
 				      const char* fn, LoadMethod lm,
 				      LayerType ll)
 {
@@ -396,7 +405,7 @@ void Base::loadMosaicImageMMapIncrCmd(MosaicType type,
   loadDone(currentContext->loadMosaicImage(this, MMAPINCR, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicImageShareCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicImageShareCmd(MosaicType type, Coord::CoordSystem sys,
 				   ShmType stype, int id, const char* fn, 
 				   LoadMethod lm, LayerType ll)
 {
@@ -407,7 +416,7 @@ void Base::loadMosaicImageShareCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaicImage(this, SHARE, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicImageSocketCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicImageSocketCmd(MosaicType type, Coord::CoordSystem sys,
 				    int s, const char* fn, LayerType ll)
 {
   if (ll == IMG)
@@ -417,7 +426,7 @@ void Base::loadMosaicImageSocketCmd(MosaicType type, CoordSystem sys,
 }
 
 void Base::loadMosaicImageSocketGZCmd(MosaicType type, 
-				      CoordSystem sys, 
+				      Coord::CoordSystem sys, 
 				      int s, const char* fn, LayerType ll)
 {
   if (ll == IMG)
@@ -426,7 +435,7 @@ void Base::loadMosaicImageSocketGZCmd(MosaicType type,
   loadDone(currentContext->loadMosaicImage(this, SOCKETGZ, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicImageVarCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicImageVarCmd(MosaicType type, Coord::CoordSystem sys,
 				 const char* ch, const char* fn, LoadMethod lm,
 				 LayerType ll)
 {
@@ -439,21 +448,21 @@ void Base::loadMosaicImageVarCmd(MosaicType type, CoordSystem sys,
 
 // *** Mosaic ***
 
-void Base::loadMosaicAllocCmd(MosaicType type, CoordSystem sys, 
+void Base::loadMosaicAllocCmd(MosaicType type, Coord::CoordSystem sys, 
 			      const char* ch, const char* fn, LayerType ll)
 {
   FitsImage* img = new FitsImageFitsAlloc(this, ch, fn, FitsFile::NOFLUSH, 1);
   loadDone(currentContext->loadMosaic(this, ALLOC, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicAllocGZCmd(MosaicType type, CoordSystem sys, 
+void Base::loadMosaicAllocGZCmd(MosaicType type, Coord::CoordSystem sys, 
 				const char* ch, const char* fn, LayerType ll)
 {
   FitsImage* img = new FitsImageFitsAllocGZ(this, ch, fn, FitsFile::NOFLUSH, 1);
   loadDone(currentContext->loadMosaic(this, ALLOCGZ, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicChannelCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicChannelCmd(MosaicType type, Coord::CoordSystem sys,
 				const char* ch, const char* fn, LayerType ll)
 {
   FitsImage* img = new FitsImageFitsChannel(this, interp, ch, fn,
@@ -461,7 +470,7 @@ void Base::loadMosaicChannelCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaic(this, CHANNEL, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicMMapCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicMMapCmd(MosaicType type, Coord::CoordSystem sys,
 			     const char* fn, LoadMethod lm, LayerType ll)
 {
   FitsImage* img = new FitsImageFitsMMap(this, fn, 1);
@@ -469,7 +478,7 @@ void Base::loadMosaicMMapCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaic(this, SMMAP, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicSMMapCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicSMMapCmd(MosaicType type, Coord::CoordSystem sys,
 			      const char* hdr, const char* fn, 
 			      LoadMethod lm, LayerType ll)
 {
@@ -478,7 +487,7 @@ void Base::loadMosaicSMMapCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaic(this, MMAP, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicMMapIncrCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicMMapIncrCmd(MosaicType type, Coord::CoordSystem sys,
 				 const char* fn, LoadMethod lm, LayerType ll)
 {
   FitsImage* img = new FitsImageFitsMMapIncr(this, fn, 1);
@@ -486,7 +495,7 @@ void Base::loadMosaicMMapIncrCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaic(this, MMAPINCR, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicShareCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicShareCmd(MosaicType type, Coord::CoordSystem sys,
 			      ShmType stype, int id, const char* fn, 
 			      LoadMethod lm, LayerType ll)
 {
@@ -495,7 +504,7 @@ void Base::loadMosaicShareCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaic(this, SHARE, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicSShareCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicSShareCmd(MosaicType type, Coord::CoordSystem sys,
 			       ShmType stype, int hdr, int id, const char* fn, 
 			       LoadMethod lm, LayerType ll)
 {
@@ -504,21 +513,21 @@ void Base::loadMosaicSShareCmd(MosaicType type, CoordSystem sys,
   loadDone(currentContext->loadMosaic(this, SSHARE, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicSocketCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicSocketCmd(MosaicType type, Coord::CoordSystem sys,
 			       int s, const char* fn, LayerType ll)
 {
   FitsImage* img = new FitsImageFitsSocket(this, s, fn, FitsFile::FLUSH, 1);
   loadDone(currentContext->loadMosaic(this, SOCKET, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicSocketGZCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicSocketGZCmd(MosaicType type, Coord::CoordSystem sys,
 				 int s, const char* fn, LayerType ll)
 {
   FitsImage* img = new FitsImageFitsSocketGZ(this, s, fn, FitsFile::FLUSH, 1);
   loadDone(currentContext->loadMosaic(this, SOCKETGZ, fn, img, ll,type,sys),ll);
 }
 
-void Base::loadMosaicVarCmd(MosaicType type, CoordSystem sys,
+void Base::loadMosaicVarCmd(MosaicType type, Coord::CoordSystem sys,
 			    const char* ch, const char* fn, 
 			    LoadMethod lm, LayerType ll)
 {
@@ -622,7 +631,7 @@ void Base::loadDone(int rr, LayerType ll)
   }
   else {
     reset();
-    Tcl_AppendResult(interp, "Unable to load fits file", NULL);
+    Tcl_AppendResult(interp, "Unable to load file", NULL);
     result = TCL_ERROR;
   }
 
diff --git a/saotk/frame/frmap.C b/saotk/frame/frmap.C
index 7edced6..4968617 100644
--- a/saotk/frame/frmap.C
+++ b/saotk/frame/frmap.C
@@ -6,7 +6,7 @@
 #include "framebase.h"
 #include "fitsimage.h"
 
-double Base::mapAngleFromRef(double angle, CoordSystem sys, SkyFrame sky)
+double Base::mapAngleFromRef(double angle, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   double r = angle;
   FitsImage* ptr = currentContext->cfits;
@@ -14,17 +14,17 @@ double Base::mapAngleFromRef(double angle, CoordSystem sys, SkyFrame sky)
     return 0;
 
   switch (sys) {
-  case IMAGE: 
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE: 
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     break;
   default:
     switch (ptr->getWCSOrientation(sys,sky)) {
-    case NORMAL:
+    case Coord::NORMAL:
       r = angle + ptr->getWCSRotation(sys,sky);
       break;
-    case XX:
+    case Coord::XX:
       r = -angle + ptr->getWCSRotation(sys,sky) + M_PI;
       break;
     }
@@ -33,7 +33,7 @@ double Base::mapAngleFromRef(double angle, CoordSystem sys, SkyFrame sky)
   return zeroTWOPI(r);
 }
 
-double Base::mapAngleToRef(double angle, CoordSystem sys, SkyFrame sky)
+double Base::mapAngleToRef(double angle, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   double r = angle;
   FitsImage* ptr = currentContext->cfits;
@@ -41,17 +41,17 @@ double Base::mapAngleToRef(double angle, CoordSystem sys, SkyFrame sky)
     return 0;
 
   switch (sys) {
-  case IMAGE: 
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE: 
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     break;
   default:
     switch (ptr->getWCSOrientation(sys,sky)) {
-    case NORMAL:
+    case Coord::NORMAL:
       r = angle - ptr->getWCSRotation(sys,sky);
       break;
-    case XX:
+    case Coord::XX:
       r = -angle + ptr->getWCSRotation(sys,sky) + M_PI;
       break;
     }
@@ -61,76 +61,84 @@ double Base::mapAngleToRef(double angle, CoordSystem sys, SkyFrame sky)
 }
 
 double Base::mapDistFromRef(const Vector& v1, const Vector& v2, 
-				 InternalSystem sys)
+				 Coord::InternalSystem sys)
 {
   switch (sys) {
-  case CANVAS:
+  case Coord::CANVAS:
     return (v2*refToCanvas - v1*refToCanvas).length();
-  case PANNER:
+  case Coord::PANNER:
     return (v2*refToPanner - v1*refToPanner).length();
   }
 }
 
-double Base::mapLenFromRef(double d, InternalSystem sys)
+double Base::mapLenFromRef(double d, Coord::InternalSystem sys)
 {
   Vector r = mapLenFromRef(Vector(d,0),sys);
   return r[0];
 }
 
-Vector Base::mapLenFromRef(const Vector& v, InternalSystem sys)
+Vector Base::mapLenFromRef(const Vector& v, Coord::InternalSystem sys)
 {
   switch (sys) {
-  case CANVAS:
+  case Coord::CANVAS:
     return mapLen(v,refToCanvas);
-  case PANNER:
+  case Coord::PANNER:
     return mapLen(v,refToPanner);
   }
 }
 
-double Base::mapLenToRef(double d, InternalSystem sys)
+double Base::mapLenToRef(double d, Coord::InternalSystem sys)
 {
   Vector r = mapLenToRef(Vector(d,0),sys);
   return r[0];
 }
 
-Vector Base::mapLenToRef(const Vector& v, InternalSystem sys)
+Vector Base::mapLenToRef(const Vector& v, Coord::InternalSystem sys)
 {
   switch (sys) {
-  case CANVAS:
+  case Coord::CANVAS:
     return mapLen(v,canvasToRef);
-  case PANNER:
+  case Coord::PANNER:
     return mapLen(v,pannerToRef);
   }
 }
 
-Vector FrameBase::mapFromRef(const Vector& vv, InternalSystem sys)
+Vector FrameBase::mapFromRef(const Vector& vv, Coord::InternalSystem sys)
 {
   switch (sys) {
-  case WIDGET:
+  case Coord::REF:
+    return vv;
+  case Coord::USER:
+    return vv * refToUser;
+  case Coord::WIDGET:
     return vv * refToWidget;
-  case CANVAS:
+  case Coord::CANVAS:
     return vv * refToCanvas;
-  case WINDOW:
+  case Coord::WINDOW:
     return vv * refToWindow;
-  case PANNER:
+  case Coord::PANNER:
     return vv * refToPanner;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     return vv * refToMagnifier;
   }
 }
 
-Vector FrameBase::mapToRef(const Vector& vv, InternalSystem sys)
+Vector FrameBase::mapToRef(const Vector& vv, Coord::InternalSystem sys)
 {
   switch (sys) {
-  case WIDGET:
+  case Coord::REF:
+    return vv;
+  case Coord::USER:
+    return vv * userToRef;
+  case Coord::WIDGET:
     return vv * widgetToRef;
-  case CANVAS:
+  case Coord::CANVAS:
     return vv * canvasToRef;
-  case WINDOW:
+  case Coord::WINDOW:
     return vv * windowToRef;
-  case PANNER:
+  case Coord::PANNER:
     return vv * pannerToRef;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     return vv * magnifierToRef;
   }
 }
diff --git a/saotk/frame/frmarker.C b/saotk/frame/frmarker.C
index 4bccfcc..75f5d6d 100644
--- a/saotk/frame/frmarker.C
+++ b/saotk/frame/frmarker.C
@@ -9,34 +9,34 @@
 #include "base.h"
 #include "fitsimage.h"
 #include "fvcontour.h"
-
 #include "marker.h"
 #include "basemarker.h"
 #include "NaN.h"
+#include "sigbus.h"
+#include "parser.H"
 
-#include "annulus.h"
-#include "box.h"
-#include "boxannulus.h"
-#include "bpanda.h"
 #include "circle.h"
-#include "compass.h"
-#include "composite.h"
-#include "cpanda.h"
 #include "ellipse.h"
-#include "ellipseannulus.h"
-#include "epanda.h"
+#include "box.h"
+#include "polygon.h"
 #include "line.h"
-#include "ruler.h"
+#include "vect.h"
+#include "text.h"
 #include "point.h"
-#include "polygon.h"
+
+#include "ruler.h"
+#include "compass.h"
 #include "projection.h"
-#include "circle3d.h"
-#include "text.h"
-#include "vect.h"
 
-#include "sigbus.h"
+#include "annulus.h"
+#include "ellipseannulus.h"
+#include "boxannulus.h"
 
-#include "parser.H"
+#include "cpanda.h"
+#include "epanda.h"
+#include "bpanda.h"
+
+#include "composite.h"
 
 #define LISTBUFSIZE 8192
 
@@ -203,6 +203,7 @@ void xyerror(Base* fr, xyFlexLexer* ll, const char* m)
 
 // Marker Commands
 
+// Basic Regions
 void Base::createCircleCmd(const Vector& center, 
 			   double radius,
 			   const char* color, int* dash, 
@@ -217,66 +218,6 @@ void Base::createCircleCmd(const Vector& center,
 			  prop, comment, tag, cb));
 }
 
-void Base::createAnnulusCmd(const Vector& center,
-			    double start, double stop, int num,
-			    const char* color, int* dash, 
-			    int width, const char* font,
-			    const char* text, unsigned short prop,
-			    const char* comment, 
-			    const List<Tag>& tag,const List<CallBack>& cb)
-{
-  createMarker(new Annulus(this, center, 
-			   start, stop, num, 
-			   color, dash, width, font, text, 
-			   prop, comment, tag, cb));
-}
-
-void Base::createAnnulusCmd(const Vector& center,
-			    int num, double* radii,
-			    const char* color, int* dash, 
-			    int width, const char* font,
-			    const char* text, unsigned short prop,
-			    const char* comment, 
-			    const List<Tag>& tag,const List<CallBack>& cb)
-{
-  createMarker(new Annulus(this, center, 
-			   num, radii,
-			   color, dash, width, font, text, 
-			   prop, comment, tag, cb));
-}
-
-void Base::createCpandaCmd(const Vector& center,
-			   double ang1, double ang2, int an, 
-			   double rad1, double rad2, int rn, 
-			   const char* color, int* dash, 
-			   int width, const char* font,
-			   const char* text, unsigned short prop,
-			   const char* comment, 
-			   const List<Tag>& tag, const List<CallBack>& cb)
-{
-  createMarker(new Cpanda(this, center, 
-			  ang1, ang2, an, 
-			  rad1, rad2, rn, 
-			  color, dash, width, font, text, 
-			  prop, comment, tag, cb));
-}
-
-void Base::createCpandaCmd(const Vector& center,
-			   int an, double* a,
-			   int rn, double* r,
-			   const char* color, int* dash, 
-			   int width, const char* font,
-			   const char* text, unsigned short prop,
-			   const char* comment, 
-			   const List<Tag>& tag, const List<CallBack>& cb)
-{
-  createMarker(new Cpanda(this, center, 
-			  an, a,
-			  rn, r,
-			  color, dash, width, font, text, 
-			  prop, comment, tag, cb));
-}
-
 void Base::createEllipseCmd(const Vector& center, 
 			    const Vector& radius,
 			    double angle,
@@ -294,77 +235,6 @@ void Base::createEllipseCmd(const Vector& center,
 			   prop, comment, tag, cb));
 }
 
-void Base::createEllipseAnnulusCmd(const Vector& center,
-				   const Vector& inner, 
-				   const Vector& outer, int num, 
-				   double angle,
-				   const char* color, int* dash, 
-				   int width, const char* font, 
-				   const char* text, unsigned short prop,
-				   const char* comment, 
-				   const List<Tag>& tag, 
-				   const List<CallBack>& cb)
-{
-  createMarker(new EllipseAnnulus(this, center, 
-				  inner, outer, num,
-				  angle, 
-				  color, dash, width, font, text, 
-				  prop, comment, tag, cb));
-}
-
-void Base::createEllipseAnnulusCmd(const Vector& center, 
-				   int num, Vector* radii,
-				   double angle,
-				   const char* color, int* dash, 
-				   int width, const char* font, 
-				   const char* text, unsigned short prop,
-				   const char* comment, 
-				   const List<Tag>& tag, 
-				   const List<CallBack>& cb)
-{
-  createMarker(new EllipseAnnulus(this, center, 
-				  num, radii, 
-				  angle, 
-				  color, dash, width, font, text, 
-				  prop, comment, tag, cb));
-}
-
-void Base::createEpandaCmd(const Vector& center,
-			   double ang1, double ang2, int an,
-			   const Vector& rad1, const Vector& rad2, int rn,
-			   double angle,
-			   const char* color, int* dash, 
-			   int width, const char* font,
-			   const char* text, unsigned short prop,
-			   const char* comment, 
-			   const List<Tag>& tag, const List<CallBack>& cb)
-{
-  createMarker(new Epanda(this, center, 
-			  ang1, ang2, an, 
-			  rad1, rad2, rn, 
-			  angle,
-			  color, dash, width, font, text, 
-			  prop, comment, tag, cb));
-}
-
-void Base::createEpandaCmd(const Vector& center,
-			   int an, double* a,
-			   int rn, Vector* r,
-			   double angle,
-			   const char* color, int* dash, 
-			   int width, const char* font,
-			   const char* text, unsigned short prop,
-			   const char* comment, 
-			   const List<Tag>& tag, const List<CallBack>& cb)
-{
-  createMarker(new Epanda(this, center, 
-			  an, a,
-			  rn, r,
-			  angle,
-			  color, dash, width, font, text, 
-			  prop, comment, tag, cb));
-}
-
 void Base::createBoxCmd(const Vector& center, 
 			const Vector& size, 
 			double angle,
@@ -381,75 +251,93 @@ void Base::createBoxCmd(const Vector& center,
 		       prop, comment, tag, cb));
 }
 
-void Base::createBoxAnnulusCmd(const Vector& center,
-			       const Vector& inner, const Vector& outer, 
-			       int num,
-			       double angle,
-			       const char* color, int* dash, 
-			       int width, const char* font,
-			       const char* text, unsigned short prop,
-			       const char* comment, 
-			       const List<Tag>& tag, 
-			       const List<CallBack>& cb)
+void Base::createPolygonCmd(const Vector& center, 
+			    const Vector& bb,
+			    const char* color, int* dash, 
+			    int width, const char* font,
+			    const char* text, unsigned short prop,
+			    const char* comment, 
+			    const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new BoxAnnulus(this, center, 
-			      inner, outer, num, 
-			      angle, 
-			      color, dash, width, font, text, 
-			      prop, comment, tag, cb));
+  createMarker(new Polygon(this, center, 
+			   bb, 
+			   color, dash, width, font, text, 
+			   prop, comment, tag, cb));
 }
 
-void Base::createBoxAnnulusCmd(const Vector& center, 
-			       int num, Vector* size,
-			       double angle, 
-			       const char* color, int* dash, 
-			       int width, const char* font, 
-			       const char* text, unsigned short prop,
-			       const char* comment, 
-			       const List<Tag>& tag, 
-			       const List<CallBack>& cb)
+void Base::createPolygonCmd(const List<Vertex>& list,
+			    const char* color, int* dash, 
+			    int width, const char* font,
+			    const char* text, unsigned short prop,
+			    const char* comment, 
+			    const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new BoxAnnulus(this, center, 
-			      num, size, 
-			      angle, 
-			      color, dash, width, font, text, 
-			      prop, comment, tag, cb));
+  createMarker(new Polygon(this, list, 
+			   color, dash, width, font, text, 
+			   prop, comment, tag, cb));
 }
 
-void Base::createBpandaCmd(const Vector& center,
-			   double ang1, double ang2, int an,
-			   const Vector& rad1, const Vector& rad2, int rn,
-			   double angle,
-			   const char* color, int* dash, 
-			   int width, const char* font,
-			   const char* text, unsigned short prop,
-			   const char* comment, 
-			   const List<Tag>& tag, const List<CallBack>& cb)
+void Base::createContourPolygonCmd(
+				   const char* color, int* dash, 
+				   int width, const char* font,
+				   const char* text, unsigned short prop,
+				   const char* comment, 
+				   const List<Tag>& tag, 
+				   const List<CallBack>& cb)
 {
-  createMarker(new Bpanda(this, center, 
-			  ang1, ang2, an, 
-			  rad1, rad2, rn, 
-			  angle,
-			  color, dash, width, font, text, 
-			  prop, comment, tag, cb));
-}
+  // only create in the USER layer
+  markerLayerCmd(USER);
 
-void Base::createBpandaCmd(const Vector& center,
-			   int an, double* a,
-			   int rn, Vector* r,
-			   double angle,
-			   const char* color, int* dash, 
-			   int width, const char* font,
-			   const char* text, unsigned short prop,
-			   const char* comment, 
-			   const List<Tag>& tag, const List<CallBack>& cb)
-{
-  createMarker(new Bpanda(this, center, 
-			  an, a,
-			  rn, r,
-			  angle,
-			  color, dash, width, font, text, 
-			  prop, comment, tag, cb));
+  // main contour
+  if (hasContour()) {
+    List<Vertex>& c = (List<Vertex>&)(currentContext->contour->contours());
+
+    // build from back to front
+    if (c.tail()) {
+      List<Vertex> list;
+      while (c.previous()) {
+	if (c.current()->vector[0] != DBL_MAX)
+	  list.append(new Vertex(c.current()->vector));
+	else {
+	  if (list.count()>0) 
+	    createMarker(new Polygon(this, list, 
+				     color, dash, width, font, text, 
+				     prop, NULL, tag, cb));
+	  list.deleteAll();
+	}
+      }
+      if (list.count()>0) 
+	createMarker(new Polygon(this, list, 
+				 color, dash, width, font, text, prop, 
+				 comment, tag, cb));
+    }
+  }
+
+  // aux contours
+  Contour* cptr = currentContext->auxcontours.head();
+  while (cptr) {
+    List<Vertex>& c = (List<Vertex>&)(cptr->contours());
+
+    // build from back to front
+    if (c.tail()) {
+      List<Vertex> list;
+      while (c.previous()) {
+	if (c.current()->vector[0] != DBL_MAX)
+	  list.append(new Vertex(c.current()->vector));
+	else {
+	  if (list.count()>0) 
+	    createMarker(new Polygon(this, list, color, dash, width, font, 
+				     text, prop, NULL, tag, cb));
+	  list.deleteAll();
+	}
+      }
+      if (list.count()>0) 
+	createMarker(new Polygon(this, list, color, dash, width, font, 
+				 text, prop, comment, tag, cb));
+    }
+
+    cptr = cptr->next();
+  }
 }
 
 void Base::createLineCmd(const Vector& center, const Vector& p2, 
@@ -491,39 +379,36 @@ void Base::createVectCmd(const Vector& center, double mag, double ang,
 			prop, comment, tag, cb));
 }
 
-void Base::createProjectionCmd(const Vector& center, const Vector& p2, 
-			       double w, 
-			       const char* mvcb, const char* delcb,
-			       const char* color, int* dash, 
-			       int width, const char* font,
-			       const char* text, unsigned short prop,
-			       const char* comment, 
-			       const List<Tag>& tag, 
-			       const List<CallBack>& cb)
+void Base::createTextCmd(const Vector& center, double angle, int rotate,
+			 const char* color, int* dash, 
+			 int width, const char* font,
+			 const char* text, unsigned short prop,
+			 const char* comment, 
+			 const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new Projection(this, center, p2, w, mvcb, delcb, 
-			      color, dash, width, font, text, 
-			      prop, comment, tag, cb));
+  createMarker(new Text(this, center, angle, rotate,
+			color, dash, width, font, text, 
+			prop, comment, tag, cb));
 }
 
-void Base::createCircle3dCmd(const Vector& center,
-			     double radius, 
-			     const char* mvcb, const char* delcb,
-			     const char* color, int* dash, 
-			     int width, const char* font,
-			     const char* text, unsigned short prop,
-			     const char* comment, 
-			     const List<Tag>& tag, 
-			     const List<CallBack>& cb)
+void Base::createPointCmd(const Vector& center, 
+			  Point::PointShape shape, int size,
+			  const char* color, int* dash, 
+			  int width, const char* font,
+			  const char* text, unsigned short prop,
+			  const char* comment, 
+			  const List<Tag>& tag, 
+			  const List<CallBack>& cb)
 {
-  createMarker(new Circle3d(this, center, radius, mvcb, delcb, 
-			    color, dash, width, font, text, 
-			    prop, comment, tag, cb));
+  createMarker(new Point(this, center, shape, size, 
+			 color, dash, width, font, text, 
+			 prop, comment, tag, cb));
 }
 
+// Measurement Regions
 void Base::createRulerCmd(const Vector& center, const Vector& p2,
-			  CoordSystem sys, SkyFrame sky,
-			  CoordSystem distsys, SkyDist distdist,
+			  Coord::CoordSystem sys, Coord::SkyFrame sky,
+			  Coord::CoordSystem distsys, Coord::SkyDist distdist,
 			  const char* color, int* dash, 
 			  int width, const char* font,
 			  const char* text, unsigned short prop,
@@ -536,46 +421,105 @@ void Base::createRulerCmd(const Vector& center, const Vector& p2,
 			 prop, comment, tag, cb));
 }
 
-void Base::createCirclePointCmd(const Vector& center, int size,
-				const char* color, int* dash, 
-				int width, const char* font,
-				const char* text, unsigned short prop,
-				const char* comment, 
-				const List<Tag>& tag, 
-				const List<CallBack>& cb)
+void Base::createCompassCmd(const Vector& center, double r,
+			    const char* north, const char* east, 
+			    int na, int ea,
+			    Coord::CoordSystem sys, Coord::SkyFrame sky,
+			    const char* color, int* dash, 
+			    int width, const char* font,
+			    const char* text, unsigned short prop,
+			    const char* comment, 
+			    const List<Tag>& tag, 
+			    const List<CallBack>& cb)
 {
-  createMarker(new CirclePoint(this, center, size, 
-			       color, dash, width, font, text, 
-			       prop, comment, tag, cb));
+  createMarker(new Compass(this, center, r, north, east, na, ea, sys, sky, 
+			   color, dash, width, font, text, 
+			   prop, comment, tag, cb));
 }
 
-void Base::createBoxPointCmd(const Vector& center, int size,
-			     const char* color, int* dash, 
-			     int width, const char* font,
-			     const char* text, unsigned short prop,
-			     const char* comment, 
-			     const List<Tag>& tag, 
-			     const List<CallBack>& cb)
+void Base::createProjectionCmd(const Vector& center, 
+			       const Vector& p2, double w, 
+			       const char* color, int* dash, 
+			       int width, const char* font,
+			       const char* text, unsigned short prop,
+			       const char* comment, 
+			       const List<Tag>& tag, 
+			       const List<CallBack>& cb)
 {
-  createMarker(new BoxPoint(this, center, size, 
-			    color, dash, width, font, text, 
-			    prop, comment, tag, cb));
+  createMarker(new Projection(this, center, 
+			      p2, w,
+			      color, dash, width, font, text, 
+			      prop, comment, tag, cb));
 }
 
-void Base::createDiamondPointCmd(const Vector& center, int size,
-				 const char* color, int* dash, 
-				 int width, const char* font,
-				 const char* text, unsigned short prop,
-				 const char* comment, 
-				 const List<Tag>& tag,
-				 const List<CallBack>& cb)
+// Annulus Regions
+void Base::createAnnulusCmd(const Vector& center,
+			    double start, double stop, int num,
+			    const char* color, int* dash, 
+			    int width, const char* font,
+			    const char* text, unsigned short prop,
+			    const char* comment, 
+			    const List<Tag>& tag,const List<CallBack>& cb)
 {
-  createMarker(new DiamondPoint(this, center, size, 
-				color, dash, width, font, text, 
-				prop, comment, tag, cb));
+  createMarker(new Annulus(this, center, 
+			   start, stop, num, 
+			   color, dash, width, font, text, 
+			   prop, comment, tag, cb));
+}
+
+void Base::createAnnulusCmd(const Vector& center,
+			    int num, double* radii,
+			    const char* color, int* dash, 
+			    int width, const char* font,
+			    const char* text, unsigned short prop,
+			    const char* comment, 
+			    const List<Tag>& tag,const List<CallBack>& cb)
+{
+  createMarker(new Annulus(this, center, 
+			   num, radii,
+			   color, dash, width, font, text, 
+			   prop, comment, tag, cb));
+}
+
+void Base::createEllipseAnnulusCmd(const Vector& center,
+				   const Vector& inner, 
+				   const Vector& outer, int num, 
+				   double angle,
+				   const char* color, int* dash, 
+				   int width, const char* font, 
+				   const char* text, unsigned short prop,
+				   const char* comment, 
+				   const List<Tag>& tag, 
+				   const List<CallBack>& cb)
+{
+  createMarker(new EllipseAnnulus(this, center, 
+				  inner, outer, num,
+				  angle, 
+				  color, dash, width, font, text, 
+				  prop, comment, tag, cb));
+}
+
+void Base::createEllipseAnnulusCmd(const Vector& center, 
+				   int num, Vector* radii,
+				   double angle,
+				   const char* color, int* dash, 
+				   int width, const char* font, 
+				   const char* text, unsigned short prop,
+				   const char* comment, 
+				   const List<Tag>& tag, 
+				   const List<CallBack>& cb)
+{
+  createMarker(new EllipseAnnulus(this, center, 
+				  num, radii, 
+				  angle, 
+				  color, dash, width, font, text, 
+				  prop, comment, tag, cb));
 }
 
-void Base::createCrossPointCmd(const Vector& center, int size,
+void Base::createBoxAnnulusCmd(const Vector& center,
+			       const Vector& inner, const Vector& outer, 
+			       int num,
+			       double angle,
 			       const char* color, int* dash, 
 			       int width, const char* font,
 			       const char* text, unsigned short prop,
@@ -583,167 +527,136 @@ void Base::createCrossPointCmd(const Vector& center, int size,
 			       const List<Tag>& tag, 
 			       const List<CallBack>& cb)
 {
-  createMarker(new CrossPoint(this, center, size, 
+  createMarker(new BoxAnnulus(this, center, 
+			      inner, outer, num, 
+			      angle, 
 			      color, dash, width, font, text, 
 			      prop, comment, tag, cb));
 }
 
-void Base::createExPointCmd(const Vector& center, int size,
-			    const char* color, int* dash, 
-			    int width, const char* font,
-			    const char* text, unsigned short prop,
-			    const char* comment, 
-			    const List<Tag>& tag, 
-			    const List<CallBack>& cb)
-{
-  createMarker(new ExPoint(this, center, size, 
-			   color, dash, width, font, text, 
-			   prop, comment, tag, cb));
-}
-
-void Base::createArrowPointCmd(const Vector& center, int size,
+void Base::createBoxAnnulusCmd(const Vector& center, 
+			       int num, Vector* size,
+			       double angle, 
 			       const char* color, int* dash, 
-			       int width, const char* font,
+			       int width, const char* font, 
 			       const char* text, unsigned short prop,
 			       const char* comment, 
 			       const List<Tag>& tag, 
 			       const List<CallBack>& cb)
 {
-  createMarker(new ArrowPoint(this, center, size, 
+  createMarker(new BoxAnnulus(this, center, 
+			      num, size, 
+			      angle, 
 			      color, dash, width, font, text, 
 			      prop, comment, tag, cb));
 }
 
-void Base::createBoxCirclePointCmd(const Vector& center, int size,
-				   const char* color, int* dash, 
-				   int width, const char* font,
-				   const char* text, unsigned short prop,
-				   const char* comment,
-				   const List<Tag>& tag, 
-				   const List<CallBack>& cb)
+// Panda Regions
+void Base::createCpandaCmd(const Vector& center,
+			   double ang1, double ang2, int an, 
+			   double rad1, double rad2, int rn, 
+			   const char* color, int* dash, 
+			   int width, const char* font,
+			   const char* text, unsigned short prop,
+			   const char* comment, 
+			   const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new BoxCirclePoint(this, center, size, 
-				  color, dash, width, font, text, 
-				  prop, comment, tag, cb));
+  createMarker(new Cpanda(this, center, 
+			  ang1, ang2, an, 
+			  rad1, rad2, rn, 
+			  color, dash, width, font, text, 
+			  prop, comment, tag, cb));
 }
 
-void Base::createTextCmd(const Vector& center, double angle, int rotate,
-			 const char* color, int* dash, 
-			 int width, const char* font,
-			 const char* text, unsigned short prop,
-			 const char* comment, 
-			 const List<Tag>& tag, const List<CallBack>& cb)
+void Base::createCpandaCmd(const Vector& center,
+			   int an, double* a,
+			   int rn, double* r,
+			   const char* color, int* dash, 
+			   int width, const char* font,
+			   const char* text, unsigned short prop,
+			   const char* comment, 
+			   const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new Text(this, center, angle, rotate,
-			color, dash, width, font, text, 
-			prop, comment, tag, cb));
+  createMarker(new Cpanda(this, center, 
+			  an, a,
+			  rn, r,
+			  color, dash, width, font, text, 
+			  prop, comment, tag, cb));
 }
 
-void Base::createPolygonCmd(const Vector& center, 
-			    const Vector& bb,
-			    const char* color, int* dash, 
-			    int width, const char* font,
-			    const char* text, unsigned short prop,
-			    const char* comment, 
-			    const List<Tag>& tag, const List<CallBack>& cb)
+void Base::createEpandaCmd(const Vector& center,
+			   double ang1, double ang2, int an,
+			   const Vector& rad1, const Vector& rad2, int rn,
+			   double angle,
+			   const char* color, int* dash, 
+			   int width, const char* font,
+			   const char* text, unsigned short prop,
+			   const char* comment, 
+			   const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new Polygon(this, center, 
-			   bb, 
-			   color, dash, width, font, text, 
-			   prop, comment, tag, cb));
+  createMarker(new Epanda(this, center, 
+			  ang1, ang2, an, 
+			  rad1, rad2, rn, 
+			  angle,
+			  color, dash, width, font, text, 
+			  prop, comment, tag, cb));
 }
 
-void Base::createPolygonCmd(const List<Vertex>& list,
-			    const char* color, int* dash, 
-			    int width, const char* font,
-			    const char* text, unsigned short prop,
-			    const char* comment, 
-			    const List<Tag>& tag, const List<CallBack>& cb)
+void Base::createEpandaCmd(const Vector& center,
+			   int an, double* a,
+			   int rn, Vector* r,
+			   double angle,
+			   const char* color, int* dash, 
+			   int width, const char* font,
+			   const char* text, unsigned short prop,
+			   const char* comment, 
+			   const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new Polygon(this, list, 
-			   color, dash, width, font, text, 
-			   prop, comment, tag, cb));
+  createMarker(new Epanda(this, center, 
+			  an, a,
+			  rn, r,
+			  angle,
+			  color, dash, width, font, text, 
+			  prop, comment, tag, cb));
 }
 
-void Base::createContourPolygonCmd(
-				   const char* color, int* dash, 
-				   int width, const char* font,
-				   const char* text, unsigned short prop,
-				   const char* comment, 
-				   const List<Tag>& tag, 
-				   const List<CallBack>& cb)
+void Base::createBpandaCmd(const Vector& center,
+			   double ang1, double ang2, int an,
+			   const Vector& rad1, const Vector& rad2, int rn,
+			   double angle,
+			   const char* color, int* dash, 
+			   int width, const char* font,
+			   const char* text, unsigned short prop,
+			   const char* comment, 
+			   const List<Tag>& tag, const List<CallBack>& cb)
 {
-  // only create in the USER layer
-  markerLayerCmd(USER);
-
-  // main contour
-  if (hasContour()) {
-    List<Vertex>& c = (List<Vertex>&)(currentContext->contour->contours());
-
-    // build from back to front
-    if (c.tail()) {
-      List<Vertex> list;
-      while (c.previous()) {
-	if (c.current()->vector[0] != DBL_MAX)
-	  list.append(new Vertex(c.current()->vector));
-	else {
-	  if (list.count()>0) 
-	    createMarker(new Polygon(this, list, 
-				     color, dash, width, font, text, 
-				     prop, NULL, tag, cb));
-	  list.deleteAll();
-	}
-      }
-      if (list.count()>0) 
-	createMarker(new Polygon(this, list, 
-				 color, dash, width, font, text, prop, 
-				 comment, tag, cb));
-    }
-  }
-
-  // aux contours
-  Contour* cptr = currentContext->auxcontours.head();
-  while (cptr) {
-    List<Vertex>& c = (List<Vertex>&)(cptr->contours());
-
-    // build from back to front
-    if (c.tail()) {
-      List<Vertex> list;
-      while (c.previous()) {
-	if (c.current()->vector[0] != DBL_MAX)
-	  list.append(new Vertex(c.current()->vector));
-	else {
-	  if (list.count()>0) 
-	    createMarker(new Polygon(this, list, color, dash, width, font, 
-				     text, prop, NULL, tag, cb));
-	  list.deleteAll();
-	}
-      }
-      if (list.count()>0) 
-	createMarker(new Polygon(this, list, color, dash, width, font, 
-				 text, prop, comment, tag, cb));
-    }
-
-    cptr = cptr->next();
-  }
+  createMarker(new Bpanda(this, center, 
+			  ang1, ang2, an, 
+			  rad1, rad2, rn, 
+			  angle,
+			  color, dash, width, font, text, 
+			  prop, comment, tag, cb));
 }
 
-void Base::createCompassCmd(const Vector& center, double r,
-			    const char* north, const char* east, 
-			    int na, int ea,
-			    CoordSystem sys, SkyFrame sky,
-			    const char* color, int* dash, 
-			    int width, const char* font,
-			    const char* text, unsigned short prop,
-			    const char* comment, 
-			    const List<Tag>& tag, 
-			    const List<CallBack>& cb)
+void Base::createBpandaCmd(const Vector& center,
+			   int an, double* a,
+			   int rn, Vector* r,
+			   double angle,
+			   const char* color, int* dash, 
+			   int width, const char* font,
+			   const char* text, unsigned short prop,
+			   const char* comment, 
+			   const List<Tag>& tag, const List<CallBack>& cb)
 {
-  createMarker(new Compass(this, center, r, north, east, na, ea, sys, sky, 
-			   color, dash, width, font, text, 
-			   prop, comment, tag, cb));
+  createMarker(new Bpanda(this, center, 
+			  an, a,
+			  rn, r,
+			  angle,
+			  color, dash, width, font, text, 
+			  prop, comment, tag, cb));
 }
 
+// Composite Regions
 void Base::createCompositeCmd(const Vector& center, double angle, 
 			      int global,
 			      const char* color, int* dash, 
@@ -808,6 +721,7 @@ void Base::createCompositeCmd(
   update(PIXMAP);
 }
 
+// Template Regions
 void Base::createTemplateCmd(const Vector& center, const char* fn)
 {
   ifstream str(fn);
@@ -818,8 +732,8 @@ void Base::createTemplateCmd(const Vector& center, const char* fn)
   createTemplate(center,str);
 }
 
-void Base::createTemplateCmd(const Vector& v, CoordSystem sys, 
-			     SkyFrame sky, const char* fn)
+void Base::createTemplateCmd(const Vector& v, Coord::CoordSystem sys, 
+			     Coord::SkyFrame sky, const char* fn)
 {
   ifstream str(fn);
   if (!str) {
@@ -902,6 +816,8 @@ void Base::createTemplate(const Vector& center, istream& str)
   }
 }
 
+// Support
+
 void Base::createMarker(Marker* m)
 {
   if (maperr) {
@@ -972,24 +888,85 @@ Vector Base::centroid(const Vector& vv)
 	  if (ii*ii+jj*jj <= rr2) {
 	    double val = ptr->getValueDouble(aa);
 
-	    // check for nan
-	    if (!isnand(val)) {
-	      sum += aa*val;
-	      weight += val;
-	    }
-	  }
-	}
+	    // check for nan
+	    if (!isnand(val)) {
+	      sum += aa*val;
+	      weight += val;
+	    }
+	  }
+	}
+      }
+    }
+
+    if (weight>0)
+      cd = sum/weight;
+    else
+      break;
+  }
+  CLEARSIGBUS
+
+  return cd * ptr->dataToRef;
+}
+
+void Base::getMarkerAnalysisPlot2dCmd(int id, char* xname, char* yname, 
+				      char* xcname, char* ycname)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      m->analysisPlot2d(xname, yname, xcname, ycname);
+      return;
+    }
+    m=m->next();
+  }
+}
+
+void Base::getMarkerAnalysisPlot3dCmd(int id, char* xname, char* yname)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      m->analysisPlot3d(xname, yname);
+      return;
+    }
+    m=m->next();
+  }
+}
+
+void Base::getMarkerAnalysisParamCmd(int id)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      switch (m->analysisParam()) {
+      case Marker::AVERAGE:
+	Tcl_AppendResult(interp, "average", NULL);
+	return;
+      case Marker::SUM:
+	Tcl_AppendResult(interp, "sum", NULL);
+	return;
       }
     }
+    m=m->next();
+  }
 
-    if (weight>0)
-      cd = sum/weight;
-    else
-      break;
+  Tcl_AppendResult(interp, "", NULL);
+}
+
+void Base::getMarkerAnalysisSystemCmd(int id)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      printCoordSystem(m->analysisSystem());
+      Tcl_AppendResult(interp, " ", NULL);
+      printSkyFrame(m->analysisSky());
+      return;
+    }
+    m=m->next();
   }
-  CLEARSIGBUS
 
-  return cd * ptr->dataToRef;
+  Tcl_AppendResult(interp, "", NULL);
 }
 
 void Base::getMarkerAngleCmd(int id)
@@ -1006,7 +983,7 @@ void Base::getMarkerAngleCmd(int id)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerAngleCmd(int id, CoordSystem sys, SkyFrame sky)
+void Base::getMarkerAngleCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1020,7 +997,7 @@ void Base::getMarkerAngleCmd(int id, CoordSystem sys, SkyFrame sky)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerAnnulusRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerAnnulusRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1039,7 +1016,7 @@ void Base::getMarkerAnnulusRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerAnnulusRadiusCmd(int id, CoordSystem sys, SkyDist dist)
+void Base::getMarkerAnnulusRadiusCmd(int id, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1058,7 +1035,7 @@ void Base::getMarkerAnnulusRadiusCmd(int id, CoordSystem sys, SkyDist dist)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerBoxAnnulusRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerBoxAnnulusRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1076,8 +1053,8 @@ void Base::getMarkerBoxAnnulusRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerBoxAnnulusRadiusCmd(int id, CoordSystem sys, 
-					     SkyDist dist)
+void Base::getMarkerBoxAnnulusRadiusCmd(int id, Coord::CoordSystem sys, 
+					     Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1096,7 +1073,7 @@ void Base::getMarkerBoxAnnulusRadiusCmd(int id, CoordSystem sys,
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerBoxRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerBoxRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1110,7 +1087,7 @@ void Base::getMarkerBoxRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerBoxRadiusCmd(int id, CoordSystem sys, SkyDist dist)
+void Base::getMarkerBoxRadiusCmd(int id, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1148,7 +1125,7 @@ void Base::getMarkerBpandaAnglesCmd(int id)
   }
 }
 
-void Base::getMarkerBpandaAnglesCmd(int id, CoordSystem sys, SkyFrame sky)
+void Base::getMarkerBpandaAnglesCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1173,7 +1150,7 @@ void Base::getMarkerBpandaAnglesCmd(int id, CoordSystem sys, SkyFrame sky)
   }
 }
 
-void Base::getMarkerBpandaRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerBpandaRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1192,7 +1169,7 @@ void Base::getMarkerBpandaRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerBpandaRadiusCmd(int id, CoordSystem sys, SkyDist dist)
+void Base::getMarkerBpandaRadiusCmd(int id, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1212,7 +1189,7 @@ void Base::getMarkerBpandaRadiusCmd(int id, CoordSystem sys, SkyDist dist)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCenterCmd(int id, InternalSystem sys)
+void Base::getMarkerCenterCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1224,8 +1201,8 @@ void Base::getMarkerCenterCmd(int id, InternalSystem sys)
   }
 }
 
-void Base::getMarkerCenterCmd(int id, CoordSystem sys, SkyFrame sky, 
-				   SkyFormat format)
+void Base::getMarkerCenterCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+				   Coord::SkyFormat format)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1237,7 +1214,7 @@ void Base::getMarkerCenterCmd(int id, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Base::getMarkerCircleRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerCircleRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1252,7 +1229,7 @@ void Base::getMarkerCircleRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCircleRadiusCmd(int id, CoordSystem sys, SkyDist dist)
+void Base::getMarkerCircleRadiusCmd(int id, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1267,63 +1244,6 @@ void Base::getMarkerCircleRadiusCmd(int id, CoordSystem sys, SkyDist dist)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCircle3dCmd(int id, char* xName, char* yName,
-					 char* xcName)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      bltCircle3d(xName, yName, xcName, (Circle3d*)m);
-      return;
-    }
-    m=m->next();
-  }
-}
-
-void Base::getMarkerCircle3dMethodCmd(int id)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      printInteger(((Circle3d*)m)->getMethod());
-      return;
-    }
-    m=m->next();
-  }
-
-  Tcl_AppendResult(interp, "", NULL);
-}
-
-void Base::getMarkerCircle3dRadiusCmd(int id, CoordSystem sys, 
-					       SkyDist dist)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      Vector r = ((Circle3d*)m)->annuli(0);
-      markerPrintDouble(m->getCenter(),r[0],sys,dist);
-      return;
-    }
-    m=m->next();
-  }
-
-  Tcl_AppendResult(interp, "", NULL);
-}
-
-void Base::getMarkerCircle3dSystemCmd(int id)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      printCoordSystem(((Circle3d*)m)->getSystem());
-      return;
-    }
-    m=m->next();
-  }
-
-  Tcl_AppendResult(interp, "", NULL);
-}
-
 void Base::getMarkerCpandaAnglesCmd(int id)
 {
   Marker* m=markers->head();
@@ -1350,7 +1270,7 @@ void Base::getMarkerCpandaAnglesCmd(int id)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCpandaAnglesCmd(int id, CoordSystem sys, SkyFrame sky)
+void Base::getMarkerCpandaAnglesCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1377,7 +1297,7 @@ void Base::getMarkerCpandaAnglesCmd(int id, CoordSystem sys, SkyFrame sky)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCpandaRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerCpandaRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1396,7 +1316,7 @@ void Base::getMarkerCpandaRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCpandaRadiusCmd(int id, CoordSystem sys, SkyDist dist)
+void Base::getMarkerCpandaRadiusCmd(int id, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1499,7 +1419,7 @@ void Base::getMarkerCompassLabelCmd(int id)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCompassRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerCompassRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1514,7 +1434,7 @@ void Base::getMarkerCompassRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerCompassRadiusCmd(int id, CoordSystem sys, SkyDist dist)
+void Base::getMarkerCompassRadiusCmd(int id, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1559,7 +1479,7 @@ void Base::getMarkerCompositeCmd(int id)
   }
 }
 
-void Base::getMarkerEllipseRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerEllipseRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1573,8 +1493,8 @@ void Base::getMarkerEllipseRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerEllipseRadiusCmd(int id, CoordSystem sys, 
-					  SkyDist dist)
+void Base::getMarkerEllipseRadiusCmd(int id, Coord::CoordSystem sys, 
+				     Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1588,7 +1508,7 @@ void Base::getMarkerEllipseRadiusCmd(int id, CoordSystem sys,
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerEllipseAnnulusRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerEllipseAnnulusRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1606,8 +1526,8 @@ void Base::getMarkerEllipseAnnulusRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerEllipseAnnulusRadiusCmd(int id, CoordSystem sys, 
-						 SkyDist dist)
+void Base::getMarkerEllipseAnnulusRadiusCmd(int id, Coord::CoordSystem sys, 
+						 Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1650,7 +1570,7 @@ void Base::getMarkerEpandaAnglesCmd(int id)
   }
 }
 
-void Base::getMarkerEpandaAnglesCmd(int id, CoordSystem sys, SkyFrame sky)
+void Base::getMarkerEpandaAnglesCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1675,7 +1595,7 @@ void Base::getMarkerEpandaAnglesCmd(int id, CoordSystem sys, SkyFrame sky)
   }
 }
 
-void Base::getMarkerEpandaRadiusCmd(int id, InternalSystem sys)
+void Base::getMarkerEpandaRadiusCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1694,8 +1614,8 @@ void Base::getMarkerEpandaRadiusCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerEpandaRadiusCmd(int id, CoordSystem sys, 
-					 SkyDist dist)
+void Base::getMarkerEpandaRadiusCmd(int id, Coord::CoordSystem sys, 
+					 Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1813,7 +1733,7 @@ void Base::getMarkerIdAllCmd()
   }
 }
 
-void Base::getMarkerLineCmd(int id, InternalSystem sys)
+void Base::getMarkerLineCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1826,8 +1746,8 @@ void Base::getMarkerLineCmd(int id, InternalSystem sys)
   }
 }
 
-void Base::getMarkerLineCmd(int id, CoordSystem sys, SkyFrame sky, 
-				 SkyFormat format)
+void Base::getMarkerLineCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+				 Coord::SkyFormat format)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1862,7 +1782,7 @@ void Base::getMarkerLineArrowCmd(int id)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerLineLengthCmd(int id, InternalSystem sys)
+void Base::getMarkerLineLengthCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1876,8 +1796,8 @@ void Base::getMarkerLineLengthCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerLineLengthCmd(int id, CoordSystem sys, 
-				       SkyDist dist)
+void Base::getMarkerLineLengthCmd(int id, Coord::CoordSystem sys, 
+				       Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1925,8 +1845,8 @@ void Base::getMarkerLineWidthCmd(int id)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerMapLenFromRefCmd(int id, double d, CoordSystem sys, 
-					  SkyDist dist)
+void Base::getMarkerMapLenFromRefCmd(int id, double d, Coord::CoordSystem sys, 
+					  Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -1941,6 +1861,20 @@ void Base::getMarkerMapLenFromRefCmd(int id, double d, CoordSystem sys,
   Tcl_AppendResult(interp, "", NULL);
 }
 
+void Base::getMarkerPointShapeCmd(int id)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      Tcl_AppendResult(interp, ((Point*)m)->shape(), NULL);
+      return;
+    }
+    m=m->next();
+  }
+
+  Tcl_AppendResult(interp, "", NULL);
+}
+
 void Base::getMarkerPointSizeCmd(int id)
 {
   Marker* m=markers->head();
@@ -1959,8 +1893,8 @@ void Base::getMarkerPolygonSegmentCmd(const Vector& v)
 {
   Marker* m=markers->head();
   while (m) {
-    if (m->isSelected() && m->isPolygon()) {
-      int s = ((Polygon*)(m))->getSegment(v);
+    if (m->isSelected()) {
+      int s = m->getSegment(v);
       if (s) {
 	ostringstream str;
 	str << m->getId() << ' ' << s << ends;
@@ -1982,21 +1916,7 @@ void Base::getMarkerPreserveCmd()
     Tcl_AppendResult(interp, "0", NULL);
 }
 
-void Base::getMarkerProjectionCmd(int id, 
-				       char* xName, char* yName,
-				       char* xcName, char* ycName)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      bltProjection(xName, yName, xcName, ycName,(Projection*)m);
-      return;
-    }
-    m=m->next();
-  }
-}
-
-void Base::getMarkerProjectionPointsCmd(int id, InternalSystem sys)
+void Base::getMarkerProjectionPointsCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2009,8 +1929,8 @@ void Base::getMarkerProjectionPointsCmd(int id, InternalSystem sys)
   }
 }
 
-void Base::getMarkerProjectionPointsCmd(int id, CoordSystem sys, 
-					     SkyFrame sky, SkyFormat format)
+void Base::getMarkerProjectionPointsCmd(int id, Coord::CoordSystem sys, 
+					     Coord::SkyFrame sky, Coord::SkyFormat format)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2025,7 +1945,7 @@ void Base::getMarkerProjectionPointsCmd(int id, CoordSystem sys,
   }
 }
 
-void Base::getMarkerProjectionLengthCmd(int id, InternalSystem sys)
+void Base::getMarkerProjectionLengthCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2040,8 +1960,8 @@ void Base::getMarkerProjectionLengthCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerProjectionLengthCmd(int id, CoordSystem sys,
-					   SkyDist dist)
+void Base::getMarkerProjectionLengthCmd(int id, Coord::CoordSystem sys,
+					   Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2056,21 +1976,7 @@ void Base::getMarkerProjectionLengthCmd(int id, CoordSystem sys,
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerProjectionMethodCmd(int id)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      printInteger(((Projection*)m)->getMethod());
-      return;
-    }
-    m=m->next();
-  }
-
-  Tcl_AppendResult(interp, "", NULL);
-}
-
-void Base::getMarkerProjectionWidthCmd(int id, InternalSystem sys) 
+void Base::getMarkerProjectionWidthCmd(int id, Coord::InternalSystem sys) 
 {
   Marker* m=markers->head();
   while (m) {
@@ -2084,8 +1990,8 @@ void Base::getMarkerProjectionWidthCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerProjectionWidthCmd(int id, CoordSystem sys, 
-					    SkyDist dist)
+void Base::getMarkerProjectionWidthCmd(int id, Coord::CoordSystem sys, 
+					    Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2100,22 +2006,6 @@ void Base::getMarkerProjectionWidthCmd(int id, CoordSystem sys,
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerProjectionSystemCmd(int id)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      printCoordSystem(((Projection*)m)->getSystem());
-      Tcl_AppendResult(interp, " ", NULL);
-      printSkyFrame(((Projection*)m)->getSkyFrame());
-      return;
-    }
-    m=m->next();
-  }
-
-  Tcl_AppendResult(interp, "", NULL);
-}
-
 void Base::getMarkerPropertyCmd(unsigned short which)
 {
   // return first selected found
@@ -2174,7 +2064,7 @@ void Base::getMarkerPropertyCmd(int id, unsigned short which)
   Tcl_AppendResult(interp, "0", NULL);
 }
 
-void Base::getMarkerRulerLengthCmd(int id, InternalSystem sys)
+void Base::getMarkerRulerLengthCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2192,8 +2082,8 @@ void Base::getMarkerRulerLengthCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerRulerLengthCmd(int id, CoordSystem sys, 
-				      SkyDist dist)
+void Base::getMarkerRulerLengthCmd(int id, Coord::CoordSystem sys, 
+				      Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2217,7 +2107,7 @@ void Base::getMarkerRulerLengthCmd(int id, CoordSystem sys,
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerRulerPointCmd(int id, InternalSystem sys)
+void Base::getMarkerRulerPointCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2230,8 +2120,8 @@ void Base::getMarkerRulerPointCmd(int id, InternalSystem sys)
   }
 }
 
-void Base::getMarkerRulerPointCmd(int id, CoordSystem sys, SkyFrame sky,
-				  SkyFormat format)
+void Base::getMarkerRulerPointCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky,
+				  Coord::SkyFormat format)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2597,7 +2487,7 @@ void Base::getMarkerTypeCmd(int id)
   }
 }
 
-void Base::getMarkerVectorCmd(int id, InternalSystem sys)
+void Base::getMarkerVectorCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2609,8 +2499,8 @@ void Base::getMarkerVectorCmd(int id, InternalSystem sys)
   }
 }
 
-void Base::getMarkerVectorCmd(int id, CoordSystem sys, SkyFrame sky, 
-			      SkyFormat format)
+void Base::getMarkerVectorCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			      Coord::SkyFormat format)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2639,7 +2529,7 @@ void Base::getMarkerVectorArrowCmd(int id)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerVectorLengthCmd(int id, InternalSystem sys)
+void Base::getMarkerVectorLengthCmd(int id, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2653,7 +2543,7 @@ void Base::getMarkerVectorLengthCmd(int id, InternalSystem sys)
   Tcl_AppendResult(interp, "", NULL);
 }
 
-void Base::getMarkerVectorLengthCmd(int id, CoordSystem sys, SkyDist dist)
+void Base::getMarkerVectorLengthCmd(int id, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2740,6 +2630,50 @@ void Base::markerLayerCmd(MarkerLayer layer) {
   }
 }
 
+void Base::markerAnalysisCmd(int id, Marker::AnalysisMethod aa, int which)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      m->analysis(aa,which);
+      return;
+    }
+    m=m->next();
+  }
+
+  result = TCL_ERROR;
+}
+
+void Base::markerAnalysisParamCmd(int id, Marker::AnalysisParamType pp)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      m->setAnalysisParam(pp);
+      return;
+    }
+    m=m->next();
+  }
+
+  result = TCL_ERROR;
+}
+
+void Base::markerAnalysisSystemCmd(int id, Coord::CoordSystem sys, 
+				   Coord::SkyFrame sky)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      m->setAnalysisSystem(sys);
+      m->setAnalysisSky(sky);
+      return;
+    }
+    m=m->next();
+  }
+
+  result = TCL_ERROR;
+}
+
 void Base::markerAngleCmd(int id, double angle)
 {
   Marker* m=markers->head();
@@ -2761,8 +2695,8 @@ void Base::markerAngleCmd(int id, double angle)
   result = TCL_ERROR;
 }
 
-void Base::markerAngleCmd(int id, double angle, CoordSystem sys, 
-			       SkyFrame sky)
+void Base::markerAngleCmd(int id, double angle, Coord::CoordSystem sys, 
+			       Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2791,7 +2725,7 @@ void Base::markerAnnulusCreateRadiusCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((Annulus*)m)->addAnnuli(mapToRef(vv,CANVAS)));
+	printInteger(((Annulus*)m)->addAnnuli(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -2822,7 +2756,7 @@ void Base::markerAnnulusDeleteRadiusCmd(int id, int h)
 }
 
 void Base::markerAnnulusRadiusCmd(int id, double inner, double outer,
-				       int num, InternalSystem sys)
+				       int num, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2846,7 +2780,7 @@ void Base::markerAnnulusRadiusCmd(int id, double inner, double outer,
 }
 
 void Base::markerAnnulusRadiusCmd(int id, double inner, double outer,
-				       int num, CoordSystem sys, SkyDist dist)
+				       int num, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2871,7 +2805,7 @@ void Base::markerAnnulusRadiusCmd(int id, double inner, double outer,
 }
 
 void Base::markerAnnulusRadiusCmd(int id, const char* lev, 
-				       CoordSystem sys, SkyDist dist)
+				       Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2953,7 +2887,7 @@ void Base::markerBackCmd(int id)
 
 void Base::markerBoxAnnulusRadiusCmd(int id, const Vector& inner,
 					const Vector& outer, int num,
-					InternalSystem sys)
+					Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -2978,7 +2912,7 @@ void Base::markerBoxAnnulusRadiusCmd(int id, const Vector& inner,
 
 void Base::markerBoxAnnulusRadiusCmd(int id, const Vector& inner,
 					const Vector& outer, int num,
-					CoordSystem sys, SkyDist dist)
+					Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3003,7 +2937,7 @@ void Base::markerBoxAnnulusRadiusCmd(int id, const Vector& inner,
 }
 
 void Base::markerBoxAnnulusRadiusCmd(int id,const char* lev, 
-					CoordSystem sys, SkyDist dist)
+					Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3049,7 +2983,7 @@ void Base::markerBoxAnnulusCreateRadiusCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((BoxAnnulus*)m)->addAnnuli(mapToRef(vv,CANVAS)));
+	printInteger(((BoxAnnulus*)m)->addAnnuli(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -3080,7 +3014,7 @@ void Base::markerBoxAnnulusDeleteRadiusCmd(int id, int h)
 }
 
 void Base::markerBoxRadiusCmd(int id, const Vector& size, 
-				   InternalSystem sys)
+				   Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3102,7 +3036,7 @@ void Base::markerBoxRadiusCmd(int id, const Vector& size,
 }
 
 void Base::markerBoxRadiusCmd(int id, const Vector& size, 
-				 CoordSystem sys, SkyDist dist)
+				 Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3132,7 +3066,7 @@ void Base::markerBpandaCreateAnglesCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((Bpanda*)m)->addAngles(mapToRef(vv,CANVAS)));
+	printInteger(((Bpanda*)m)->addAngles(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -3151,7 +3085,7 @@ void Base::markerBpandaCreateRadiusCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((Bpanda*)m)->addAnnuli(mapToRef(vv,CANVAS)));
+	printInteger(((Bpanda*)m)->addAnnuli(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -3208,7 +3142,7 @@ void Base::markerBpandaEditCmd(int id,
 void Base::markerBpandaEditCmd(int id, 
 			       double a1, double a2, int an, 
 			       const Vector& r1, const Vector& r2, int rn,
-			       CoordSystem sys, SkyFrame sky)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky)
 
 {
   Marker* m=markers->head();
@@ -3233,8 +3167,8 @@ void Base::markerBpandaEditCmd(int id,
 
 void Base::markerBpandaEditCmd(int id, 
 			       const char* a, const char* r,
-			       CoordSystem sys, SkyFrame sky, 
-			       CoordSystem rsys, SkyDist rdist)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			       Coord::CoordSystem rsys, Coord::SkyDist rdist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3366,7 +3300,7 @@ void Base::markerCentroidIterationCmd(int iter)
   centroidIteration = iter;
 }
 
-void Base::markerCircleRadiusCmd(int id, double radius,InternalSystem sys)
+void Base::markerCircleRadiusCmd(int id, double radius,Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3388,8 +3322,8 @@ void Base::markerCircleRadiusCmd(int id, double radius,InternalSystem sys)
   result = TCL_ERROR;
 }
 
-void Base::markerCircleRadiusCmd(int id, double radius, CoordSystem sys,
-				 SkyDist dist)
+void Base::markerCircleRadiusCmd(int id, double radius, Coord::CoordSystem sys,
+				 Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3412,69 +3346,6 @@ void Base::markerCircleRadiusCmd(int id, double radius, CoordSystem sys,
   result = TCL_ERROR;
 }
 
-void Base::markerCircle3dCmd(int id, double radius, InternalSystem sys, 
-			     int method)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      if (m->canEdit()) {
-	markerUndo(m, EDIT);
-
-	// it may shrink
-	update(PIXMAP, m->getAllBBox());
-	double r = mapLenToRef(radius, sys);
-	((Circle3d*)m)->setAnnuli(Vector(r,r));
-	((Circle3d*)m)->setMethod(method);
-	update(PIXMAP, m->getAllBBox());
-      }
-      return;
-    }
-    m=m->next();
-  }
-
-  result = TCL_ERROR;
-}
-
-void Base::markerCircle3dCmd(int id, double radius, CoordSystem sys, 
-			     SkyDist dist, int method)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      if (m->canEdit()) {
-	markerUndo(m, EDIT);
-
-	// it may shrink
-	update(PIXMAP, m->getAllBBox());
-	FitsImage* ptr = findFits(sys,m->getCenter());
-	double r = ptr->mapLenToRef(radius, sys, dist);
-	((Circle3d*)m)->setAnnuli(Vector(r,r));
-	((Circle3d*)m)->setMethod(method);
-	update(PIXMAP, m->getAllBBox());
-      }
-      return;
-    }
-    m=m->next();
-  }
-
-  result = TCL_ERROR;
-}
-
-void Base::markerCircle3dSystemCmd(int id, CoordSystem sys)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      ((Circle3d*)m)->setSystem(sys);
-      return;
-    }
-    m=m->next();
-  }
-
-  result = TCL_ERROR;
-}
-
 void Base::markerColorCmd(const char* clr)
 {
   Marker* m=markers->head();
@@ -3591,7 +3462,7 @@ void Base::markerCompassLabelCmd(int id, const char* n, const char* e)
   result = TCL_ERROR;
 }
 
-void Base::markerCompassRadiusCmd(int id, double r, InternalSystem sys)
+void Base::markerCompassRadiusCmd(int id, double r, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3613,8 +3484,8 @@ void Base::markerCompassRadiusCmd(int id, double r, InternalSystem sys)
   result = TCL_ERROR;
 }
 
-void Base::markerCompassRadiusCmd(int id, double r, CoordSystem sys, 
-				       SkyDist dist)
+void Base::markerCompassRadiusCmd(int id, double r, Coord::CoordSystem sys, 
+				       Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3637,7 +3508,7 @@ void Base::markerCompassRadiusCmd(int id, double r, CoordSystem sys,
   result = TCL_ERROR;
 }
 
-void Base::markerCompassSystemCmd(int id, CoordSystem sys, SkyFrame sky)
+void Base::markerCompassSystemCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -3725,7 +3596,7 @@ void Base::markerCpandaCreateAnglesCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((Cpanda*)m)->addAngles(mapToRef(vv,CANVAS)));
+	printInteger(((Cpanda*)m)->addAngles(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -3744,7 +3615,7 @@ void Base::markerCpandaCreateRadiusCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((Cpanda*)m)->addAnnuli(mapToRef(vv,CANVAS)));
+	printInteger(((Cpanda*)m)->addAnnuli(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -3799,7 +3670,7 @@ void Base::markerCpandaEditCmd(int id, double a1, double a2, int an,
 
 void Base::markerCpandaEditCmd(int id, double a1, double a2, int an, 
 			       double r1, double r2, int rn, 
-			       CoordSystem sys, SkyFrame sky)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky)
 
 {
   Marker* m=markers->head();
@@ -3826,8 +3697,8 @@ void Base::markerCpandaEditCmd(int id, double a1, double a2, int an,
 }
 
 void Base::markerCpandaEditCmd(int id, const char* a, const char* r,
-				   CoordSystem sys, SkyFrame sky, 
-				   CoordSystem rsys, SkyDist rdist)
+				   Coord::CoordSystem sys, Coord::SkyFrame sky, 
+				   Coord::CoordSystem rsys, Coord::SkyDist rdist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4114,7 +3985,7 @@ void Base::markerEditMotionCmd(const Vector& vv, int hh)
     redraw(editMarker->getAllBBox());
     forceUpdate();
 
-    editMarker->edit(mapToRef(vv,CANVAS), hh);
+    editMarker->edit(mapToRef(vv,Coord::CANVAS), hh);
     renderMarkerXOR(editMarker);
   }
 }
@@ -4129,7 +4000,7 @@ void Base::markerEditEndCmd()
 }
 
 void Base::markerEllipseRadiusCmd(int id, const Vector& radius, 
-				       InternalSystem sys)
+				  Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4152,7 +4023,7 @@ void Base::markerEllipseRadiusCmd(int id, const Vector& radius,
 }
 
 void Base::markerEllipseRadiusCmd(int id, const Vector& radius, 
-				   CoordSystem sys, SkyDist dist)
+				  Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4177,7 +4048,7 @@ void Base::markerEllipseRadiusCmd(int id, const Vector& radius,
 
 void Base::markerEllipseAnnulusRadiusCmd(int id, const Vector& inner, 
 					      const Vector& outer, int num,
-					      InternalSystem sys)
+					      Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4202,7 +4073,7 @@ void Base::markerEllipseAnnulusRadiusCmd(int id, const Vector& inner,
 
 void Base::markerEllipseAnnulusRadiusCmd(int id, 
 		      const Vector& inner, const Vector& outer, int num,
-		      CoordSystem sys, SkyDist dist)
+		      Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4228,7 +4099,7 @@ void Base::markerEllipseAnnulusRadiusCmd(int id,
 
 void Base::markerEllipseAnnulusRadiusCmd(int id, 
 					      const char* lev,
-					      CoordSystem sys,SkyDist dist)
+					      Coord::CoordSystem sys,Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4274,7 +4145,7 @@ void Base::markerEllipseAnnulusCreateRadiusCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((EllipseAnnulus*)m)->addAnnuli(mapToRef(vv,CANVAS)));
+	printInteger(((EllipseAnnulus*)m)->addAnnuli(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -4312,7 +4183,7 @@ void Base::markerEpandaCreateAnglesCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((Epanda*)m)->addAngles(mapToRef(vv,CANVAS)));
+	printInteger(((Epanda*)m)->addAngles(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -4331,7 +4202,7 @@ void Base::markerEpandaCreateRadiusCmd(int id, const Vector& vv)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	printInteger(((Epanda*)m)->addAnnuli(mapToRef(vv,CANVAS)));
+	printInteger(((Epanda*)m)->addAnnuli(mapToRef(vv,Coord::CANVAS)));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -4388,7 +4259,7 @@ void Base::markerEpandaEditCmd(int id,
 void Base::markerEpandaEditCmd(int id, 
 			       double a1, double a2, int an, 
 			       const Vector& r1, const Vector& r2, int rn,
-			       CoordSystem sys, SkyFrame sky)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky)
 
 {
   Marker* m=markers->head();
@@ -4413,8 +4284,8 @@ void Base::markerEpandaEditCmd(int id,
 
 void Base::markerEpandaEditCmd(int id, 
 			       const char* a, const char* r,
-			       CoordSystem sys, SkyFrame sky, 
-			       CoordSystem rsys, SkyDist rdist)
+			       Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			       Coord::CoordSystem rsys, Coord::SkyDist rdist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4705,7 +4576,7 @@ void Base::markerKeyCmd(const Vector& v)
 }
 
 void Base::markerLineCmd(int id, const Vector& p1, const Vector& p2, 
-			      InternalSystem sys)
+			      Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4727,7 +4598,7 @@ void Base::markerLineCmd(int id, const Vector& p1, const Vector& p2,
 }
 
 void Base::markerLineCmd(int id, const Vector& p1, const Vector& p2, 
-			  CoordSystem sys, SkyFrame sky)
+			  Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -4793,7 +4664,7 @@ void Base::markerLineWidthCmd(int id, int w)
 }
 
 void Base::markerListCmd(MarkerFormat type, 
-			 CoordSystem sys, SkyFrame sky, SkyFormat format,
+			 Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format,
 			 int strip, int select, 
 			 unsigned short mask, unsigned short value, 
 			 List<Tag>& tags)
@@ -4871,7 +4742,7 @@ void Base::markerListCmd(MarkerFormat type,
     switch (type) {
     case DS9:
       if (doSys) {
-	listCoordSystem(str, sys, sky, 1, keyContext->fits->hasWCSCel(sys));
+	coord.listCoordSystem(str, sys, sky, 1, keyContext->fits->hasWCSCel(sys));
 	str << (strip ? ';' : '\n');
 	doSys = 0;
       }
@@ -4938,7 +4809,7 @@ void Base::markerLoadCmd(MarkerFormat fm, const char* fn)
 }
 
 void Base::markerLoadCmd(MarkerFormat fm, const char* fn, 
-			 CoordSystem sys, SkyFrame sky)
+			 Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   xySystem_ = sys;
   xySky_ = sky;
@@ -4956,7 +4827,7 @@ void Base::markerLoadCmd(MarkerFormat fm, int fd)
 }
 
 void Base::markerLoadCmd(MarkerFormat fm, int fd, 
-			 CoordSystem sys, SkyFrame sky)
+			 Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   xySystem_ = sys;
   xySky_ = sky;
@@ -5074,33 +4945,33 @@ void Base::markerLoadFitsCmd(const char* fn, const char* color,
 
     if (!strncmp(s2, "CIRCLE", 6) && r) {
       Vector rr(r->value(ptr),0);
-      createCircleCmd(keyContext->fits->mapToRef(center, PHYSICAL),
-		      keyContext->fits->mapLenToRef(rr[0], PHYSICAL), 
+      createCircleCmd(keyContext->fits->mapToRef(center, Coord::PHYSICAL),
+		      keyContext->fits->mapLenToRef(rr[0], Coord::PHYSICAL), 
 		      color, dash, width, font, text, props, NULL, taglist,cblist);
 
     }
     else if (!strncmp(s2, "ANNULU", 6) && r) {
       Vector rr0(r->value(ptr,0),0);
       Vector rr1(r->value(ptr,1),0);
-      createAnnulusCmd(keyContext->fits->mapToRef(center ,PHYSICAL),
-		       keyContext->fits->mapLenToRef(rr1[0], PHYSICAL),
-		       keyContext->fits->mapLenToRef(rr0[0], PHYSICAL), 
+      createAnnulusCmd(keyContext->fits->mapToRef(center ,Coord::PHYSICAL),
+		       keyContext->fits->mapLenToRef(rr1[0], Coord::PHYSICAL),
+		       keyContext->fits->mapLenToRef(rr0[0], Coord::PHYSICAL), 
 		       1,
 		       color, dash, width, font, text, props, NULL, taglist,cblist);
 
     }
     else if (!strncmp(s2, "BOX   ", 6) && r) {
       Vector rr(r->value(ptr,0),r->value(ptr,1));
-      createBoxCmd(keyContext->fits->mapToRef(center, PHYSICAL),
-		   keyContext->fits->mapLenToRef(rr, PHYSICAL), 
+      createBoxCmd(keyContext->fits->mapToRef(center, Coord::PHYSICAL),
+		   keyContext->fits->mapLenToRef(rr, Coord::PHYSICAL), 
 		   0,
 		   color, dash, width, font, text, props, NULL, taglist,cblist);
 
     }
     else if (!strncmp(s2, "ROTBOX", 6) && r && ang) {
       Vector rr(r->value(ptr,0),r->value(ptr,1));
-      createBoxCmd(keyContext->fits->mapToRef(center, PHYSICAL),
-		   keyContext->fits->mapLenToRef(rr, PHYSICAL), 
+      createBoxCmd(keyContext->fits->mapToRef(center, Coord::PHYSICAL),
+		   keyContext->fits->mapLenToRef(rr, Coord::PHYSICAL), 
 		   degToRad(ang->value(ptr)),
 		   color, dash, width, font, text, props, NULL, taglist,cblist);
 
@@ -5112,8 +4983,8 @@ void Base::markerLoadFitsCmd(const char* fn, const char* color,
       Vector d = v2-v1;
       Vector c = d/2 + v1;
 
-      createBoxCmd(keyContext->fits->mapToRef(c,PHYSICAL), 
-		   keyContext->fits->mapLenToRef(d,PHYSICAL), 
+      createBoxCmd(keyContext->fits->mapToRef(c,Coord::PHYSICAL), 
+		   keyContext->fits->mapLenToRef(d,Coord::PHYSICAL), 
 		   0,
 		   color, dash, width, font, text, props, NULL, taglist,cblist);
     }
@@ -5125,16 +4996,16 @@ void Base::markerLoadFitsCmd(const char* fn, const char* color,
       Vector d = v2-v1;
       Vector c = d/2 + v1;
 
-      createBoxCmd(keyContext->fits->mapToRef(c,PHYSICAL), 
-		   keyContext->fits->mapLenToRef(d,PHYSICAL), 
+      createBoxCmd(keyContext->fits->mapToRef(c,Coord::PHYSICAL), 
+		   keyContext->fits->mapLenToRef(d,Coord::PHYSICAL), 
 		   degToRad(ang->value(ptr)),
 		   color, dash, width, font, text, props, NULL, taglist,cblist);
     }
 
     else if (!strncmp(s2, "ELLIPS", 6) && r && ang) {
       Vector rr(r->value(ptr,0),r->value(ptr,1));
-      createEllipseCmd(keyContext->fits->mapToRef(center, PHYSICAL),
-		       keyContext->fits->mapLenToRef(rr, PHYSICAL),
+      createEllipseCmd(keyContext->fits->mapToRef(center, Coord::PHYSICAL),
+		       keyContext->fits->mapLenToRef(rr, Coord::PHYSICAL),
 		       degToRad(ang->value(ptr)),
 		       color, dash, width, font, text, props, NULL, taglist,cblist);
 
@@ -5142,24 +5013,24 @@ void Base::markerLoadFitsCmd(const char* fn, const char* color,
     else if (!strncmp(s2, "PIE   ", 6) && r && ang) {
       Vector rr0(r->value(ptr,0),0);
       Vector rr1(r->value(ptr,1),0);
-      createCpandaCmd(keyContext->fits->mapToRef(center,PHYSICAL),
+      createCpandaCmd(keyContext->fits->mapToRef(center,Coord::PHYSICAL),
 		      degToRad(ang->value(ptr,0)-90), 
 		      degToRad(ang->value(ptr,1)-90), 1,
-		      keyContext->fits->mapLenToRef(rr1[0],PHYSICAL),
-		      keyContext->fits->mapLenToRef(rr0[0],PHYSICAL), 1,
+		      keyContext->fits->mapLenToRef(rr1[0],Coord::PHYSICAL),
+		      keyContext->fits->mapLenToRef(rr0[0],Coord::PHYSICAL), 1,
 		      color, dash, width, font, text, props, NULL, taglist,cblist);
 
     }
     else if (!strncmp(s2, "POINT ", 6))
-      createBoxCirclePointCmd(keyContext->fits->mapToRef(center,PHYSICAL),
-			      POINTSIZE, 
-			      color, dash, width, font, text, props, NULL, taglist,cblist);
+      createPointCmd(keyContext->fits->mapToRef(center,Coord::PHYSICAL),
+		     Point::BOXCIRCLE, POINTSIZE, 
+		     color, dash, width, font, text, props, NULL, taglist,cblist);
 
     else if (!strncmp(s2, "POLYGO", 6)) {
       List<Vertex> list;
       for (int ii=0; ii<repeat; ii++) {
 	Vector vv(x->value(ptr,ii), y->value(ptr,ii));
-	Vertex* n = new Vertex(keyContext->fits->mapToRef(vv, PHYSICAL));
+	Vertex* n = new Vertex(keyContext->fits->mapToRef(vv, Coord::PHYSICAL));
 
 	if (ii+1 < repeat) {
 	  // check for endpoints matching or endpoints NULL after first
@@ -5255,7 +5126,7 @@ void Base::markerMoveCmd(int id, const Vector& v)
 
 void Base::markerMoveBeginCmd(const Vector& v)
 {
-  markerBegin = mapToRef(v,CANVAS);
+  markerBegin = mapToRef(v,Coord::CANVAS);
   
   undoMarkers->deleteAll();
   Marker* m=markers->head();
@@ -5271,7 +5142,7 @@ void Base::markerMoveBeginCmd(const Vector& v)
 
 void Base::markerMoveBeginCmd(int id, const Vector& v)
 {
-  markerBegin = mapToRef(v,CANVAS);
+  markerBegin = mapToRef(v,Coord::CANVAS);
 
   undoMarkers->deleteAll();
   Marker* m=markers->head();
@@ -5303,7 +5174,7 @@ void Base::markerMoveMotionCmd(const Vector& v)
     forceUpdate();
 
     // ok, now draw selected markers in new location
-    Vector markerEnd = mapToRef(v,CANVAS);
+    Vector markerEnd = mapToRef(v,Coord::CANVAS);
     Vector diff = markerEnd - markerBegin;
     markerBegin = markerEnd;
 
@@ -5340,7 +5211,7 @@ void Base::markerMoveMotionCmd(int id, const Vector& v)
     forceUpdate();
 
     // ok, now draw selected markers in new location
-    Vector markerEnd = mapToRef(v,CANVAS);
+    Vector markerEnd = mapToRef(v,Coord::CANVAS);
     Vector diff = markerEnd - markerBegin;
     markerBegin = markerEnd;
 
@@ -5378,7 +5249,7 @@ void Base::markerMoveEndCmd(int id)
   update(PIXMAP);
 }
 
-void Base::markerMoveToCmd(const Vector& v, InternalSystem sys)
+void Base::markerMoveToCmd(const Vector& v, Coord::InternalSystem sys)
 {
   undoMarkers->deleteAll();
   Marker* m=markers->head();
@@ -5395,7 +5266,7 @@ void Base::markerMoveToCmd(const Vector& v, InternalSystem sys)
   }
 }
 
-void Base::markerMoveToCmd(const Vector& v, CoordSystem sys, SkyFrame sky)
+void Base::markerMoveToCmd(const Vector& v, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   undoMarkers->deleteAll();
   Marker* m=markers->head();
@@ -5414,7 +5285,7 @@ void Base::markerMoveToCmd(const Vector& v, CoordSystem sys, SkyFrame sky)
 }
 
 void Base::markerMoveToCmd(const char* tag, const Vector& v, 
-			    InternalSystem sys)
+			    Coord::InternalSystem sys)
 {
   undoMarkers->deleteAll();
   Marker* m=markers->head();
@@ -5432,7 +5303,7 @@ void Base::markerMoveToCmd(const char* tag, const Vector& v,
 }
 
 void Base::markerMoveToCmd(const char* tag, const Vector& v, 
-			    CoordSystem sys, SkyFrame sky)
+			    Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   undoMarkers->deleteAll();
   Marker* m=markers->head();
@@ -5450,7 +5321,7 @@ void Base::markerMoveToCmd(const char* tag, const Vector& v,
   }
 }
 
-void Base::markerMoveToCmd(int id, const Vector& v, InternalSystem sys)
+void Base::markerMoveToCmd(int id, const Vector& v, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5469,7 +5340,7 @@ void Base::markerMoveToCmd(int id, const Vector& v, InternalSystem sys)
 }
 
 void Base::markerMoveToCmd(int id, const Vector& v, 
-				CoordSystem sys, SkyFrame sky)
+				Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5513,19 +5384,19 @@ void Base::markerPasteCmd()
 }
 
 
-void Base::markerPasteCmd(CoordSystem from, CoordSystem to)
+void Base::markerPasteCmd(Coord::CoordSystem from, Coord::CoordSystem to)
 {
   // sys is the coordinate system to specified in the header
   // use wcsSystem for markers
 
   MarkerFormat type = DS9;
-  SkyFrame sky = FK5;
-  SkyFormat format = DEGREES;
+  Coord::SkyFrame sky = Coord::FK5;
+  Coord::SkyFormat format = Coord::DEGREES;
 
   {
     ostringstream str;
     markerListHeader(str, to, sky, format, 0);
-    listCoordSystem(str,to,sky,1,1);
+    coord.listCoordSystem(str,to,sky,1,1);
     str << endl << ends;
     Tcl_AppendResult(interp, str.str().c_str(), NULL);
   }
@@ -5540,6 +5411,27 @@ void Base::markerPasteCmd(CoordSystem from, CoordSystem to)
   }
 }
 
+void Base::markerPointShapeCmd(int id, Point::PointShape shape)
+{
+  Marker* m=markers->head();
+  while (m) {
+    if (m->getId() == id) {
+      if (m->canEdit()) {
+	markerUndo(m, EDIT);
+
+	// it may shrink
+	update(PIXMAP, m->getAllBBox());
+	((Point*)m)->setShape(shape);
+	update(PIXMAP, m->getAllBBox());
+      }
+      return;
+    }
+    m=m->next();
+  }
+
+  result = TCL_ERROR;
+}
+
 void Base::markerPointSizeCmd(int id, int size)
 {
   Marker* m=markers->head();
@@ -5569,7 +5461,7 @@ void Base::markerPolygonCreateVertexCmd(int id, int seg, const Vector& v)
       if (m->canEdit()) {
 	markerUndo(m, EDIT);
 
-	((Polygon*)(m))->createVertex(seg, mapToRef(v,CANVAS));
+	((Polygon*)(m))->createVertex(seg, mapToRef(v,Coord::CANVAS));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -5599,7 +5491,7 @@ void Base::markerPolygonDeleteVertexCmd(int id, int h)
   }
 }
 
-void Base::markerPolygonResetCmd(int id, const Vector& size, InternalSystem sys)
+void Base::markerPolygonResetCmd(int id, const Vector& size, Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5621,7 +5513,7 @@ void Base::markerPolygonResetCmd(int id, const Vector& size, InternalSystem sys)
 }
 
 void Base::markerPolygonResetCmd(int id, const Vector& size, 
-				 CoordSystem sys, SkyDist dist)
+				 Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5644,7 +5536,7 @@ void Base::markerPolygonResetCmd(int id, const Vector& size,
 }
 
 void Base::markerProjectionCmd(int id,const Vector& p1,const Vector& p2, 
-				    InternalSystem sys,double width,int method)
+			       Coord::InternalSystem sys,double width)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5655,7 +5547,7 @@ void Base::markerProjectionCmd(int id,const Vector& p1,const Vector& p2,
 	// it may shrink
 	update(PIXMAP, m->getAllBBox());
 	((Projection*)(m))->set(mapToRef(p1,sys), mapToRef(p2,sys), 
-				mapLenToRef(width,sys),	method);
+				mapLenToRef(width,sys));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -5667,10 +5559,10 @@ void Base::markerProjectionCmd(int id,const Vector& p1,const Vector& p2,
 }
 
 void Base::markerProjectionCmd(int id, 
-				    const Vector& p1, const Vector& p2, 
-				    CoordSystem sys, SkyFrame sky,
-				    double width, int method,
-				    CoordSystem wdsys, SkyDist wddist)
+			       const Vector& p1, const Vector& p2, 
+			       Coord::CoordSystem sys, Coord::SkyFrame sky,
+			       double width, 
+			       Coord::CoordSystem wdsys, Coord::SkyDist wddist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5683,8 +5575,7 @@ void Base::markerProjectionCmd(int id,
 	FitsImage* ptr = findFits(sys,m->getCenter());
 	((Projection*)(m))->set(ptr->mapToRef(p1,sys,sky),
 				ptr->mapToRef(p2,sys,sky), 
-				ptr->mapLenToRef(width, wdsys, wddist),
-				method);
+				ptr->mapLenToRef(width, wdsys, wddist));
 	update(PIXMAP, m->getAllBBox());
       }
       return;
@@ -5695,20 +5586,6 @@ void Base::markerProjectionCmd(int id,
   result = TCL_ERROR;
 }
 
-void Base::markerProjectionSystemCmd(int id, CoordSystem sys,SkyFrame sky)
-{
-  Marker* m=markers->head();
-  while (m) {
-    if (m->getId() == id) {
-      ((Projection*)m)->setSystem(sys,sky);
-      return;
-    }
-    m=m->next();
-  }
-
-  result = TCL_ERROR;
-}
-
 void Base::markerPropertyCmd(unsigned short prop, int value)
 {
   Marker* m=markers->head();
@@ -5840,7 +5717,7 @@ void Base::markerRotateMotionCmd(const Vector& vv, int hh)
     redraw(rotateMarker->getAllBBox());
     forceUpdate();
 
-    rotateMarker->rotate(mapToRef(vv,CANVAS), hh);
+    rotateMarker->rotate(mapToRef(vv,Coord::CANVAS), hh);
     renderMarkerXOR(rotateMarker);
   }
 }
@@ -5854,7 +5731,7 @@ void Base::markerRotateEndCmd()
 }
 
 void Base::markerRulerPointCmd(int id, const Vector& p1, const Vector& p2,
-				    InternalSystem sys)
+				    Coord::InternalSystem sys)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5876,7 +5753,7 @@ void Base::markerRulerPointCmd(int id, const Vector& p1, const Vector& p2,
 }
 
 void Base::markerRulerPointCmd(int id, const Vector& p1, const Vector& p2,
-				CoordSystem sys, SkyFrame sky)
+				Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5899,8 +5776,8 @@ void Base::markerRulerPointCmd(int id, const Vector& p1, const Vector& p2,
   result = TCL_ERROR;
 }
 
-void Base::markerRulerSystemCmd(int id, CoordSystem sys, SkyFrame sky,
-				 CoordSystem dsys, SkyDist dist)
+void Base::markerRulerSystemCmd(int id, Coord::CoordSystem sys, Coord::SkyFrame sky,
+				 Coord::CoordSystem dsys, Coord::SkyDist dist)
 {
   Marker* m=markers->head();
   while (m) {
@@ -5918,7 +5795,7 @@ void Base::markerRulerSystemCmd(int id, CoordSystem sys, SkyFrame sky,
 }
 
 void Base::markerSaveCmd(const char* fileName, MarkerFormat type, 
-			      CoordSystem sys, SkyFrame sky, SkyFormat format,
+			      Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format,
 			      int strip)
 {
   int doSys = 1;
@@ -5951,7 +5828,7 @@ void Base::markerSaveCmd(const char* fileName, MarkerFormat type,
       switch (type) {
       case DS9:
 	if (doSys) {
-	  listCoordSystem(fn, sys, sky, 1, keyContext->fits->hasWCSCel(sys));
+	  coord.listCoordSystem(fn, sys, sky, 1, keyContext->fits->hasWCSCel(sys));
 	  fn << (strip ? ';' : '\n');
 	  doSys = 0;
 	}
@@ -6017,12 +5894,12 @@ void Base::markerSaveTemplateCmd(const char* fileName)
 	ptr = ptr->nextMosaic();
       }
 
-      markerListHeader(fn, WCS0, FK5, DEGREES, 0);
-      listCoordSystem(fn, WCS0, FK5, 1, keyContext->fits->hasWCSCel(WCS0));
+      markerListHeader(fn, Coord::WCS0, Coord::FK5, Coord::DEGREES, 0);
+      coord.listCoordSystem(fn, Coord::WCS0, Coord::FK5, 1, keyContext->fits->hasWCSCel(Coord::WCS0));
       fn << endl;
 
       while (m) {
-	m->list(fn, WCS0, FK5, DEGREES, 0, 0);
+	m->list(fn, Coord::WCS0, Coord::FK5, Coord::DEGREES, 0, 0);
 	m=m->next();
       }
 
@@ -6407,7 +6284,7 @@ void Base::markerUnselectCmd(const char* tag)
   }
 }
 
-void Base::markerVectorCmd(int id, const Vector& p, InternalSystem sys,
+void Base::markerVectorCmd(int id, const Vector& p, Coord::InternalSystem sys,
 			      double mag, double ang)
 {
   Marker* m=markers->head();
@@ -6430,8 +6307,8 @@ void Base::markerVectorCmd(int id, const Vector& p, InternalSystem sys,
 }
 
 void Base::markerVectorCmd(int id, 
-			      const Vector& p, CoordSystem sys, SkyFrame sky,
-			      double mag, CoordSystem dsys, SkyDist dist,
+			      const Vector& p, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			      double mag, Coord::CoordSystem dsys, Coord::SkyDist dist,
 			      double ang)
 {
   Marker* m=markers->head();
@@ -6555,16 +6432,16 @@ void Base::regionSelectShiftEndCmd()
 
 // Marker Support
 
-void Base::markerListCiaoHeader(ostream& str, CoordSystem sys, SkyFrame sky, 
-				SkyFormat format, int strip)
+void Base::markerListCiaoHeader(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+				Coord::SkyFormat format, int strip)
 {
   // no comments for semicolons
   if (!strip)
     str << "# Region file format: CIAO version 1.0" << endl;
 }
 
-void Base::markerListHeader(ostream& str, CoordSystem sys, 
-			    SkyFrame sky, SkyFormat format, 
+void Base::markerListHeader(ostream& str, Coord::CoordSystem sys, 
+			    Coord::SkyFrame sky, Coord::SkyFormat format, 
 			    int strip)
 {
   // no comments for semicolons
@@ -6579,8 +6456,8 @@ void Base::markerListHeader(ostream& str, CoordSystem sys,
   }
 }
 
-void Base::markerListSAOtngHeader(ostream& str, CoordSystem sys, SkyFrame sky,
-				  SkyFormat format, int strip)
+void Base::markerListSAOtngHeader(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+				  Coord::SkyFormat format, int strip)
 {
   // no comments for semicolons
   if (strip)
@@ -6590,56 +6467,56 @@ void Base::markerListSAOtngHeader(ostream& str, CoordSystem sys, SkyFrame sky,
     str << "# filename: " << keyContext->fits->getRootFileName() << endl;
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case AMPLIFIER:
-  case DETECTOR:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::AMPLIFIER:
+  case Coord::DETECTOR:
     str << "# format: pixels (physical)" << endl;
     break;
 
   default:
     str << "# format: ";
     switch (sky) {
-    case FK4:
-    case FK4_NO_E:
-    case FK5:
-    case ICRS:
-    case GALACTIC:
-    case SUPERGALACTIC:
-    case ECLIPTIC:
-    case HELIOECLIPTIC:
+    case Coord::FK4:
+    case Coord::FK4_NO_E:
+    case Coord::FK5:
+    case Coord::ICRS:
+    case Coord::GALACTIC:
+    case Coord::SUPERGALACTIC:
+    case Coord::ECLIPTIC:
+    case Coord::HELIOECLIPTIC:
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	str << "degrees (";
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	str << "hms (";
 	break;
       }
 
       switch (sky) {
-      case FK4:
+      case Coord::FK4:
 	str << "fk4";
 	break;
-      case FK4_NO_E:
+      case Coord::FK4_NO_E:
 	str << "fk4-no-e";
 	break;
-      case FK5:
+      case Coord::FK5:
 	str << "fk5";
 	break;
-      case ICRS:
+      case Coord::ICRS:
 	str << "icrs";
 	break;
-      case GALACTIC:
+      case Coord::GALACTIC:
 	str << "galactic";
 	break;
-      case SUPERGALACTIC:
+      case Coord::SUPERGALACTIC:
 	str << "supergalactic";
 	break;
-      case ECLIPTIC:
+      case Coord::ECLIPTIC:
 	str << "ecliptic";
 	break;
-      case HELIOECLIPTIC:
+      case Coord::HELIOECLIPTIC:
 	str << "helioecliptic";
 	break;
       }
@@ -6650,51 +6527,51 @@ void Base::markerListSAOtngHeader(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Base::markerPrintCoord(const Vector& v, InternalSystem sys)
+void Base::markerPrintCoord(const Vector& v, Coord::InternalSystem sys)
 {
   printVector(mapFromRef(v, sys), DEFAULT);
 }
 
 void Base::markerPrintCoord(const Vector& c, const Vector& v,
-			    CoordSystem sys, SkyFrame sky, SkyFormat format)
+			    Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format)
 {
   FitsImage* ptr = findFits(sys,c);
   printFromRef(ptr, v, sys, sky, format, DEFAULT);
 }
 
-void Base::markerPrintDouble(double d, InternalSystem sys)
+void Base::markerPrintDouble(double d, Coord::InternalSystem sys)
 {
   printDouble(mapLenFromRef(d,sys), DEFAULT);
 }
 
 void Base::markerPrintDouble(const Vector& c, double d, 
-			     CoordSystem sys, SkyDist dist)
+			     Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   FitsImage* ptr = findFits(sys,c);
   printDouble(ptr->mapLenFromRef(d,sys,dist), DEFAULT);
 }
 
 void Base::markerPrintDouble(const Vector& p1, const Vector& p2,
-			     InternalSystem sys)
+			     Coord::InternalSystem sys)
 {
   printDouble(mapDistFromRef(p1,p2,sys), DEFAULT);
 }
 
 void Base::markerPrintDouble(const Vector& c,
 			     const Vector& p1, const Vector& p2,
-			     CoordSystem sys, SkyDist dist)
+			     Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   FitsImage* ptr = findFits(sys,c);
   printDouble(ptr->mapDistFromRef(p1,p2,sys,dist), DEFAULT);
 }
 
-void Base::markerPrintVector(const Vector& v, InternalSystem sys)
+void Base::markerPrintVector(const Vector& v, Coord::InternalSystem sys)
 {
   printVector(mapLenFromRef(v,sys), DEFAULT);
 }
 
 void Base::markerPrintVector(const Vector& c, const Vector& v,
-			     CoordSystem sys, SkyDist dist)
+			     Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   FitsImage* ptr = findFits(sys,c);
   printVector(ptr->mapLenFromRef((Vector&)v,sys,dist), DEFAULT);
@@ -6784,7 +6661,7 @@ void Base::renderMagnifierMarkers(List<Marker>* ml, const BBox& bb)
   Marker* m=ml->tail();
   while (m) {
     if (m->isVisible(bb))
-      m->draw(magnifierPixmap, MAGNIFIER, showMarkersText,
+      m->draw(magnifierPixmap, Coord::MAGNIFIER, showMarkersText,
 	      Marker::SRC, Marker::NOHANDLES);
     m=m->previous();
   }
@@ -6797,7 +6674,7 @@ void Base::renderMarkers(List<Marker>* ml, const BBox& bb)
   Marker* m=ml->tail();
   while (m) {
     if (m->isVisible(bb))
-      m->draw(pixmap, WIDGET, showMarkersText, 
+      m->draw(pixmap, Coord::WIDGET, showMarkersText, 
 	      Marker::SRC, Marker::HANDLES);
     m=m->previous();
   }
@@ -6806,7 +6683,7 @@ void Base::renderMarkers(List<Marker>* ml, const BBox& bb)
 void Base::renderMarkerXOR(Marker* ptr)
 {
   if (ptr)
-    ptr->draw(Tk_WindowId(tkwin), WINDOW, showMarkersText, 
+    ptr->draw(Tk_WindowId(tkwin), Coord::WINDOW, showMarkersText, 
 	      Marker::XOR, Marker::NOHANDLES);
 }
 
diff --git a/saotk/frame/frmarkerxml.C b/saotk/frame/frmarkerxml.C
index e137beb..86dcd6f 100644
--- a/saotk/frame/frmarkerxml.C
+++ b/saotk/frame/frmarkerxml.C
@@ -10,29 +10,6 @@
 #include "framebase.h"
 #include "fitsimage.h"
 
-#include "marker.h"
-#include "basemarker.h"
-
-#include "annulus.h"
-#include "box.h"
-#include "boxannulus.h"
-#include "bpanda.h"
-#include "circle.h"
-#include "compass.h"
-#include "composite.h"
-#include "cpanda.h"
-#include "ellipse.h"
-#include "ellipseannulus.h"
-#include "epanda.h"
-#include "line.h"
-#include "ruler.h"
-#include "point.h"
-#include "polygon.h"
-#include "projection.h"
-#include "circle3d.h"
-#include "text.h"
-#include "vect.h"
-
 static int xmlRead (void * context, char * buffer, int len)
 {
   istream* str=(istream*)context;
@@ -265,9 +242,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   char* y =NULL;
   char ydef[] = "0";
   y = ydef;
-  CoordSystem sys =PHYSICAL;
-  SkyFrame sky =FK5;
-  SkyFormat format =DEGREES;
+  Coord::CoordSystem sys =Coord::PHYSICAL;
+  Coord::SkyFrame sky =Coord::FK5;
+  Coord::SkyFormat format =Coord::DEGREES;
 
   // xv,yv
   char* xv =NULL;
@@ -276,9 +253,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   char* yv =NULL;
   char yvdef[] = "0";
   yv = yvdef;
-  CoordSystem vsys =PHYSICAL;
-  SkyFrame vsky =FK5;
-  SkyFormat vformat =DEGREES;
+  Coord::CoordSystem vsys =Coord::PHYSICAL;
+  Coord::SkyFrame vsky =Coord::FK5;
+  Coord::SkyFormat vformat =Coord::DEGREES;
 
   // r,r2
   char* r =NULL;
@@ -287,9 +264,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   char* r2 =NULL;
   char r2def[] = "0";
   r2 = r2def;
-  CoordSystem rsys =PHYSICAL;
-  SkyFrame rsky =FK5;
-  SkyDist rdist =ARCMIN;
+  Coord::CoordSystem rsys =Coord::PHYSICAL;
+  Coord::SkyFrame rsky =Coord::FK5;
+  Coord::SkyDist rdist =Coord::ARCMIN;
 
   // rv,rv2
   char* rv =NULL;
@@ -298,17 +275,17 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   char* rv2 =NULL;
   char rv2def[] = "0";
   rv2 = rv2def;
-  CoordSystem rvsys =PHYSICAL;
-  SkyFrame rvsky =FK5;
-  SkyDist rvdist =ARCMIN;
+  Coord::CoordSystem rvsys =Coord::PHYSICAL;
+  Coord::SkyFrame rvsky =Coord::FK5;
+  Coord::SkyDist rvdist =Coord::ARCMIN;
 
   // ang
   char* ang =NULL;
   char angdef[] = "0";
   ang = angdef;
-  AngleFormat angformat =DEG;
-  CoordSystem angsys =PHYSICAL;
-  SkyFrame angsky =FK5;
+  Coord::AngleFormat angformat =Coord::DEG;
+  Coord::CoordSystem angsys =Coord::PHYSICAL;
+  Coord::SkyFrame angsky =Coord::FK5;
   int angsign =1;
   double angoffset =0;
 
@@ -316,9 +293,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   char* angv =NULL;
   char angvdef[] = "0";
   angv = angvdef;
-  AngleFormat angvformat =DEG;
-  CoordSystem angvsys =PHYSICAL;
-  SkyFrame angvsky =FK5;
+  Coord::AngleFormat angvformat =Coord::DEG;
+  Coord::CoordSystem angvsys =Coord::PHYSICAL;
+  Coord::SkyFrame angvsky =Coord::FK5;
   int angvsign =1;
   double angvoffset =0;
 
@@ -361,9 +338,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 	// only check x col, y col better be the same
 	x = cols[ii];
 	if (ref[ii])
-	  strToCoordSystem(ref[ii],wcsSystem_,&sys,&sky);
+	  coord.strToCoordSystem(ref[ii],wcsSystem_,&sys,&sky);
 	if (unit[ii])
-	  strToSkyFormat(unit[ii],&format);
+	  coord.strToSkyFormat(unit[ii],&format);
 	break;
       case XMLY:
 	y = cols[ii];
@@ -372,9 +349,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 	// only check x col, y col better be the same
 	xv = cols[ii];
 	if (ref[ii])
-	  strToCoordSystem(ref[ii],wcsSystem_,&vsys,&vsky);
+	  coord.strToCoordSystem(ref[ii],wcsSystem_,&vsys,&vsky);
 	if (unit[ii])
-	  strToSkyFormat(unit[ii],&vformat);
+	  coord.strToSkyFormat(unit[ii],&vformat);
 	break;
       case XMLYV:
 	yv = cols[ii];
@@ -383,9 +360,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 	// only check r col, r2 col better be the same
 	r = cols[ii];
 	if (ref[ii])
-	  strToCoordSystem(ref[ii],wcsSystem_,&rsys,&rsky);
+	  coord.strToCoordSystem(ref[ii],wcsSystem_,&rsys,&rsky);
 	if (unit[ii])
-	  strToSkyDist(unit[ii],&rdist);	  
+	  coord.strToSkyDist(unit[ii],&rdist);	  
 	break;
       case XMLR2:
 	r2 = cols[ii];
@@ -394,9 +371,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 	// only check rv col, r2 col better be the same
 	rv = cols[ii];
 	if (ref[ii])
-	  strToCoordSystem(ref[ii],wcsSystem_,&rvsys,&rvsky);
+	  coord.strToCoordSystem(ref[ii],wcsSystem_,&rvsys,&rvsky);
 	if (unit[ii])
-	  strToSkyDist(unit[ii],&rvdist);	  
+	  coord.strToSkyDist(unit[ii],&rvdist);	  
 	break;
       case XMLRV2:
 	rv2 = cols[ii];
@@ -404,30 +381,30 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
       case XMLANG:
 	ang = cols[ii];
 	if (ref[ii])
-	  strToCoordSystem(ref[ii],wcsSystem_,&angsys,&angsky);
+	  coord.strToCoordSystem(ref[ii],wcsSystem_,&angsys,&angsky);
 	if (unit[ii])
-	  strToAngleFormat(unit[ii],&angformat);	  
+	  coord.strToAngleFormat(unit[ii],&angformat);	  
 	if (dir[ii])
 	  if (STRCMP(dir[ii],"cw",2))
 	    angsign = -1;
 	if (axis[ii])
 	  if (STRCMP(dir[ii],"x",1))
-	    if (angsys == WCS) {
+	    if (angsys == Coord::WCS) {
 	      switch (angsky) {
-	      case FK4:
-	      case FK4_NO_E:
-	      case FK5:
-	      case ICRS:
+	      case Coord::FK4:
+	      case Coord::FK4_NO_E:
+	      case Coord::FK5:
+	      case Coord::ICRS:
 		angoffset = M_PI;
 	      }
 	    }
 	  else if (STRCMP(dir[ii],"-x",2))
-	    if (angsys == WCS) {
+	    if (angsys == Coord::WCS) {
 	      switch (angsky) {
-	      case FK4:
-	      case FK4_NO_E:
-	      case FK5:
-	      case ICRS:
+	      case Coord::FK4:
+	      case Coord::FK4_NO_E:
+	      case Coord::FK5:
+	      case Coord::ICRS:
 		break;
 	      default:
 		angoffset = M_PI;
@@ -441,9 +418,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
       case XMLANGV:
 	angv = cols[ii];
 	if (ref[ii])
-	  strToCoordSystem(ref[ii],wcsSystem_,&angvsys,&angvsky);
+	  coord.strToCoordSystem(ref[ii],wcsSystem_,&angvsys,&angvsky);
 	if (unit[ii])
-	  strToAngleFormat(unit[ii],&angvformat);	  
+	  coord.strToAngleFormat(unit[ii],&angvformat);	  
 	if (dir[ii])
 	  if (STRCMP(dir[ii],"cw",2))
 	    angvsign = -1;
@@ -564,8 +541,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   }
 
   FitsImage* ptr = findFits(tile);
-
+  // Basic Regions
   if (STRCMP(shape, "circle", 6)) {
+    // will also capture circle3d
     createCircleCmd(xmlPoint(ptr, x, y, sys, sky, format),
 		    ptr->mapLenToRef(atof(r), rsys, rdist), 
 		    color, dash, width, font, text, props, comment, 
@@ -574,7 +552,7 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   else if (STRCMP(shape, "ellipse", 7)) {
     createEllipseCmd(xmlPoint(ptr, x, y, sys, sky, format),
 		     ptr->mapLenToRef(Vector(atof(r),atof(r2)), 
-					      rsys, rdist),
+				      rsys, rdist),
 		     xmlAngle(ang, angsign, angoffset, angformat,
 			      sys, sky),
 		     color, dash, width, font, text, props, comment, 
@@ -583,7 +561,7 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
   else if (STRCMP(shape, "box", 3) || STRCMP(shape, "rotbox", 6)) {
     createBoxCmd(xmlPoint(ptr, x, y, sys, sky, format),
 		 ptr->mapLenToRef(Vector(atof(r),atof(r2)), 
-					  rsys, rdist),
+				  rsys, rdist),
 		 xmlAngle(ang, angsign, angoffset, angformat,
 			  sys, sky),
 		 color, dash, width, font, text, props, comment, 
@@ -600,16 +578,11 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 		 color, dash, width, font, text, props, comment, 
 		 taglist, cblist);
   }
-  else if (STRCMP(shape, "text", 4)) {
-    int rotate = 1;
-    if (!param)
-      rotate = atoi(param);
-    createTextCmd(xmlPoint(ptr, x, y, sys, sky, format),
-		  xmlAngle(ang, angsign, angoffset, angformat, 
-			   sys, sky),
-		  rotate,
-		  color, dash, width, font, text, props, comment, 
-		  taglist, cblist);
+  else if (STRCMP(shape, "polygon", 7)) {
+    List<Vertex>* list = xmlVertex(ptr, xv, yv, vsys, vsky, vformat);
+    createPolygonCmd(*list,
+		     color, dash, width, font, text, props, comment, 
+		     taglist, cblist);
   }
   else if (STRCMP(shape, "line", 4)) {
     int arrow1 =1;
@@ -636,34 +609,55 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 		  color, dash, width, font, text, props, comment, 
 		  taglist, cblist);
   }
-  else if (STRCMP(shape, "polygon", 7)) {
-    List<Vertex>* list = xmlVertex(ptr, xv, yv, vsys, vsky, vformat);
-    createPolygonCmd(*list,
-		     color, dash, width, font, text, props, comment, 
-		     taglist, cblist);
-  }
-  else if (STRCMP(shape, "projection", 10)) {
-    createProjectionCmd(xmlPoint(ptr, xv, yv, vsys, vsky, vformat, 0),
-			xmlPoint(ptr, xv, yv, vsys, vsky, vformat, 1),
-			ptr->mapLenToRef(atof(r), rsys, rdist), 
-			"ProjectionPlotCB", "ProjectionPlotDeleteCB",
-			color, dash, width, font,
-			text, props, comment, taglist, cblist);
+  else if (STRCMP(shape, "text", 4)) {
+    int rotate = 1;
+    if (!param)
+      rotate = atoi(param);
+    createTextCmd(xmlPoint(ptr, x, y, sys, sky, format),
+		  xmlAngle(ang, angsign, angoffset, angformat, 
+			   sys, sky),
+		  rotate,
+		  color, dash, width, font, text, props, comment, 
+		  taglist, cblist);
   }
-  else if (STRCMP(shape, "circle3d", 8)) {
-    createCircle3dCmd(xmlPoint(ptr, x, y, sys, sky, format),
-			ptr->mapLenToRef(atof(r), rsys, rdist), 
-			"Circle3dPlotCB", "Circle3dPlotDeleteCB",
-			color, dash, width, font,
-			text, props, comment, taglist, cblist);
+  else if (STRCMP(shape, "point", 5)) {
+    char* def = "circle";
+    Point::PointShape shape = Point::CIRCLE;
+    if (!param)
+      param = def;
+    int size = 11;
+    if (param2)
+      size = atoi(param2);
+
+    if (STRCMP(param, "circle", 6))
+      shape = Point::CIRCLE;
+    else if (STRCMP(param, "box", 3))
+      shape = Point::BOX;
+    else if (STRCMP(param, "diamond", 7))
+      shape = Point::DIAMOND;
+    else if (STRCMP(param, "cross", 5))
+      shape = Point::CROSS;
+    else if (STRCMP(param, "x", 1))
+      shape = Point::EX;
+    else if (STRCMP(param, "arrow", 5))
+      shape = Point::ARROW;
+    else if (STRCMP(param,"boxcircle",9))
+      shape = Point::BOXCIRCLE;
+
+    createPointCmd(xmlPoint(ptr, x, y, sys, sky, format),
+		   shape, size,
+		   color, dash, width, font, text, props, comment, 
+		   taglist, cblist);
   }
+
+  // Measurement Regions
   else if (STRCMP(shape, "ruler", 5)) {
-    CoordSystem rsys;
-    SkyFrame rsky;
-    strToCoordSystem(param, wcsSystem_, &rsys, &rsky);
-    CoordSystem dsys;
-    SkyDist ddist;
-    strToDistSystem(param2, wcsSystem_, &dsys, &ddist);
+    Coord::CoordSystem rsys;
+    Coord::SkyFrame rsky;
+    coord.strToCoordSystem(param, wcsSystem_, &rsys, &rsky);
+    Coord::CoordSystem dsys;
+    Coord::SkyDist ddist;
+    coord.strToDistSystem(param2, wcsSystem_, &dsys, &ddist);
     createRulerCmd(xmlPoint(ptr, xv, yv, vsys, vsky, vformat, 0),
 		   xmlPoint(ptr, xv, yv, vsys, vsky, vformat, 1),
 		   rsys, rsky, dsys, ddist,
@@ -671,9 +665,9 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 		   text, props, comment, taglist, cblist);
   }
   else if (STRCMP(shape, "compass", 7)) {
-    CoordSystem csys;
-    SkyFrame csky;
-    strToCoordSystem(param, wcsSystem_, &csys, &csky);
+    Coord::CoordSystem csys;
+    Coord::SkyFrame csky;
+    coord.strToCoordSystem(param, wcsSystem_, &csys, &csky);
     char* param2def = "N";
     if (!param2)
       param2 = param2def;
@@ -694,8 +688,16 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 		     color, dash, width, font, text, props, comment, 
 		     taglist, cblist);
   }
-  else if (STRCMP(shape, "annulus", 7)) {
+  else if (STRCMP(shape, "projection", 10)) {
+    createProjectionCmd(xmlPoint(ptr, xv, yv, vsys, vsky, vformat, 0),
+			xmlPoint(ptr, xv, yv, vsys, vsky, vformat, 1),
+			ptr->mapLenToRef(atof(r), rsys, rdist), 
+			color, dash, width, font,
+			text, props, comment, taglist, cblist);
+  }
 
+  // Annulus Regions
+  else if (STRCMP(shape, "annulus", 7)) {
     int num = xmlCount(rv);
     createAnnulusCmd(xmlPoint(ptr, x, y, sys, sky, format),
 		     num, xmlDistance(ptr, rv, num, rvsys, rvdist),
@@ -722,6 +724,8 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 			color, dash, width, font, text, props, comment, 
 			taglist, cblist);
   }
+
+  // Panda Regions
   else if (STRCMP(shape, "panda", 5) || STRCMP(shape, "pie", 3)) {
     int anum = xmlCount(angv);
     int rnum = xmlCount(rv);
@@ -756,50 +760,6 @@ void Base::xmlParseTR(char** cols, int* id, char** unit, char** ref,
 		    color, dash, width, font, text, props, comment, 
 		    taglist, cblist);
   }
-  else if (STRCMP(shape, "point", 5)) {
-    char* def = "circle";
-    if (!param)
-      param = def;
-    int size = 11;
-    if (param2)
-      size = atoi(param2);
-
-    if (STRCMP(param, "circle", 6))
-      createCirclePointCmd(xmlPoint(ptr, x, y, sys, sky, format),
-			   size,
-			   color, dash, width, font, text, props, comment, 
-			   taglist, cblist);
-    else if (STRCMP(param, "box", 3))
-      createBoxPointCmd(xmlPoint(ptr, x, y, sys, sky, format),
-			size,
-			color, dash, width, font, text, props, comment, 
-			taglist, cblist);
-    else if (STRCMP(param, "diamond", 7))
-      createDiamondPointCmd(xmlPoint(ptr, x, y, sys, sky, format),
-			    size,
-			    color, dash, width, font, text, props, comment, 
-			    taglist, cblist);
-    else if (STRCMP(param, "cross", 5))
-      createCrossPointCmd(xmlPoint(ptr, x, y, sys, sky, format),
-			  size,
-			  color, dash, width, font, text, props, comment, 
-			  taglist, cblist);
-    else if (STRCMP(param, "x", 1))
-      createExPointCmd(xmlPoint(ptr, x, y, sys, sky, format),
-		       size,
-		       color, dash, width, font, text, props, comment, 
-		       taglist, cblist);
-    else if (STRCMP(param, "arrow", 5))
-      createArrowPointCmd(xmlPoint(ptr, x, y, sys, sky, format),
-			  size,
-			  color, dash, width, font, text, props, comment, 
-			  taglist, cblist);
-    else if (STRCMP(param,"boxcircle",9))
-      createBoxCirclePointCmd(xmlPoint(ptr, x, y, sys, sky, format),
-			  size,
-			  color, dash, width, font, text, props, comment, 
-			  taglist, cblist);
-  }
 }
 
 void Base::xmlSetProps(unsigned short* props, unsigned short prop, 
@@ -827,7 +787,7 @@ int Base::xmlCount(const char* col)
 }
 
 Vector Base::xmlPoint(FitsImage* ptr, const char* xstr, const char* ystr,
-		      CoordSystem sys, SkyFrame sky, SkyFormat format,
+		      Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format,
 		      int which)
 {
   if (!xstr || !ystr)
@@ -855,34 +815,34 @@ Vector Base::xmlPoint(FitsImage* ptr, const char* xstr, const char* ystr,
 
   Vector rr;
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     rr = ptr->mapToRef(Vector(atof(x),atof(y)), sys);
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	rr =  ptr->mapToRef(Vector(atof(x),atof(y)), sys, sky);
 	break;
-      case SEXAGESIMAL: 
+      case Coord::SEXAGESIMAL: 
 	{
 	  double xx=parseSEXStr(x);
 	  double yy=parseSEXStr(y);
 
 	  switch (sky) {
-	  case FK4:
-	      case FK4_NO_E:
-	  case FK5:
-	  case ICRS:
+	  case Coord::FK4:
+	  case Coord::FK4_NO_E:
+	  case Coord::FK5:
+	  case Coord::ICRS:
 	    xx = xx/24.*360.;
 	    break;
-	  case GALACTIC:
-	  case SUPERGALACTIC:
-	  case ECLIPTIC:
-	  case HELIOECLIPTIC:
+	  case Coord::GALACTIC:
+	  case Coord::SUPERGALACTIC:
+	  case Coord::ECLIPTIC:
+	  case Coord::HELIOECLIPTIC:
 	    break;
 	  }
 	  rr = ptr->mapToRef(Vector(xx,yy), sys, sky);
@@ -905,7 +865,7 @@ Vector Base::xmlPoint(FitsImage* ptr, const char* xstr, const char* ystr,
 
 List<Vertex>* Base::xmlVertex(FitsImage* ptr, 
 			      const char* x, const char* y, 
-			      CoordSystem sys, SkyFrame sky, SkyFormat format)
+			      Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format)
 {
   List<Vertex>* list = new List<Vertex>;
 
@@ -920,7 +880,7 @@ List<Vertex>* Base::xmlVertex(FitsImage* ptr,
 }
 
 double* Base::xmlDistance(FitsImage* ptr, const char* r, int cnt, 
-			  CoordSystem sys, SkyDist dist)
+			  Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   double* rr = new double[cnt];
 
@@ -940,7 +900,7 @@ double* Base::xmlDistance(FitsImage* ptr, const char* r, int cnt,
 }
 
 Vector* Base::xmlDistance(FitsImage* ptr, const char* r, const char* r2,
-			  int cnt, CoordSystem sys, SkyDist dist)
+			  int cnt, Coord::CoordSystem sys, Coord::SkyDist dist)
 {
   Vector* vv = new Vector[cnt];
 
@@ -973,18 +933,18 @@ Vector* Base::xmlDistance(FitsImage* ptr, const char* r, const char* r2,
 }
 
 double Base::xmlAngle(const char* angle, int sign, double offset, 
-		      AngleFormat format, CoordSystem sys, SkyFrame sky)
+		      Coord::AngleFormat format, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   switch (format) {
-  case DEG:
+  case Coord::DEG:
     return mapAngleToRef(sign*degToRad(atof(angle))+offset, sys, sky);
-  case RAD:
+  case Coord::RAD:
     return mapAngleToRef(sign*atof(angle)+offset, sys, sky);
   }
 }
 
 double* Base::xmlAngles(const char* angle, int sign, double offset, int cnt,
-			AngleFormat format, CoordSystem sys, SkyFrame sky)
+			Coord::AngleFormat format, Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   double* ang = new double[cnt];
 
@@ -993,10 +953,10 @@ double* Base::xmlAngles(const char* angle, int sign, double offset, int cnt,
   for (int ii=0; ii<cnt; ii++) {
     if (tok)
       switch (format) {
-      case DEG:
+      case Coord::DEG:
 	ang[ii] = mapAngleToRef(sign*degToRad(atof(tok))+offset, sys, sky);
 	break;
-      case RAD:
+      case Coord::RAD:
 	ang[ii] = mapAngleToRef(sign*atof(tok)+offset, sys, sky);
 	break;
       }
@@ -1007,8 +967,8 @@ double* Base::xmlAngles(const char* angle, int sign, double offset, int cnt,
   return ang;
 }
 
-void Base::markerListXMLHeader(ostream& str, CoordSystem sys, 
-			       SkyFrame sky, SkyFormat format)
+void Base::markerListXMLHeader(ostream& str, Coord::CoordSystem sys, 
+			       Coord::SkyFrame sky, Coord::SkyFormat format)
 {
   str << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl
       << "<VOTABLE version=\"1.1\">" << endl
@@ -1023,20 +983,20 @@ void Base::markerListXMLHeader(ostream& str, CoordSystem sys,
   str << "<FIELD ID=\"shape\" name=\"shape\" datatype=\"char\" arraysize=\"*\"/>" << endl;
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
-    str << "<FIELD ID=\"x\" name=\"x\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"y\" name=\"y\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"r\" name=\"r\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"r2\" name=\"r2\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"rv\" name=\"rv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"rv2\" name=\"rv2\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-    str << "<FIELD ID=\"ang\" name=\"ang\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << coordSystemStr_[sys] << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
-    str << "<FIELD ID=\"angv\" name=\"angv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << coordSystemStr_[sys] << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    str << "<FIELD ID=\"x\" name=\"x\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"y\" name=\"y\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"r\" name=\"r\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"r2\" name=\"r2\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"rv\" name=\"rv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"rv2\" name=\"rv2\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+    str << "<FIELD ID=\"ang\" name=\"ang\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << coord.coordSystemStr(sys) << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
+    str << "<FIELD ID=\"angv\" name=\"angv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << coord.coordSystemStr(sys) << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
     break;
 
   default:
@@ -1046,58 +1006,58 @@ void Base::markerListXMLHeader(ostream& str, CoordSystem sys,
 	char* xucd=NULL;
 	char* yucd=NULL;
 	switch (sky) {
-	case FK4:
-	case FK4_NO_E:
-	case FK5:
-	case ICRS:
+	case Coord::FK4:
+	case Coord::FK4_NO_E:
+	case Coord::FK5:
+	case Coord::ICRS:
 	  xucd = dupstr("pos.eq.ra;meta.main");
 	  yucd = dupstr("pos.eq.dec;meta.main");
 	  break;
-	case GALACTIC:
-	case SUPERGALACTIC:
+	case Coord::GALACTIC:
+	case Coord::SUPERGALACTIC:
 	  xucd = dupstr("pos.galactic.lon;meta.main");
 	  yucd = dupstr("pos.galactic.lat;meta.main");
 	  break;
-	case ECLIPTIC:
-	case HELIOECLIPTIC:
+	case Coord::ECLIPTIC:
+	case Coord::HELIOECLIPTIC:
 	  xucd = dupstr("pos.ecliptic.lon;meta.main");
 	  yucd = dupstr("pos.ecliptic.lat;meta.main");
 	  break;
 	}
 
 	switch (format) {
-	case DEGREES:
-	  str << "<FIELD ID=\"x\" name=\"x\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << skyFrameStr_[sky] << "\" ucd=\"" << xucd << "\"/>" << endl;
-	  str << "<FIELD ID=\"y\" name=\"y\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << skyFrameStr_[sky] << "\" ucd=\"" << yucd << "\"/>" << endl;
-	  str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
-	  str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
+	case Coord::DEGREES:
+	  str << "<FIELD ID=\"x\" name=\"x\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << coord.skyFrameStr(sky) << "\" ucd=\"" << xucd << "\"/>" << endl;
+	  str << "<FIELD ID=\"y\" name=\"y\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << coord.skyFrameStr(sky) << "\" ucd=\"" << yucd << "\"/>" << endl;
+	  str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
+	  str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
 	  break;
-	case SEXAGESIMAL:
-	  str << "<FIELD ID=\"x\" name=\"x\" datatype=\"char\" arraysize=\"*\" unit=\""h:m:s"\" ref=\"" << skyFrameStr_[sky] << "\" ucd=\"" << xucd << "\"/>" << endl;
-	  str << "<FIELD ID=\"y\" name=\"y\" datatype=\"char\" arraysize=\"*\" unit=\""d:m:s"\" ref=\"" << skyFrameStr_[sky] << "\" ucd=\"" << yucd << "\"/>" << endl;
-	  str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"char\" arraysize=\"*\" unit=\""h:m:s"\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
-	  str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"char\" arraysize=\"*\" unit=\""d:m:s"\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
+	case Coord::SEXAGESIMAL:
+	  str << "<FIELD ID=\"x\" name=\"x\" datatype=\"char\" arraysize=\"*\" unit=\""h:m:s"\" ref=\"" << coord.skyFrameStr(sky) << "\" ucd=\"" << xucd << "\"/>" << endl;
+	  str << "<FIELD ID=\"y\" name=\"y\" datatype=\"char\" arraysize=\"*\" unit=\""d:m:s"\" ref=\"" << coord.skyFrameStr(sky) << "\" ucd=\"" << yucd << "\"/>" << endl;
+	  str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"char\" arraysize=\"*\" unit=\""h:m:s"\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
+	  str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"char\" arraysize=\"*\" unit=\""d:m:s"\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
 	  break;
 	}
 
-	str << "<FIELD ID=\"r\" name=\"r\" datatype=\"float\" precision=\"8\" unit=\"arcsec\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
-	str << "<FIELD ID=\"r2\" name=\"r2\" datatype=\"float\" precision=\"8\" unit=\"arcsec\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
-	str << "<FIELD ID=\"rv\" name=\"rv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"arcsec\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
-	str << "<FIELD ID=\"rv2\" name=\"rv2\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"arcsec\" ref=\"" << skyFrameStr_[sky] << "\"/>" << endl;
-	str << "<FIELD ID=\"ang\" name=\"ang\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << skyFrameStr_[sky] << "\" axis=\"-x\" dir=\"ccw\"/>" << endl;
-	str << "<FIELD ID=\"angv\" name=\"angv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << skyFrameStr_[sky] << "\" axis=\"-x\" dir=\"ccw\"/>" << endl;
+	str << "<FIELD ID=\"r\" name=\"r\" datatype=\"float\" precision=\"8\" unit=\"arcsec\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
+	str << "<FIELD ID=\"r2\" name=\"r2\" datatype=\"float\" precision=\"8\" unit=\"arcsec\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
+	str << "<FIELD ID=\"rv\" name=\"rv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"arcsec\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
+	str << "<FIELD ID=\"rv2\" name=\"rv2\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"arcsec\" ref=\"" << coord.skyFrameStr(sky) << "\"/>" << endl;
+	str << "<FIELD ID=\"ang\" name=\"ang\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << coord.skyFrameStr(sky) << "\" axis=\"-x\" dir=\"ccw\"/>" << endl;
+	str << "<FIELD ID=\"angv\" name=\"angv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << coord.skyFrameStr(sky) << "\" axis=\"-x\" dir=\"ccw\"/>" << endl;
       }
       else {
-	str << "<FIELD ID=\"x\" name=\"x\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"y\" name=\"y\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"r\" name=\"r\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"r2\" name=\"r2\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"rv\" name=\"rv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"rv2\" name=\"rv2\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coordSystemStr_[sys] << "\"/>" << endl;
-	str << "<FIELD ID=\"ang\" name=\"ang\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << coordSystemStr_[sys] << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
-	str << "<FIELD ID=\"angv\" name=\"angv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << coordSystemStr_[sys] << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
+	str << "<FIELD ID=\"x\" name=\"x\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"y\" name=\"y\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"xv\" name=\"xv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"yv\" name=\"yv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"r\" name=\"r\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"r2\" name=\"r2\" datatype=\"float\" precision=\"8\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"rv\" name=\"rv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"rv2\" name=\"rv2\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"pix\" ref=\"" << coord.coordSystemStr(sys) << "\"/>" << endl;
+	str << "<FIELD ID=\"ang\" name=\"ang\" datatype=\"float\" precision=\"8\" unit=\"deg\" ref=\"" << coord.coordSystemStr(sys) << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
+	str << "<FIELD ID=\"angv\" name=\"angv\" datatype=\"float\" precision=\"8\" arraysize=\"*\" unit=\"deg\" ref=\"" << coord.coordSystemStr(sys) << "\" axis=\"x\" dir=\"ccw\"/>" << endl;
       }
     }
   }
diff --git a/saotk/frame/frsave.C b/saotk/frame/frsave.C
index 36c13d6..6ee2f94 100644
--- a/saotk/frame/frsave.C
+++ b/saotk/frame/frsave.C
@@ -181,8 +181,8 @@ void FrameBase::saveFitsResampleKeyword(OutFitsStream& str, FitsHead& dst)
   }
 
   // WCS
-  if (currentContext->cfits->hasWCS(WCS)) {
-    WorldCoor* wcs = currentContext->cfits->getWCS(WCS);
+  if (currentContext->cfits->hasWCS(Coord::WCS)) {
+    WorldCoor* wcs = currentContext->cfits->getWCS(Coord::WCS);
 
     // abort if this is a DSS, ZPN, TNX
     if (!strncmp(wcs->ptype,"DSS",3) ||
@@ -253,7 +253,7 @@ void FrameBase::saveFitsResampleFits(OutFitsStream& str)
   int mosaic = isMosaic();
 
   // variable
-  double* mm = sptr->matrixToData(WIDGET).mm();
+  double* mm = sptr->matrixToData(Coord::WIDGET).mm();
   FitsBound* params = sptr->getDataParams(currentContext->frScale.scanMode());
   int srcw = sptr->width();
 
@@ -266,7 +266,7 @@ void FrameBase::saveFitsResampleFits(OutFitsStream& str)
       if (mosaic) {
 	sptr = currentContext->cfits;
 
-	mm = sptr->matrixToData(WIDGET).mm();
+	mm = sptr->matrixToData(Coord::WIDGET).mm();
 	params = sptr->getDataParams(currentContext->frScale.scanMode());
 	srcw = sptr->width();
       }
@@ -289,7 +289,7 @@ void FrameBase::saveFitsResampleFits(OutFitsStream& str)
 	    sptr = sptr->nextMosaic();
 
 	    if (sptr) {
-	      mm = sptr->matrixToData(WIDGET).mm();
+	      mm = sptr->matrixToData(Coord::WIDGET).mm();
 	      params = sptr->getDataParams(currentContext->frScale.scanMode());
 	      srcw = sptr->width();
 	    }
diff --git a/saotk/frame/frscale.C b/saotk/frame/frscale.C
index 4a680aa..679e07f 100644
--- a/saotk/frame/frscale.C
+++ b/saotk/frame/frscale.C
@@ -30,10 +30,8 @@ FrScale::FrScale()
   histequSize_ = 0;
 
   histogramX_ = NULL;
-  histogramXSize_ = 0;
-
   histogramY_ = NULL;
-  histogramYSize_ = 0;
+  histogramSize_ = 0;
 
   datasec_ = 1;
 }
@@ -80,20 +78,18 @@ FrScale::FrScale(const FrScale& a)
   histequSize_ = a.histequSize_;
 
   if (a.histogramX_) {
-    histogramX_ = (double*)calloc(a.histogramXSize_, sizeof(double));
-    memcpy(histogramX_,a.histogramX_,a.histogramXSize_*sizeof(double));
+    histogramX_ = (double*)calloc(a.histogramSize_, sizeof(double));
+    memcpy(histogramX_,a.histogramX_,a.histogramSize_*sizeof(double));
   }
   else
     histogramX_ = NULL;
-  histogramXSize_ = a.histogramXSize_;
-
   if (a.histogramY_) {
-    histogramY_ = (double*)calloc(a.histogramYSize_, sizeof(double));
-    memcpy(histogramY_,a.histogramY_,a.histogramYSize_*sizeof(double));
+    histogramY_ = (double*)calloc(a.histogramSize_, sizeof(double));
+    memcpy(histogramY_,a.histogramY_,a.histogramSize_*sizeof(double));
   }
   else
     histogramY_ = NULL;
-  histogramYSize_ = a.histogramYSize_;
+  histogramSize_ = a.histogramSize_;
 }
 
 FrScale& FrScale::operator=(const FrScale& a)
@@ -130,22 +126,19 @@ FrScale& FrScale::operator=(const FrScale& a)
   if (histogramX_)
     free(histogramX_);
   histogramX_ = NULL;
-
   if (a.histogramX_) {
-    histogramX_ = (double*)calloc(a.histogramXSize_, sizeof(double));
-    memcpy(histogramX_,a.histogramX_,a.histogramXSize_*sizeof(double));
+    histogramX_ = (double*)calloc(a.histogramSize_, sizeof(double));
+    memcpy(histogramX_,a.histogramX_,a.histogramSize_*sizeof(double));
   }
-  histogramXSize_ = a.histogramXSize_;
 
   if (histogramY_)
     free(histogramY_);
   histogramY_ = NULL;
-
   if (a.histogramY_) {
-    histogramY_ = (double*)calloc(a.histogramYSize_, sizeof(double));
-    memcpy(histogramY_,a.histogramY_,a.histogramYSize_*sizeof(double));
+    histogramY_ = (double*)calloc(a.histogramSize_, sizeof(double));
+    memcpy(histogramY_,a.histogramY_,a.histogramSize_*sizeof(double));
   }
-  histogramYSize_ = a.histogramYSize_;
+  histogramSize_ = a.histogramSize_;
 }
 
 double* FrScale::histequ(FitsImage* fits)
@@ -179,8 +172,8 @@ double* FrScale::histequ(FitsImage* fits)
   double total, average;
   {
     total = 0;
-    for (int i=0; i<HISTEQUSIZE; i++)
-      total += pdf[i];
+    for (int ii=0; ii<HISTEQUSIZE; ii++)
+      total += pdf[ii];
     average = total/HISTEQUSIZE;
   }
 
@@ -226,18 +219,15 @@ void FrScale::histogram(FitsImage* fits, int num)
     if (histogramX_) 
       free(histogramX_); 
     histogramX_ = (double*)calloc(num, sizeof(double));
-    histogramXSize_ = num;
-
     if (histogramY_) 
       free(histogramY_); 
     histogramY_ = (double*)calloc(num, sizeof(double));
-    histogramYSize_ = num;
+    histogramSize_ = num;
 
-    for (int i=0; i<num; i++)
-      histogramX_[i] = (double)i/(num-1)*(max_-min_) + min_;
+    for (int ii=0; ii<num; ii++)
+      histogramX_[ii] = (double)ii/(num-1)*(max_-min_) + min_;
     
-    for (int j=0; j<num; j++)
-      histogramY_[j] = 0;
+    memset(histogramY_,0,sizeof(double)*num);
 
     if (max_ > min_) {
       FitsImage* ptr = fits;
@@ -258,11 +248,11 @@ void FrScale::clearHistogram()
   if (histogramX_) 
     free(histogramX_); 
   histogramX_ = NULL;
-  histogramXSize_ = 0;
 
   if (histogramY_) 
     free(histogramY_); 
   histogramY_ = NULL;
-  histogramYSize_ = 0;
+
+  histogramSize_ = 0;
 }
 
diff --git a/saotk/frame/frscale.h b/saotk/frame/frscale.h
index b9eb6cd..7e8ce1f 100644
--- a/saotk/frame/frscale.h
+++ b/saotk/frame/frscale.h
@@ -44,10 +44,10 @@ class FrScale {
 
   double* histequ_;           // image histogram equalization xfer function
   int histequSize_;
+
   double* histogramX_;        // scale histogram
-  int histogramXSize_;
   double* histogramY_;        // scale histogram
-  int histogramYSize_;
+  int histogramSize_;
 
   int datasec_;
 
diff --git a/saotk/frame/grid.C b/saotk/frame/grid.C
index 5e5f048..e17579b 100644
--- a/saotk/frame/grid.C
+++ b/saotk/frame/grid.C
@@ -4,14 +4,13 @@
 
 #include "grid.h"
 #include "context.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 extern "C" {
   #include "ast.h"
 }
 
-Grid::Grid(CoordSystem sys, SkyFrame sky, SkyFormat format, GridType type) 
+Grid::Grid(Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, GridType type) 
    :  system_(sys), sky_(sky), skyFormat_(format), type_(type)
 {
 }
diff --git a/saotk/frame/grid.h b/saotk/frame/grid.h
index 56daf63..84d6016 100644
--- a/saotk/frame/grid.h
+++ b/saotk/frame/grid.h
@@ -15,12 +15,12 @@ class Grid {
 
  protected:
   GridType type_;
-  CoordSystem system_;
-  SkyFrame sky_;
-  SkyFormat skyFormat_;
+  Coord::CoordSystem system_;
+  Coord::SkyFrame sky_;
+  Coord::SkyFormat skyFormat_;
 
  public:
-  Grid(CoordSystem, SkyFrame, SkyFormat, GridType);
+  Grid(Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, GridType);
   ~Grid();
 
   virtual const char* option() =0;
@@ -34,9 +34,9 @@ class Grid {
 #endif
 
   GridType type() {return type_;}
-  CoordSystem system() {return system_;}
-  SkyFrame sky() {return sky_;}
-  SkyFormat skyFormat() {return skyFormat_;}
+  Coord::CoordSystem system() {return system_;}
+  Coord::SkyFrame sky() {return sky_;}
+  Coord::SkyFormat skyFormat() {return skyFormat_;}
 };
 
 #endif
diff --git a/saotk/frame/grid25d.C b/saotk/frame/grid25d.C
index e8a4a50..d625f2f 100644
--- a/saotk/frame/grid25d.C
+++ b/saotk/frame/grid25d.C
@@ -13,7 +13,7 @@ extern "C" {
 
 extern Grid25dBase* astGrid25dPtr;
 
-Grid25d::Grid25d(Widget* p, CoordSystem sys, SkyFrame sky, SkyFormat format, 
+Grid25d::Grid25d(Widget* p, Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, 
 	       GridType t, const char* o) 
   : Grid(sys, sky, format, t), Grid25dBase(p,o)
 {}
@@ -43,16 +43,16 @@ int Grid25d::doit(RenderMode rm)
   FitsBound* params = fits->getDataParams(context->frScale.scanMode());
 
   switch (system_) {
-  case IMAGE:
+  case Coord::IMAGE:
     frameSet = (AstFrameSet*)matrixMap(fits->refToImage,"Domain=IMAGE");
     break;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     frameSet = (AstFrameSet*)matrixMap(fits->refToPhysical,"Domain=PHYSICAL");
     break;
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     frameSet = (AstFrameSet*)matrixMap(fits->refToAmplifier,"Domain=AMPLIFIER");
     break;
-  case DETECTOR:
+  case Coord::DETECTOR:
     frameSet = (AstFrameSet*)matrixMap(fits->refToDetector,"Domain=DETECTOR");
   default:
     {
@@ -93,13 +93,6 @@ int Grid25d::doit(RenderMode rm)
 
   astSet(frameSet,"Title=%s", " ");
 
-  if (DebugAST) {
-    int status = astStatus;
-    astClearStatus;
-    astShow(frameSet);
-    astSetStatus(status);
-  }
-
   // create astPlot
   float gbox[4];
   double pbox[4];
diff --git a/saotk/frame/grid25d.h b/saotk/frame/grid25d.h
index 6eb5c06..b5635ac 100644
--- a/saotk/frame/grid25d.h
+++ b/saotk/frame/grid25d.h
@@ -17,7 +17,7 @@ class Grid25d : public Grid, public Grid25dBase {
   int doit(RenderMode);
 
  public:
-  Grid25d(Widget*, CoordSystem, SkyFrame, SkyFormat, GridType, const char*);
+  Grid25d(Widget*, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, GridType, const char*);
 
   const char* option() {return Grid25dBase::option();}
   void render() {doit(X11);}
diff --git a/saotk/frame/grid2d.C b/saotk/frame/grid2d.C
index 5096d50..d8f95db 100644
--- a/saotk/frame/grid2d.C
+++ b/saotk/frame/grid2d.C
@@ -13,7 +13,7 @@ extern "C" {
 
 extern Grid2dBase* astGrid2dPtr;
 
-Grid2d::Grid2d(Widget* p, CoordSystem sys, SkyFrame sky, SkyFormat format, 
+Grid2d::Grid2d(Widget* p, Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, 
 	   GridType t, const char* o) 
   : Grid(sys, sky, format, t), Grid2dBase(p,o)
 {}
@@ -51,15 +51,15 @@ int Grid2d::doit(RenderMode rm)
   matrixMap(frameSet,fits->widgetToImage,"Domain=IMAGE");
 
   switch (system_) {
-  case IMAGE:
+  case Coord::IMAGE:
     break;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     matrixMap(frameSet,fits->imageToPhysical,"Domain=PHYSICAL");
     break;
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     matrixMap(frameSet,fits->imageToAmplifier,"Domain=AMPLIFIER");
     break;
-  case DETECTOR:
+  case Coord::DETECTOR:
     matrixMap(frameSet,fits->imageToDetector,"Domain=DETECTOR");
     break;
   default:
@@ -81,13 +81,6 @@ int Grid2d::doit(RenderMode rm)
 
   astSet(frameSet,"Title=%s", " ");
 
-  if (DebugAST) {
-    int status = astStatus;
-    astClearStatus;
-    astShow(frameSet);
-    astSetStatus(status);
-  }
-
   // create astPlot
   float gbox[4];
   double pbox[4];
diff --git a/saotk/frame/grid2d.h b/saotk/frame/grid2d.h
index aed6236..f137749 100644
--- a/saotk/frame/grid2d.h
+++ b/saotk/frame/grid2d.h
@@ -17,7 +17,7 @@ class Grid2d : public Grid, public Grid2dBase {
   int doit(RenderMode);
 
  public:
-  Grid2d(Widget*, CoordSystem, SkyFrame, SkyFormat, GridType, const char*);
+  Grid2d(Widget*, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, GridType, const char*);
 
   const char* option() {return Grid2dBase::option();}
   void render() {doit(X11);}
diff --git a/saotk/frame/grid3d.C b/saotk/frame/grid3d.C
index 49f8c91..a193ce6 100644
--- a/saotk/frame/grid3d.C
+++ b/saotk/frame/grid3d.C
@@ -13,9 +13,7 @@ extern "C" {
 
 extern Grid3dBase* astGrid3dPtr;
 
-Grid3d::Grid3d(Widget* p, CoordSystem sys, SkyFrame sky, SkyFormat format, 
-	       GridType t, const char* o) 
-  : Grid(sys, sky, format, t), Grid3dBase(p,o)
+Grid3d::Grid3d(Widget* p, Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format, GridType t, const char* o) : Grid(sys, sky, format, t), Grid3dBase(p,o)
 {}
 
 int Grid3d::doit(RenderMode rm)
@@ -46,16 +44,16 @@ int Grid3d::doit(RenderMode rm)
   FitsBound* params = fits->getDataParams(context->frScale.scanMode());
 
   switch (system_) {
-  case IMAGE:
+  case Coord::IMAGE:
     frameSet = (AstFrameSet*)matrixMap(fits->refToImage,"Domain=IMAGE");
     break;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     frameSet = (AstFrameSet*)matrixMap(fits->refToPhysical,"Domain=PHYSICAL");
     break;
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     frameSet = (AstFrameSet*)matrixMap(fits->refToAmplifier,"Domain=AMPLIFIER");
     break;
-  case DETECTOR:
+  case Coord::DETECTOR:
     frameSet = (AstFrameSet*)matrixMap(fits->refToDetector,"Domain=DETECTOR");
     break;
   default:
@@ -69,7 +67,6 @@ int Grid3d::doit(RenderMode rm)
       AstFrameSet* wcs = (AstFrameSet*)astCopy(fits->getAST(system_));
       if (astIsASkyFrame(astGetFrame(wcs, AST__CURRENT)))
       	fits->setAstSkyFrame(wcs, sky_);
-      // astShow(wcs);
 
       // Record the index of the current Frame
       int isky = astGetI(wcs, "Current");
@@ -117,13 +114,6 @@ int Grid3d::doit(RenderMode rm)
 
   astSet(frameSet,"Title=%s", " ");
 
-  if (DebugAST) {
-    int status = astStatus;
-    astClearStatus;
-    astShow(frameSet);
-    astSetStatus(status);
-  }
-
   // create astPlot
   float gbox[6];
   double pbox[6];
diff --git a/saotk/frame/grid3d.h b/saotk/frame/grid3d.h
index 9499ada..21c735d 100644
--- a/saotk/frame/grid3d.h
+++ b/saotk/frame/grid3d.h
@@ -17,7 +17,7 @@ class Grid3d : public Grid, public Grid3dBase {
   int doit(RenderMode);
 
  public:
-  Grid3d(Widget*, CoordSystem, SkyFrame, SkyFormat, GridType, const char*);
+  Grid3d(Widget*, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, GridType, const char*);
 
   const char* option() {return Grid3dBase::option();}
   void render() {doit(X11);}
diff --git a/saotk/frame/lex.C b/saotk/frame/lex.C
index f5c4948..d161319 100644
--- a/saotk/frame/lex.C
+++ b/saotk/frame/lex.C
@@ -323,8 +323,8 @@ int yyFlexLexer::yywrap() { return 1; }
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 335
-#define YY_END_OF_BUFFER 336
+#define YY_NUM_RULES 342
+#define YY_END_OF_BUFFER 343
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -332,141 +332,143 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[1206] =
+static yyconst flex_int16_t yy_accept[1223] =
     {   0,
-        0,    0,  336,  334,  333,  335,  334,  334,  334,  334,
-      334,  315,  315,  315,  334,  334,  334,  334,  334,  334,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
-      333,  332,    0,  332,  329,    0,  332,  330,  332,  315,
-      317,  316,  315,  332,  319,  332,  332,  332,  255,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,   27,  332,  332,  332,  332,  332,   38,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  121,  332,  332,  332,  332,  332,  135,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  180,  332,  332,
-      332,  186,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  259,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  310,  332,  332,  332,
-      332,    0,  332,  331,  329,  330,  317,  316,  321,  320,
-
-      332,  319,  332,  332,  332,  316,  332,  318,  332,    2,
-      332,    6,    7,  332,  332,  332,  332,  332,  332,  332,
-      332,   18,  332,   20,  332,  332,  332,  332,  332,  332,
-      332,   29,  332,  332,   32,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,   73,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,   87,
-       88,  332,  332,  332,   93,  332,  332,  332,   97,  332,
-      332,  332,  102,  332,  106,  108,  332,  332,  332,  332,
-      332,  332,  116,  332,  332,  332,  332,  123,  332,  332,
-
-      332,  332,  332,  332,  332,  332,  136,  332,  332,  332,
-      332,  332,  332,  332,  146,  332,  332,  332,  332,  332,
-      332,  332,  332,  157,  158,  332,  332,  161,  332,  332,
-      332,  332,  332,  168,  332,  332,  332,  332,  332,  332,
-      176,  332,  178,  332,  332,  182,  332,  332,  185,  332,
-      332,  332,  190,  332,  332,  332,  332,  332,  332,  332,
-      332,  202,  332,  332,  332,  332,  332,  332,  332,  332,
-      215,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  229,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  247,
-
-      332,  332,  332,  251,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      271,  332,  332,  332,  332,  278,  332,  332,  332,  309,
-      311,  332,  332,  332,  331,  322,  332,  317,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,   19,  332,  332,   23,   24,   25,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,   46,  332,  332,   50,   74,  332,
-       56,  332,  332,  332,  332,   64,  332,  332,  332,   66,
-      332,   71,  332,   75,   77,  332,  332,  332,  332,  332,
-
-      332,  332,  332,   92,  332,  332,  332,  332,  332,  332,
-      100,  332,  103,  332,  332,  109,  110,  332,  112,  332,
-      332,  332,  332,  332,  119,  120,  332,  124,  332,  332,
-      128,  129,  332,  332,  134,  332,  332,  139,  140,  332,
-      143,  332,  332,  332,  332,  332,  332,  152,  154,  332,
-      155,  332,  332,  332,  162,  164,  332,  332,  332,  169,
-      171,  332,  332,  174,  175,  332,  179,  181,  332,  332,
-      187,  332,  332,  332,  332,  332,  332,  195,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  207,  332,  332,
-      332,  332,  332,  332,  332,  216,  332,  332,  332,  332,
-
-      332,  222,  332,  224,  332,  332,  332,  332,  332,  332,
-      332,  332,  234,  235,  236,  332,  332,  332,  332,  332,
-      243,  332,  332,  332,  332,  332,  332,  332,  253,  332,
-      332,  332,  332,  332,  262,  263,  264,  332,  332,  332,
-      332,  269,  332,  332,  332,  332,  272,  277,  305,  279,
-      280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
-      290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
-      300,  301,  302,  303,  304,  332,  332,  332,  312,  314,
-      332,  332,  323,  332,  332,  332,  332,    1,    5,    3,
-      332,  332,   10,  332,  332,  332,  332,   15,   16,   17,
-
-      332,   22,   26,  332,  332,   31,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,   49,
-       51,  332,  332,  332,  332,  332,  332,  332,   65,  332,
-      332,   67,  332,  332,  332,  332,   80,  332,  332,  332,
-       84,  332,  332,  332,  332,  332,  332,   96,  332,   99,
-      332,  104,  105,  332,  111,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  137,  332,
-      332,  332,  332,  145,  332,  148,  332,  150,  332,  332,
-      156,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      177,  332,  332,  332,  332,  191,  332,  332,  194,  332,
-
-      197,  198,  332,  332,  332,  203,  332,  332,  332,  332,
-      332,  332,  332,  213,  332,  332,  218,  332,  332,  332,
-      223,  332,  226,  332,  332,  332,  332,  232,  233,  237,
-      238,  332,  332,  332,  332,  332,  332,  332,  332,  250,
-      332,  257,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  270,  332,  332,  332,  332,  306,  307,  308,  332,
-      324,  323,  332,  332,  327,  332,  332,  325,  332,  332,
-      332,  332,   12,   13,   14,  332,  332,   30,  332,   34,
-      332,   36,   37,  332,   40,  332,  332,   43,  332,  332,
-       47,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-
-      332,   68,   69,  332,   72,  332,  332,  332,  332,  332,
-       83,  332,  332,  332,  332,   94,  332,   98,  101,  332,
-      332,  332,  332,  117,  332,  122,  125,  126,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  149,  153,
-      332,  159,  332,  163,  332,  166,  167,  332,  172,  173,
-      183,  184,  188,  189,  192,  193,  332,  332,  332,  332,
-      332,  332,  332,  332,  209,  210,  332,  332,  332,  217,
-      219,  332,  221,  332,  332,  228,  332,  231,  239,  240,
-      242,  332,  332,  246,  332,  249,  332,  332,  332,  260,
-      261,  332,  332,  265,  332,  268,  273,  332,  275,  332,
-
-      313,  328,  326,    4,  332,  332,   11,   21,  332,  332,
-      332,  332,   41,  332,  332,   45,  332,  332,  332,  332,
-      332,   57,   58,  332,  332,   61,  332,  332,  332,  332,
-       78,   79,   82,   81,  332,   86,  332,   90,  332,  332,
-      332,  332,  332,  332,  332,  332,  131,  332,  332,  138,
-      141,  144,  332,  147,  332,  332,  165,  332,  332,  199,
-      200,  332,  332,  332,  332,  332,  211,  332,  332,  332,
-      332,  227,  332,  332,  244,  245,  332,  332,  254,  332,
-      332,  332,  332,  274,  332,  332,    9,  332,  332,  332,
-       39,  332,   44,   48,   52,   53,  332,  332,  332,   60,
-
-       62,  332,  332,   76,   85,   89,  332,  332,  107,  113,
-      114,  115,  118,  332,  130,  332,  332,  332,  332,  332,
-      170,  196,  332,  204,  332,  206,  332,  212,  332,  220,
-      332,  332,  241,  332,  252,  332,  332,  332,  267,  276,
-        8,   28,  332,   35,  332,  332,  332,   59,  332,   70,
-      332,  332,  332,  132,  332,  142,  332,  160,  332,  332,
-      332,  332,  332,  332,  332,  256,  332,  332,   33,   42,
-       54,   55,  332,  332,   95,  332,  133,  332,  201,  205,
-      332,  214,  225,  332,  332,  332,  266,   63,  332,  332,
-      332,  208,  230,  332,  332,  332,  332,  151,  332,  258,
-
-      332,  127,  248,   91,    0
+        0,    0,  343,  341,  340,  342,  341,  341,  341,  341,
+      341,  322,  322,  322,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      340,  339,    0,  339,  336,    0,  339,  337,  339,  322,
+      324,  323,  322,  339,  326,  339,  339,  339,  262,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,   27,  339,  339,  339,  339,  339,   39,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  122,  339,  339,  339,  339,  339,  136,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  181,  339,  339,
+      339,  187,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  266,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  317,  339,  339,
+      339,  339,    0,  339,  338,  336,  337,  324,  323,  328,
+
+      327,  339,  326,  339,  339,  339,  323,  339,  325,  339,
+        2,  339,    6,    7,  339,  339,  339,  339,  339,  339,
+      339,  339,   18,  339,   20,  339,  339,  339,  339,  339,
+      339,  339,   29,  339,  339,   31,   33,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,   74,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,   88,   89,  339,  339,  339,   94,  339,  339,  339,
+       98,  339,  339,  339,  103,  339,  107,  109,  339,  339,
+      339,  339,  339,  339,  117,  339,  339,  339,  339,  124,
+
+      339,  339,  339,  339,  339,  339,  339,  339,  137,  339,
+      339,  339,  339,  339,  339,  339,  147,  339,  339,  339,
+      339,  339,  339,  339,  339,  158,  159,  339,  339,  162,
+      339,  339,  339,  339,  339,  169,  339,  339,  339,  339,
+      339,  339,  177,  339,  179,  339,  339,  183,  339,  339,
+      186,  339,  339,  339,  191,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  207,  339,  339,  339,  339,
+      339,  339,  339,  339,  220,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  234,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+
+      339,  339,  339,  254,  339,  339,  339,  258,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  278,  339,  339,  339,  339,  285,
+      339,  339,  339,  316,  318,  339,  339,  339,  338,  329,
+      339,  324,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,   19,  339,
+      339,   23,   24,   25,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,   47,  339,
+      339,   50,   75,  339,   56,  339,  339,  339,  339,  339,
+       65,  339,  339,  339,   67,  339,   72,  339,   76,   78,
+
+      339,  339,  339,  339,  339,  339,  339,  339,   93,  339,
+      339,  339,  339,  339,  339,  101,  339,  104,  339,  339,
+      110,  111,  339,  113,  339,  339,  339,  339,  339,  120,
+      121,  339,  125,  339,  339,  129,  130,  339,  339,  135,
+      339,  339,  140,  141,  339,  144,  339,  339,  339,  339,
+      339,  339,  153,  155,  339,  156,  339,  339,  339,  163,
+      165,  339,  339,  339,  170,  172,  339,  339,  175,  176,
+      339,  180,  182,  339,  339,  188,  339,  339,  339,  339,
+      339,  339,  339,  197,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  212,  339,  339,  339,  339,
+
+      339,  339,  339,  221,  339,  339,  339,  339,  339,  227,
+      339,  229,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  240,  241,  242,  339,  339,  339,  339,  339,  249,
+      339,  339,  339,  339,  339,  339,  339,  260,  339,  339,
+      339,  339,  339,  269,  270,  271,  339,  339,  339,  339,
+      276,  339,  339,  339,  339,  279,  284,  312,  286,  287,
+      288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
+      298,  299,  300,  301,  302,  303,  304,  305,  306,  307,
+      308,  309,  310,  311,  339,  339,  339,  319,  321,  339,
+      339,  330,  339,  339,  339,  339,    1,    5,    3,  339,
+
+      339,   10,  339,  339,  339,  339,   15,   16,   17,  339,
+       22,   26,  339,  339,   32,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,   49,   51,
+      339,  339,  339,  339,  339,  339,  339,  339,   66,  339,
+      339,   68,  339,  339,  339,  339,   81,  339,  339,  339,
+       85,  339,  339,  339,  339,  339,  339,   97,  339,  100,
+      339,  105,  106,  339,  112,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  138,  339,
+      339,  339,  339,  146,  339,  149,  339,  151,  339,  339,
+      157,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+
+      178,  339,  339,  339,  339,  192,  339,  194,  339,  196,
+      198,  339,  200,  339,  339,  203,  339,  339,  339,  208,
+      339,  339,  339,  339,  339,  339,  339,  218,  339,  339,
+      223,  339,  339,  339,  228,  339,  231,  339,  339,  339,
+      236,  339,  238,  239,  243,  244,  339,  339,  339,  339,
+      339,  252,  339,  339,  339,  257,  339,  264,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  277,  339,  339,
+      339,  339,  313,  314,  315,  339,  331,  330,  339,  339,
+      334,  339,  339,  332,  339,  339,  339,  339,   12,   13,
+       14,  339,  339,   30,  339,   35,  339,   37,   38,  339,
+
+       41,  339,  339,   44,  339,  339,   48,  339,  339,  339,
+       57,  339,  339,  339,  339,  339,  339,  339,   69,   70,
+      339,   73,  339,  339,  339,  339,  339,   84,  339,  339,
+      339,  339,   95,  339,   99,  102,  339,  339,  339,  339,
+      118,  339,  123,  126,  127,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  150,  154,  339,  160,  339,
+      164,  339,  167,  168,  339,  173,  174,  184,  185,  189,
+      190,  193,  195,  339,  201,  202,  339,  339,  339,  339,
+      339,  339,  339,  214,  215,  339,  339,  339,  222,  224,
+      339,  226,  339,  339,  233,  339,  237,  245,  246,  248,
+
+      339,  339,  253,  339,  256,  339,  339,  339,  267,  268,
+      339,  339,  272,  339,  275,  280,  339,  282,  339,  320,
+      335,  333,    4,  339,  339,   11,   21,  339,  339,  339,
+      339,   42,  339,  339,   46,  339,  339,  339,  339,   58,
+       59,  339,  339,   62,  339,  339,  339,  339,   79,   80,
+       83,   82,  339,   87,  339,   91,  339,  339,  339,  339,
+      339,  339,  339,  339,  132,  339,  339,  139,  142,  145,
+      339,  148,  339,  339,  166,  339,  339,  204,  205,  339,
+      339,  339,  339,  339,  216,  339,  339,  339,  339,  232,
+      339,  339,  250,  251,  339,  339,  261,  339,  339,  339,
+
+      339,  281,  339,  339,    9,  339,  339,  339,   40,  339,
+       45,   52,   53,  339,  339,  339,   61,   63,  339,  339,
+       77,   86,   90,  339,  339,  108,  114,  115,  116,  119,
+      339,  131,  339,  339,  339,  339,  339,  171,  199,  339,
+      209,  339,  211,  339,  217,  339,  225,  339,  339,  247,
+      339,  259,  339,  339,  339,  274,  283,    8,   28,  339,
+       36,  339,  339,  339,   60,  339,   71,  339,  339,  339,
+      133,  339,  143,  339,  161,  339,  339,  339,  339,  339,
+      339,  339,  263,  339,  339,   34,   43,   54,   55,  339,
+      339,   96,  339,  134,  339,  206,  210,  339,  219,  230,
+
+      339,  339,  339,  273,   64,  339,  339,  339,  213,  235,
+      339,  339,  339,  339,  152,  339,  265,  339,  128,  255,
+       92,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -513,283 +515,285 @@ static yyconst flex_int32_t yy_meta[73] =
         2,    2
     } ;
 
-static yyconst flex_int16_t yy_base[1213] =
+static yyconst flex_int16_t yy_base[1230] =
     {   0,
-        0,    0,  334, 2831,  329, 2831,    0,   72,   77,   75,
+        0,    0,  335, 2836,  332, 2836,    0,   72,   77,   75,
        83,   92,   69,   90,  141,  197,  246,   94,  291,  341,
-      140,   97,  386,  292,   96,  192,  291,  190,  296,  432,
+      140,   97,  386,  319,   96,  192,  291,  190,  296,  432,
       346,  479,  530,   91,  244,  433,  105,  103,  155,  257,
-      294,    0,  287,  164,    0,  284,  360,    0,  415,  591,
+      302,    0,  291,  164,    0,  286,  360,    0,  415,  591,
       650,  690,   85,  599,  607,  624,  632,  730,  664,   96,
-      130,  337,  145,  249,  161,  336,  346,  202,  177,  271,
-      398,  195,  227,    0,  415,  228,  233,  264,  291,    0,
-      432,  287,  336,  401,  389,  333,  751,  359,  466,  475,
-      351,  797,  488,  269,  393,  414,  426,  453,  484,  465,
-
-      489,  482,  520,  522,   67,  519,  521,  525,  529,  520,
-      528,  543,    0,  593,  663,  646,  529,  533,    0,  534,
-      553,  710,  607,  605,  274,  586,  638,  656,  698,  670,
-      778,  695,  731,  673,  796,  762,  728,  765,  698,  738,
-      748,  757,  762,  775,  813,  801,  796,  800,  837,  846,
-      826,  829,  855,  835,  849,  828,  863,  864,  886,  900,
-      882,  859,  899,  900,  899,  884,  906,  910,  897,  923,
-      924,  935,  938,  954,  915,  954,  946,  954,  949,  965,
-      955,  946,  946,  953,  968,  965,    0,  959,  988,  981,
-      994,  175, 1022,    0, 2831, 2831, 1085, 1006,    0,    0,
-
-     1036,    0, 1046, 1059, 1067, 1112, 1125,    0, 1000,    0,
-     1041, 1034,    0, 1055, 1056, 1057, 1049, 1066, 1112, 1072,
-     1072,    0, 1073,    0, 1082,  219, 1090, 1097, 1106, 1123,
-     1128,    0, 1118, 1132, 1136, 1122, 1134, 1129, 1120, 1142,
-     1139, 1125, 1132, 1132, 1145, 1148, 1134, 1141, 1162, 1166,
-     1134, 1165, 1159, 1171, 1172, 1186, 1172, 1184, 1171,    0,
-     1184, 1192, 1173, 1194, 1178, 1192, 1178, 1194, 1187,    0,
-        0, 1192, 1182, 1195,    0, 1192, 1228, 1212,    0, 1213,
-     1215, 1230, 1217, 1232,  225,    0, 1218, 1226, 1229, 1239,
-     1242, 1225,    0, 1243, 1231, 1242, 1244,    0, 1245, 1244,
-
-     1243, 1248, 1246, 1238, 1272, 1264,    0, 1278, 1274, 1272,
-     1283, 1283, 1272,  222, 1268, 1288, 1287, 1290, 1291, 1277,
-     1278, 1295, 1299,    0,    0, 1286, 1288,    0, 1292, 1293,
-     1286, 1298, 1295,    0, 1294, 1328, 1334, 1328, 1333, 1334,
-        0, 1335,    0, 1321, 1337,    0, 1341, 1339,    0, 1320,
-     1337, 1342, 1344, 1330, 1330, 1345, 1333, 1348, 1340, 1330,
-     1336,    0, 1338, 1346, 1375, 1350, 1378, 1380, 1378, 1391,
-        0, 1373, 1394, 1392, 1382, 1390, 1395, 1389, 1397, 1388,
-     1392, 1402,    0, 1407, 1391, 1406, 1405, 1414, 1431, 1436,
-     1439, 1442, 1429, 1434, 1428, 1427, 1447, 1448, 1430,    0,
-
-     1446, 1432, 1441,    0, 1438, 1435, 1453, 1452, 1451, 1451,
-     1446, 1456, 1457, 1449, 1457, 1474, 1486, 1492, 1476, 1474,
-        0, 1476, 1478, 1476, 1484, 1541, 1593, 1577,  180,    0,
-        0, 1574, 1586, 1599, 2831,    0, 1509, 1609, 1618, 1636,
-     1645, 1599, 1606, 1618, 1639, 1624, 1645, 1639, 1638, 1644,
-     1649, 1630, 1633, 1649,    0, 1657,  181,    0,    0,    0,
-     1645, 1646, 1652, 1651, 1649, 1663, 1661, 1661, 1665, 1667,
-     1657, 1651, 1692, 1659,    0, 1688, 1683,    0,    0, 1684,
-        0, 1702, 1703, 1690, 1702,    0, 1687, 1705, 1691,    0,
-     1693,    0, 1698, 1702, 1703, 1708, 1696, 1714, 1700, 1716,
-
-     1722, 1734, 1736,    0, 1737, 1750, 1735, 1751, 1742, 1753,
-        0, 1754, 1735, 1757, 1748,    0,    0, 1743,    0, 1744,
-     1762, 1747, 1766, 1760,    0,    0, 1757, 1765, 1763, 1757,
-        0, 1761, 1795, 1750,    0, 1772, 1780,    0,    0, 1797,
-     1792, 1805,  173, 1792, 1796, 1789, 1799, 1811,    0, 1801,
-        0, 1802, 1796, 1807, 1812,    0, 1817, 1804, 1819, 1812,
-        0, 1813, 1808,    0,    0, 1805,    0,    0, 1820, 1825,
-        0, 1814, 1838, 1852, 1851, 1852, 1853,    0, 1850, 1848,
-     1841, 1855, 1844, 1859, 1845, 1861, 1862,    0, 1859, 1848,
-     1855, 1870, 1859, 1853, 1862,    0, 1855, 1858, 1865, 1867,
-
-     1867,    0, 1899,    0, 1891, 1903, 1904, 1907, 1904, 1907,
-     1893, 1910,    0,    0,    0, 1910, 1900, 1897, 1913, 1916,
-        0, 1902, 1903, 1901, 1905, 1919, 1920, 1914,    0, 1916,
-     1953, 1917, 1931, 1914,    0,    0,    0, 1949, 1956, 1948,
-     1941,    0, 1957, 1948, 1955, 1960,    0,    0,    0,    0,
+      130,  337,  145,  249,  161,  336,  346,  202,  177,  273,
+      398,  195,  227,    0,  415,  382,  219,  256,  259,    0,
+      437,  285,  300,  451,  389,  312,  751,  357,  355,  483,
+      426,  797,  480,  271,  393,  429,  474,  485,  489,  476,
+
+      501,  501,  529,  522,   67,  519,  521,  525,  528,  523,
+      529,  663,    0,  593,  664,  711,  532,  533,    0,  533,
+      552,  748,  553,  603,  276,  585,  609,  652,  697,  746,
+      803,  632,  698,  652,  766,  794,  647,  801,  654,  665,
+      707,  707,  728,  741,  783,  734,  801,  731,  790,  837,
+      846,  835,  834,  846,  838,  839,  845,  854,  869,  885,
+      898,  875,  859,  885,  887,  885,  904,  913,  904,  900,
+      934,  929,  912,  941,  943,  912,  947,  945,  945,  940,
+      962,  955,  943,  944,  953,  968,  959,    0,  954,  987,
+      978,  991,  212, 1017,    0, 2836, 2836, 1080,  999,    0,
+
+        0, 1042,    0, 1052, 1029,  711, 1061, 1094,    0,  986,
+        0, 1062, 1055,    0, 1068, 1070, 1071, 1073, 1092, 1086,
+     1099, 1087,    0, 1087,    0, 1085,  232, 1093, 1107, 1089,
+     1106, 1111,    0, 1101, 1115,    0, 1118, 1108, 1126, 1122,
+     1113, 1135, 1132, 1126, 1135, 1135, 1148, 1151, 1137, 1143,
+     1149, 1143, 1135, 1139, 1140, 1152, 1153, 1168, 1155, 1168,
+     1165,    0, 1178, 1186, 1167, 1188, 1180, 1196, 1182, 1198,
+     1191,    0,    0, 1196, 1186, 1198,    0, 1194, 1208, 1192,
+        0, 1196, 1198, 1216, 1199, 1214,  226,    0, 1200, 1209,
+     1213, 1223, 1237, 1220,    0, 1238, 1225, 1249, 1250,    0,
+
+     1251, 1249, 1248, 1253, 1251, 1240, 1252, 1244,    0, 1261,
+     1257, 1255, 1266, 1266, 1255,  223, 1251, 1272, 1271, 1283,
+     1285, 1271, 1272, 1289, 1301,    0,    0, 1290, 1292,    0,
+     1296, 1297, 1290, 1302, 1298,    0, 1296, 1308, 1314, 1311,
+     1316, 1317,    0, 1318,    0, 1304, 1320,    0, 1324, 1322,
+        0, 1304, 1321, 1335, 1340, 1341, 1323, 1339, 1337, 1339,
+     1354, 1341, 1348, 1338, 1344,    0, 1346, 1353, 1362, 1361,
+     1365, 1366, 1364, 1391,    0, 1357, 1378, 1377, 1378, 1401,
+     1392, 1397, 1407, 1397, 1401, 1410,    0, 1415, 1401, 1418,
+     1416, 1403, 1419, 1423, 1426, 1429, 1416, 1422, 1416, 1424,
+
+     1445, 1447, 1429,    0, 1453, 1441, 1450,    0, 1447, 1444,
+     1462, 1461, 1460, 1460, 1455, 1466, 1468, 1461, 1468, 1463,
+     1474, 1479, 1463, 1461,    0, 1463, 1466, 1473, 1482, 1539,
+     1591, 1575,  219,    0,    0, 1572, 1584, 1597, 2836,    0,
+     1521, 1607, 1616, 1634, 1643, 1597, 1604, 1616, 1637, 1622,
+     1643, 1637, 1636, 1642, 1647, 1628, 1631, 1647,    0, 1655,
+      183,    0,    0,    0, 1643, 1644, 1650, 1649, 1647, 1661,
+     1659, 1659, 1663, 1665, 1655, 1649, 1690, 1657,    0, 1686,
+     1681,    0,    0, 1682,    0, 1688, 1701, 1702, 1689, 1701,
+        0, 1686, 1705, 1690,    0, 1692,    0, 1697, 1701, 1703,
+
+     1707, 1694, 1713, 1699, 1715, 1744, 1735, 1735,    0, 1736,
+     1749, 1734, 1750, 1741, 1752,    0, 1753, 1734, 1756, 1747,
+        0,    0, 1742,    0, 1743, 1761, 1746, 1765, 1759,    0,
+        0, 1756, 1764, 1762, 1756,    0, 1760, 1794, 1748,    0,
+     1770, 1781,    0,    0, 1796, 1791, 1804,  181, 1791, 1795,
+     1788, 1798, 1810,    0, 1800,    0, 1801, 1795, 1806, 1811,
+        0, 1816, 1803, 1818, 1811,    0, 1812, 1807,    0,    0,
+     1804,    0,    0, 1819, 1823,    0, 1812, 1837, 1853, 1850,
+     1843, 1852, 1853,    0, 1844, 1851, 1849,  170, 1842, 1856,
+     1845, 1860, 1846, 1862, 1863,    0, 1860, 1849, 1856, 1871,
+
+     1860, 1854, 1863,    0, 1856, 1860, 1867, 1890, 1892,    0,
+     1902,    0, 1894, 1904, 1905, 1908, 1905, 1908, 1909, 1895,
+     1912,    0,    0,    0, 1912, 1902, 1899, 1915, 1918,    0,
+     1904, 1905, 1905, 1907, 1922, 1923, 1918,    0, 1920, 1954,
+     1946, 1958, 1941,    0,    0,    0, 1954, 1961, 1951, 1944,
+        0, 1960, 1951, 1958, 1963,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  170, 1958,  123,    0,    0,
-     1955, 2007, 2016, 2024, 2033, 2041, 2088,    0,    0, 1961,
-     1964, 1952,    0, 2020, 2038, 2029, 2041,    0,    0,    0,
-
-     2038,    0,    0, 2042, 2023,    0, 2034, 2031, 2032, 2050,
-     2044, 2062, 2045, 2050, 2046, 2075, 2079, 2090, 2091,    0,
-     2095, 2084, 2080, 2081, 2096, 2081, 2102, 2095,    0, 2104,
-     2101, 2101, 2092, 2102, 2103, 2108,    0, 2103, 2111, 2112,
-        0, 2098, 2131, 2126, 2128, 2147, 2134,    0, 2132,    0,
-     2133,    0,    0, 2137,    0, 2144, 2134, 2146, 2144, 2148,
-     2153, 2141, 2140, 2156, 2153, 2146, 2157, 2150,    0, 2162,
-     2162, 2159, 2149,    0, 2152,    0, 2189,    0, 2180, 2194,
-        0, 2176, 2195, 2184, 2196, 2200, 2181, 2192, 2204, 2194,
-        0, 2191, 2190, 2197, 2192,    0, 2195, 2196,    0, 2212,
-
-        0, 2211, 2202, 2215, 2201,    0, 2217, 2203, 2219, 2230,
-     2236, 2248, 2236,    0, 2232, 2249,    0, 2250, 2255, 2250,
-        0, 2238,    0, 2245, 2240, 2256, 2258,    0,    0,    0,
-        0, 2255, 2244, 2260, 2261, 2262, 2249, 2262, 2257,    0,
-     2270,    0, 2268, 2265, 2269, 2281, 2286, 2295, 2300, 2300,
-     2301,    0, 2289, 2293, 2285, 2307,    0,    0,    0, 2306,
-     2061, 2320, 2346, 2354,    0, 2362, 2390,    0, 2338, 2357,
-     2358, 2349,    0,    0,    0, 2364, 2361,    0, 2350,    0,
-     2369,    0,    0, 2371,    0, 2368, 2358,    0, 2368, 2366,
-      120, 2378, 2379, 2405, 2406, 2392, 2403, 2394, 2396, 2396,
-
-     2402,    0,    0, 2416,    0, 2399, 2405, 2417, 2402, 2404,
-        0, 2409, 2421, 2417, 2422,    0, 2410,    0,    0,  114,
-     2414, 2421, 2430,    0, 2429,    0,    0,    0, 2430, 2440,
-     2440, 2444, 2449, 2459, 2447, 2452, 2458, 2464,    0,    0,
-     2464,    0, 2461,    0, 2466,    0,    0, 2469,    0,    0,
-        0,    0,    0,    0,    0,    0, 2472, 2456, 2461, 2458,
-     2455, 2458, 2459, 2479,    0,    0, 2476, 2470, 2463,    0,
-        0, 2477,    0, 2476, 2492,    0, 2494,    0,    0, 2507,
-        0, 2511, 2512,    0, 2516,    0, 2498, 2500, 2505,    0,
-        0, 2520, 2510,    0, 2520,    0,    0, 2510,    0, 2524,
-
-        0,    0,    0,    0, 2521, 2508,    0,    0, 2527, 2517,
-     2518, 2520,    0, 2523, 2529,    0, 2530, 2517, 2520, 2536,
-     2563,    0,    0, 2545, 2547,    0, 2547, 2567, 2560, 2550,
-        0,    0,    0,    0, 2553,    0, 2569, 2572, 2565, 2570,
-     2562, 2574, 2564, 2560, 2568, 2576,    0, 2581, 2563,    0,
-        0,    0, 2569,    0, 2571, 2581,    0, 2569, 2576,    0,
-        0, 2580, 2611, 2608, 2593, 2599,    0, 2615, 2612, 2617,
-     2617,    0, 2615, 2599,    0,    0, 2614, 2622,    0, 2616,
-     2611, 2621, 2611,    0, 2620, 2615,    0, 2620, 2614, 2631,
-        0, 2636,    0,    0,    0,    0, 2626, 2636, 2635,    0,
-
-        0, 2621, 2650,    0,    0,    0, 2655, 2669,    0,    0,
-        0,    0,    0, 2662,    0, 2659, 2672, 2660, 2671, 2658,
-        0,    0, 2661,    0, 2663,    0, 2670,    0, 2665,    0,
-     2672, 2669,    0, 2682,    0, 2680, 2680, 2666,    0,    0,
-        0,    0, 2668,    0, 2676, 2684, 2685,    0, 2686,    0,
-     2678, 2681, 2704,    0, 2709,    0, 2713,    0, 2703, 2710,
-     2710, 2712, 2724, 2727, 2726,    0, 2716, 2726,    0,    0,
-        0,    0, 2713, 2712,    0, 2714,    0, 2734,    0,    0,
-     2722,    0,    0, 2725, 2718, 2736,    0,    0, 2728, 2732,
-     2728,    0,    0, 2734, 2719, 2724, 2769,    0, 2770,    0,
-
-     2755,    0,    0,    0, 2831,   74, 2818, 2820, 2822, 2824,
-     2826, 2828
+        0,    0,    0,    0,  123, 1961,  121,    0,    0, 1958,
+     2008, 2017, 2025, 2034, 2042, 2089,    0,    0, 1964, 2036,
+
+     2024,    0, 2023, 2041, 2032, 2044,    0,    0,    0, 2041,
+        0,    0, 2045, 2026,    0, 2037, 2034, 2045, 2063, 2047,
+     2065, 2048, 2079, 2075, 2078, 2082, 2093, 2094,    0, 2098,
+     2087, 2088, 2084, 2085, 2100, 2085, 2106, 2100,    0, 2109,
+     2107, 2105, 2096, 2106, 2107, 2113,    0, 2107, 2141, 2142,
+        0, 2128, 2135, 2130, 2132, 2151, 2138,    0, 2136,    0,
+     2137,    0,    0, 2141,    0, 2148, 2138, 2150, 2148, 2152,
+     2157, 2145, 2144, 2160, 2157, 2150, 2161, 2154,    0, 2166,
+     2166, 2189, 2179,    0, 2182,    0, 2193,    0, 2184, 2198,
+        0, 2180, 2199, 2188, 2200, 2204, 2185, 2196, 2208, 2198,
+
+        0, 2195, 2194, 2201, 2196,    0, 2199,    0, 2200,    0,
+        0, 2216,    0, 2216, 2217, 2217, 2208, 2247, 2233,    0,
+     2249, 2235, 2251, 2236, 2242, 2254, 2242,    0, 2238, 2255,
+        0, 2256, 2261, 2256,    0, 2244,    0, 2251, 2246, 2262,
+        0, 2264,    0,    0,    0,    0, 2261, 2250, 2266, 2267,
+     2268,    0, 2255, 2268, 2289,    0, 2302,    0, 2300, 2297,
+     2301, 2287, 2292, 2301, 2306, 2306, 2307,    0, 2295, 2299,
+     2291, 2313,    0,    0,    0, 2312, 2062, 2326, 2352, 2360,
+        0, 2368, 2396,    0, 2344, 2363, 2364, 2355,    0,    0,
+        0, 2370, 2367,    0, 2356,    0, 2375,    0,    0, 2377,
+
+        0, 2374, 2364,    0, 2374, 2372,    0, 2384, 2385, 2411,
+        0, 2412, 2398, 2409, 2400, 2402, 2402, 2408,    0,    0,
+     2422,    0, 2405, 2411, 2423, 2408, 2410,    0, 2415, 2427,
+     2423, 2428,    0, 2416,    0,    0,  114, 2420, 2427, 2436,
+        0, 2435,    0,    0,    0, 2436, 2446, 2446, 2450, 2455,
+     2465, 2453, 2458, 2464, 2470,    0,    0, 2470,    0, 2467,
+        0, 2472,    0,    0, 2475,    0,    0,    0,    0,    0,
+        0,    0,    0, 2478,    0,    0, 2462, 2467, 2464, 2461,
+     2464, 2465, 2485,    0,    0, 2482, 2476, 2469,    0,    0,
+     2483,    0, 2482, 2498,    0, 2500,    0,    0, 2513,    0,
+
+     2517, 2518,    0, 2522,    0, 2504, 2506, 2511,    0,    0,
+     2526, 2516,    0, 2526,    0,    0, 2516,    0, 2530,    0,
+        0,    0,    0, 2527, 2514,    0,    0, 2533, 2523, 2524,
+     2526,    0, 2529, 2535,    0, 2522, 2525, 2541, 2542,    0,
+        0, 2550, 2552,    0, 2552, 2572, 2565, 2555,    0,    0,
+        0,    0, 2558,    0, 2574, 2577, 2570, 2575, 2567, 2579,
+     2569, 2565, 2573, 2581,    0, 2586, 2568,    0,    0,    0,
+     2574,    0, 2576, 2586,    0, 2574, 2581,    0,    0, 2585,
+     2590, 2613, 2598, 2604,    0, 2620, 2617, 2622, 2622,    0,
+     2620, 2604,    0,    0, 2619, 2627,    0, 2621, 2616, 2626,
+
+     2616,    0, 2625, 2620,    0, 2625, 2619, 2636,    0, 2641,
+        0,    0,    0, 2631, 2641, 2640,    0,    0, 2626, 2629,
+        0,    0,    0, 2660, 2674,    0,    0,    0,    0,    0,
+     2667,    0, 2664, 2677, 2665, 2676, 2663,    0,    0, 2666,
+        0, 2668,    0, 2675,    0, 2670,    0, 2677, 2674,    0,
+     2687,    0, 2685, 2685, 2671,    0,    0,    0,    0, 2673,
+        0, 2681, 2689, 2690,    0, 2691,    0, 2683, 2686, 2683,
+        0, 2714,    0, 2718,    0, 2708, 2715, 2715, 2717, 2729,
+     2732, 2731,    0, 2721, 2731,    0,    0,    0,    0, 2718,
+     2717,    0, 2719,    0, 2739,    0,    0, 2727,    0,    0,
+
+     2730, 2723, 2741,    0,    0, 2733, 2737, 2733,    0,    0,
+     2739, 2724, 2729, 2748,    0, 2775,    0, 2760,    0,    0,
+        0, 2836,   74, 2823, 2825, 2827, 2829, 2831, 2833
     } ;
 
-static yyconst flex_int16_t yy_def[1213] =
+static yyconst flex_int16_t yy_def[1230] =
     {   0,
-     1205,    1, 1205, 1205, 1205, 1205, 1206, 1207, 1208, 1206,
-     1206, 1206,   12,   12, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1209,
-     1205, 1206, 1210, 1207, 1206, 1211, 1208, 1206, 1206,   12,
-     1206, 1206,   12, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1212, 1209, 1206, 1205, 1205, 1206,  197, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206,   58, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1205, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1205, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
-
-     1206, 1206, 1206, 1206,    0, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205
+     1222,    1, 1222, 1222, 1222, 1222, 1223, 1224, 1225, 1223,
+     1223, 1223,   12,   12, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1226,
+     1222, 1223, 1227, 1224, 1223, 1228, 1225, 1223, 1223,   12,
+     1223, 1223,   12, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1229, 1226, 1223, 1222, 1222, 1223,  198, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,   58, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1222,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1222, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
+     1223,    0, 1222, 1222, 1222, 1222, 1222, 1222, 1222
     } ;
 
-static yyconst flex_int16_t yy_nxt[2904] =
+static yyconst flex_int16_t yy_nxt[2909] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   10,   11,   12,
        13,   13,   14,   13,   13,   13,   13,    7,   15,   16,
@@ -799,321 +803,321 @@ static yyconst flex_int16_t yy_nxt[2904] =
        21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
         7,   31,   32,   33,   34,   35,   36,   37,   38,   39,
        40,    7,   43,   43,   43,   42,   45,   46,   46,   46,
-      285,  286,   48,   49,   50,   50,   50,   50,   50,   50,
+      287,  288,   48,   49,   50,   50,   50,   50,   50,   50,
        50,   50,   51,   51,   51,   51,   51,   51,   51,   51,
 
        52,   53,   53,   53,   53,   53,   53,   53,   53,   54,
        42,   59,   91,   55,   56,  114,   92,   57,  126,  115,
-       93, 1040,  176,  116,  177,  188,   42,  178,  209,  117,
-       94,   42, 1017,   58,  859,  186,   42,   59,   91,   55,
-       56,  114,   92,   57,  126,  115,   93,  187,  176,  116,
-      177,  188,   42,  178,  209,  117,   94,   42,  109,   58,
-       60,  186,  110,  210,   43,   43,   43,   61,   45,  111,
-       62,   63,   64,  187,   65,  112,   66,   67,  214,   68,
-       69,  857,  774,  113,  109,  189,   60,  190,  110,  210,
-      702,  191,  678,   61,  218,  111,   62,   63,   64,  225,
-
-       65,  112,   66,   67,  214,   68,   69,   70,  136,  113,
-      127,  189,  137,  190,  128,   71,   72,  191,  129,   73,
-      218,   74,  138,   75,  130,  225,   76,  229,  139,   77,
-       78,  543,  515,  457,  136,   79,  127,   80,  137,  223,
-      128,   71,   72,  224,  129,   73,  435,   74,  138,   75,
-      130,  230,   76,  229,  139,   77,   78,  192,  192,  192,
-      234,   79,  179,   80,   81,  223,  180,  215,   82,  224,
-      181,   83,   84,  216,  235,   85,   86,  230,   87,   88,
-      217,   89,  236,  314,   90,  271,  234,  226,  179,  196,
-       81,  195,  180,  215,   82,   41,  181,   83,   84,  216,
-
-      235,   85,   86,  125,   87,   88,  217,   89,  236,  131,
-       90,   95,   96,  132,  237,  140,  241,  133,  242,  141,
-       97,  134,   98,  135,   99,  100,  101,  142,  194,  143,
-       41,  144,  102, 1205, 1205,  131, 1205,   95,   96,  132,
-      237,  140,  241,  133,  242,  141,   97,  134,   98,  135,
-       99,  100,  101,  142,  243,  143,  219,  144,  102,  103,
-       46,   46,   46,  211,  152,   48,  212,  104,  153,  105,
-      154,  220,  221,  106,  213,  248,  107,  255,  155,  108,
-      243, 1205,  219,  222,  156,  103, 1205,  261,  262,  211,
-      152, 1205,  212,  104,  153,  105,  154,  220,  221,  106,
-
-      213,  248,  107,  255,  155,  108,  118,  119, 1205,  222,
-      156,  246,  120,  261,  262,  247,  121,  122,  227,  244,
-     1205,  123,  272,  124,  197,  197,  197,  197,  197,  197,
-      197,  197,  118,  119,  228, 1205,  245,  246,  120,  231,
-      273,  247,  121,  122,  227,  244,  232,  123,  272,  124,
-      145,  182,  233,  183,  146,  274,  184,  147,  148,  185,
-      228,  238,  245,  239,  149,  231,  273,  150, 1205,  240,
-      151, 1205,  232, 1205,  275, 1205,  145,  182,  233,  183,
-      146,  274,  184,  147,  148,  185, 1205,  238,  256,  239,
-      149, 1205, 1205,  150,  258,  240,  151,  157,  257,  158,
-
-      275,  159,  276,  277,  160,  161,  269,  278,  162,  163,
-      259,  164,  260,  165,  256,  166,  167,  168,  270,  279,
-      258,  169, 1205,  157,  257,  158, 1205,  159,  276,  277,
-      160,  161,  269,  278,  162,  163,  259,  164,  260,  165,
-      280,  166,  167,  168,  270,  279, 1205,  169,  170,  281,
-      287,  282,  171,  288,  289,  172,  290,  293,  291,  283,
-      294,  295,  173,  284,  305,  174,  280,  292,  306,  296,
-      307,  308,  175, 1205,  170,  281,  287,  282,  171,  288,
-      289,  172,  290,  293,  291,  283,  294,  295,  173,  284,
-      305,  174, 1205,  292,  306,  296,  307,  308,  175,  198,
-
-       50,   50,   50,   50,   50,   50,   50,   50,  203,  203,
-      203,  203,  203,  203,  203,  203,  204,  204,  204,  204,
-      204,  204,  204,  204,  297,  312,  199,  313,  315,  298,
-      205,  205,   42,  206,  206,  206,  206,  206,  206,  206,
-      206,  207,  207,  207,  207,  207,  207,  207,  207, 1205,
-      297,  312,  199,  313,  315,  298, 1205,  316,   42,   51,
-       51,   51,   51,   51,   51,   51,   51,  302, 1205, 1205,
-      303,  200,  201,  204,  204,  204,  204,  204,  204,  204,
-      204,  299,  304,  316, 1205, 1205, 1205,  317,  322,  300,
-      323,  335,  301,  302,  324,  318,  303,  200,  201,   51,
-
-       51,   51,   51,   51,   51,   51,   51,  299,  304, 1205,
-      325,  202,   56,  317,  322,  300,  323,  335,  301, 1205,
-      324,  318, 1205, 1205, 1205, 1205, 1205, 1205,  347,  319,
-      309,  331,  332,  310,  320,  321,  325,  202,   56,  208,
-      208,  208,  208,  208,  208,  208,  208,  311,  208,  208,
-      208,  208,  208,  208,  347,  319,  309,  331,  332,  310,
-      320,  321,  333, 1205,  334,  348, 1205, 1205,  343,  344,
-     1205,  349, 1205,  311,  208,  208,  208,  208,  208,  208,
-      249,  250,  251,  252,  253, 1205,  350, 1205,  333,  254,
-      334,  348,  340,  341,  343,  344,  345,  349,  326,  351,
-
-     1205,  352,  327,  342, 1205,  346,  249,  250,  251,  252,
-      253,  328,  350,  329,  330,  254,  263,  336,  340,  341,
-      264,  265,  345, 1205,  326,  351,  266,  352,  327,  342,
-      267,  346,  337,  338,  268,  339,  356,  328,  357,  329,
-      330,  358,  263,  336,  353,  366,  264,  265,  354,  355,
-      367, 1205,  266, 1205,  371, 1205,  267,  374,  337,  338,
-      268,  339,  356,  359,  357, 1205,  360,  358,  363, 1205,
-      353,  366,  364,  361,  354,  355,  367,  362,  365,  368,
-      371,  372,  378,  374, 1205,  391,  373, 1205,  369,  359,
-      379,  370,  360,  375,  363,  376,  380, 1205,  364,  361,
-
-     1205, 1205,  377,  362,  365,  368, 1205,  372,  378,  398,
-      381,  391,  373,  389,  369,  382,  379,  370,  385,  375,
-      394,  376,  380,  383,  399,  390,  386,  384,  377,  392,
-      387,  393,  388,  402,  396,  398,  381,  397,  395,  389,
-      400,  382,  403,  401,  385, 1205,  394,  404,  413,  383,
-      399,  390,  386,  384,  405,  392,  387,  393,  388,  402,
-      396,  407,  409,  397,  395,  406,  400,  418,  403,  401,
-      408,  410,  411,  404,  413,  414,  419,  424,  420,  415,
-      405,  425,  426,  416,  421,  422,  427,  407,  409,  428,
-      417,  406,  412,  418,  430,  431,  408,  410,  411,  429,
-
-      423,  414,  419,  424,  420,  415,  432,  425,  426,  416,
-      421,  422,  427,  433,  434,  428,  417, 1205,  412, 1205,
-      430,  431,  192,  192,  192,  429,  423,  202,   56, 1205,
-     1205, 1205,  432, 1205, 1205, 1205, 1205, 1205,  442,  433,
-      434,  199,  437,  437, 1205,  438,  438,  438,  438,  438,
-      438,  438,  438,  202,   56,  203,  203,  203,  203,  203,
-      203,  203,  203,  439,  442,  443,  444,  199,  204,  204,
-      204,  204,  204,  204,  204,  204,  206,  206,  206,  206,
-      206,  206,  206,  206,  445,  446,  447,  448,  449,  440,
-      452,  443,  444,  194,  197,  197,  197,  197,  197,  197,
-
-      197,  197, 1205,  454,  453,  455,  200,  201, 1205, 1205,
-      445,  446,  447,  448,  449,  440,  452,  456,  458,  459,
-      436,  206,  206,  206,  206,  206,  206,  206,  206,  454,
-      453,  455,  200,  201,  207,  207,  207,  207,  207,  207,
-      207,  207,  450,  456,  458,  459,  436,  460,  451,  461,
-      462,  463,  464,  467,  465,  441,  466,  468,  469,  470,
-      471,  472,  473,  474,  475,  476,  477,  478,  450,  479,
-     1205,  484, 1205,  460,  451,  461,  462,  463,  464,  467,
-      465,  441,  466,  468,  469,  470,  471,  472,  473,  474,
-      475,  476,  477,  478,  480,  479,  482,  484,  481,  483,
-
-      485,  486,  487,  488,  489,  490,  492,  493,  491,  494,
-      495,  496,  497,  498,  499,  500,  501,  502,  503,  504,
-      480,  505,  482,  506,  481,  483,  485,  486,  487,  488,
-      489,  490,  492,  493,  491,  494,  495,  496,  497,  498,
-      499,  500,  501,  502,  503,  504,  507,  505,  508,  506,
-      509,  510,  511,  513,  514,  516,  517,  518,  519,  520,
-      521,  522,  523,  526,  524,  527,  528,  512,  529,  530,
-      531,  532,  507,  525,  508,  533,  509,  510,  511,  513,
-      514,  516,  517,  518,  519,  520,  521,  522,  523,  526,
-      524,  527,  528,  512,  529,  530,  531,  532,  534,  525,
-
-      535,  533,  536,  537,  539,  540,  541,  542,  544,  538,
-      545,  546,  547,  548,  549,  550,  551,  552,  553,  554,
-      555,  556,  557,  558,  534,  559,  535,  560,  536,  537,
-      539,  540,  541,  542,  544,  538,  545,  546,  547,  548,
-      549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
-      561,  559,  562,  560,  563,  564,  565,  566,  567,  568,
-      569,  570,  571,  572,  573,  574,  576,  577,  578,  579,
-      580,  581,  582,  583,  584,  575,  561,  585,  562,  589,
-      563,  564,  565,  566,  567,  568,  569,  570,  571,  572,
-      573,  574,  576,  577,  578,  579,  580,  581,  582,  583,
-
-      584,  575,  586,  585,  590,  589,  591,  592,  587,  593,
-      596,  588,  597,  594,  598,  599,  600,  602,  603,  605,
-      604,  606,  607,  595,  608,  609,  610,  601,  586,  611,
-      590,  612,  591,  592,  587,  593,  596,  588,  597,  594,
-      598,  599,  600,  602,  603,  605,  604,  606,  607,  595,
-      608,  609,  610,  601,  613,  611,  614,  612,  615,  616,
-      617,  618,  619,  620,  621,  622,  623,  624,  625,  626,
-      627,  628,  629,  630,  631,  632,  633,  634,  635,  636,
-      613,  637,  614,  638,  615,  616,  617,  618,  619,  620,
-      621,  622,  623,  624,  625,  626,  627,  628,  629,  630,
-
-      631,  632,  633,  634,  635,  636,  639,  637,  640,  638,
-      641,  642,  643,  644,  645,  646,  647,  648,  438,  438,
-      438,  438,  438,  438,  438,  438, 1205, 1205, 1205, 1205,
-     1205, 1205,  639, 1205,  640, 1205,  641,  642,  643,  644,
-      645,  646,  647,  648,   42,   42,   42,   42,   42,   42,
-      649,   42,   42,   42,   42,   42,   42,   42,   42,  650,
-      651,  652,  653,  654,  655,  656,  657,  658,  659,  660,
-      661,  662,  663,  664,  665,  666,  667,  668,  669,  670,
-      671,  672,  673,  674,  675,  650,  651,  652,  653,  654,
-      655,  656,  657,  658,  659,  660,  661,  662,  663,  664,
-
-      665,  666,  667,  668,  669,  670,  671,  672,  673,  674,
-      675,   42,   42,  676,  677,  679,  680,  681,  438,  438,
-      438,  438,  438,  438,  438,  438,  682,  683,  683,  683,
-      683,  683,  683,  683,  683, 1205,  688,  689,  690,  676,
-      677,  679,  680,  681,  684,  685,  685,  685,  685,  685,
-      685,  685,  685,  686,  687,  687,  687,  687,  687,  687,
-      687,  687,  688,  689,  690,  691,  692,  693,  694,  695,
-      696,  697,  698,  699,  700,  701,  703,  704,  705,  706,
-      707,  708,  710,  711,  712,  713,  714,  715, 1205,  709,
-      718,  691,  692,  693,  694,  695,  696,  697,  698,  699,
-
-      700,  701,  703,  704,  705,  706,  707,  708,  710,  711,
-      712,  713,  714,  715,  716,  709,  718,  719,  720,  721,
-      722,  723,  726,  728,  729,  727,  730,  717,  731,  732,
-      733,  734,  737,  735,  738,  724,  739,  740,  725,  736,
-      716,  741,  742,  719,  720,  721,  722,  723,  726,  728,
-      729,  727,  730,  717,  731,  732,  733,  734,  737,  735,
-      738,  724,  739,  740,  725,  736,  743,  741,  742,  744,
-      745,  746,  747,  748,  749,  750,  751,  752,  753,  754,
-      755,  756,  757,  758,  759,  760,  761,  762,  763,  764,
-      765, 1205,  743,  768,  769,  744,  745,  746,  747,  748,
-
-      749,  750,  751,  752,  753,  754,  755,  756,  757,  758,
-      759,  760,  761,  762,  763,  764,  765,  766,  770,  768,
-      769,  771,  772,  773,  775,  776,  777,  767,  778,  779,
-      780,  781,  782,  783,  784,  785,  786,  787,  788,  789,
-      790,  791,  792,  766,  770,  793,  794,  771,  772,  773,
-      775,  776,  777,  767,  778,  779,  780,  781,  782,  783,
-      784,  785,  786,  787,  788,  789,  790,  791,  792,  795,
-      796,  793,  794,  797,  798,  799,  800,  801,  802,  803,
-      804,  805,  806,  807,  808,  809,  810,  811,  812,  813,
-      814,  815,  816,  817,  818,  795,  796,  819,  820,  797,
-
-      798,  799,  800,  801,  802,  803,  804,  805,  806,  807,
-      808,  809,  810,  811,  812,  813,  814,  815,  816,  817,
-      818,  821,  822,  819,  820,  823,  824,  825,  826,  827,
-      828,  829,  830,  831,  832,  833,  834,  835,  836,  837,
-      838,  839,  840,  841,  842, 1205,  845,  821,  822,  846,
-      847,  823,  824,  825,  826,  827,  828,  829,  830,  831,
-      832,  833,  834,  835,  836,  837,  838,  839,  840,  841,
-      842,  843,  845,  848,  849,  846,  847,  850,  851,  852,
-      853,  854,  855,  858,  860,  869,  856,  870,  871,  844,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205,  843, 1205,  848,
-
-      849, 1205, 1205,  850,  851,  852,  853,  854,  855,  858,
-      860,  869,  856,  870,  871,  844,  861,  861,  861,  861,
-      861,  861,  861,  861,  862,  683,  683,  683,  683,  683,
-      683,  683,  683,  863,  863,  863,  863,  863,  863,  863,
-      863,  864,  685,  685,  685,  685,  685,  685,  685,  685,
-      866,  866,  866,  866,  866,  866,  866,  866,  872,  873,
-      874,  875,  876,  877,  878,  879,  880,  881,  882,  865,
-      861,  861,  861,  861,  861,  861,  861,  861, 1205,  883,
-      884,  885,  886,  887,  872,  873,  874,  875,  876,  877,
-      878,  879,  880,  881,  882,  865,  867,  687,  687,  687,
-
-      687,  687,  687,  687,  687,  883,  884,  885,  886,  887,
-      888,  889,  890,  891,  892,  895,  896,  897,  898,  899,
-      900,  901,  902,  903,  868,  893,  904,  905,  906,  907,
-      908,  894,  909,  910,  911,  912,  888,  889,  890,  891,
-      892,  895,  896,  897,  898,  899,  900,  901,  902,  903,
-      868,  893,  904,  905,  906,  907,  908,  894,  909,  910,
-      911,  912,  913,  914,  915,  916,  917,  918,  919,  920,
-      921,  922,  923,  924,  925,  926,  927,  928,  929,  930,
-      931,  932,  933,  934,  935,  936,  937,  938,  913,  914,
-      915,  916,  917,  918,  919,  920,  921,  922,  923,  924,
-
-      925,  926,  927,  928,  929,  930,  931,  932,  933,  934,
-      935,  936,  937,  938,  939,  940,  941,  942,  943,  944,
-      945,  946,  947,  948,  949,  950,  951,  952,  953,  954,
-      955,  956,  957,  958,  959,  960,  961,  962,  963,  964,
-      939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
-      949,  950,  951,  952,  953,  954,  955,  956,  957,  958,
-      959,  960,  961,  962,  963,  964,  965,  966,  967,  968,
-      969,  970,  971,  972,  973,  974,  975,  976,  977,  978,
-      979,  980,  981,  982,  983,  984,  985,  986,  987,  988,
-      989,  990,  965,  966,  967,  968,  969,  970,  971,  972,
-
-      973,  974,  975,  976,  977,  978,  979,  980,  981,  982,
-      983,  984,  985,  986,  987,  988,  989,  990,  991,  992,
-      993,  994,  995,  996,  997,  998,  999, 1000, 1001,  861,
-      861,  861,  861,  861,  861,  861,  861, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205,  991,  992,  993,  994,  995,  996,
-      997,  998,  999, 1000, 1001,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  866,  866,  866,  866,  866,  866,  866,  866, 1205,
-     1205, 1004, 1002, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
-      865, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1003,  866,
-
-      866,  866,  866,  866,  866,  866,  866, 1004, 1002, 1005,
-     1006, 1007, 1008, 1009, 1010, 1011,  865, 1012, 1013, 1014,
-     1015, 1016, 1018, 1019, 1003, 1020,  868, 1022, 1023, 1024,
-     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1021, 1033,
-     1034, 1035, 1036, 1037, 1038, 1039, 1041, 1042, 1043, 1044,
-     1045, 1020,  868, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
-     1029, 1030, 1031, 1032, 1021, 1033, 1034, 1035, 1036, 1037,
-     1038, 1039, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
-     1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
-     1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
-
-     1069, 1070, 1071, 1046, 1047, 1048, 1049, 1050, 1051, 1052,
-     1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062,
-     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
-     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
-     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
-     1093, 1094, 1095, 1096, 1097, 1072, 1073, 1074, 1075, 1076,
-     1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
-     1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
-     1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
-     1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
-
-     1117, 1118, 1119, 1120, 1121, 1122, 1123, 1098, 1099, 1100,
-     1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110,
-     1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120,
-     1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
-     1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140,
-     1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1124,
-     1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
-     1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
-     1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
-     1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164,
-
-     1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
-     1175, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158,
-     1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168,
-     1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178,
-     1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188,
-     1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
-     1199, 1200, 1201, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
-     1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
-     1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202,
-     1203, 1204, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1202, 1203, 1204,   44,   44,
-       47,   47,  193,  193,   43,   43,   46,   46,  192,  192,
-        3, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-
-     1205, 1205, 1205
+       93, 1058,  177,  116,  178,  189,   42,  179,  210,  117,
+       94,   42,  875,   58,  873,  187,   42,   59,   91,   55,
+       56,  114,   92,   57,  126,  115,   93,  188,  177,  116,
+      178,  189,   42,  179,  210,  117,   94,   42,  109,   58,
+       60,  187,  110,  211,   43,   43,   43,   61,   45,  111,
+       62,   63,   64,  188,   65,  112,   66,   67,  215,   68,
+       69,  814,  815,  113,  109,  190,   60,  191,  110,  211,
+      784,  192,  711,   61,  219,  111,   62,   63,   64,  226,
+
+       65,  112,   66,   67,  215,   68,   69,   70,  136,  113,
+      127,  190,  137,  191,  128,   71,   72,  192,  129,   73,
+      219,   74,  138,   75,  130,  226,   76,  230,  139,   77,
+       78,  687,  548,  520,  136,   79,  127,   80,  137,  224,
+      128,   71,   72,  225,  129,   73,  461,   74,  138,   75,
+      130,  231,   76,  230,  139,   77,   78,  193,  193,  193,
+      237,   79,  180,   80,   81,  224,  181,  216,   82,  225,
+      182,   83,   84,  217,  238,   85,   86,  231,   87,   88,
+      218,   89,  239,  439,   90,  316,  237,  273,  180,  227,
+       81,  197,  181,  216,   82,  196,  182,   83,   84,  217,
+
+      238,   85,   86,   41,   87,   88,  218,   89,  239,  131,
+       90,   95,   96,  132,  243,  140,  244,  133,  245,  141,
+       97,  134,   98,  135,   99,  100,  101,  142,  195,  143,
+      125,  144,  102,   41, 1222,  131, 1222,   95,   96,  132,
+      243,  140,  244,  133,  245,  141,   97,  134,   98,  135,
+       99,  100,  101,  142,  250,  143,  220,  144,  102,  103,
+       46,   46,   46,  212,  153,   48,  213,  104,  154,  105,
+      155,  221,  222,  106,  214,  257,  107,  258,  156,  108,
+      250, 1222,  220,  223,  157,  103, 1222,  259, 1222,  212,
+      153, 1222,  213,  104,  154,  105,  155,  221,  222,  106,
+
+      214,  257,  107,  258,  156,  108,  118,  119, 1222,  223,
+      157,  248,  120,  259,  235,  249,  121,  122,  228,  236,
+     1222,  123,  274,  124,  198,  198,  198,  198,  198,  198,
+      198,  198,  118,  119,  229, 1222, 1222,  248,  120,  232,
+      235,  249,  121,  122,  228,  236,  233,  123,  274,  124,
+      145,  183,  234,  184,  146,  275,  185,  147,  148,  186,
+      229,  149,  263,  264,  150,  232,  240,  151,  241,  246,
+      152, 1222,  233, 1222,  242, 1222,  145,  183,  234,  184,
+      146,  275,  185,  147,  148,  186,  247,  149,  263,  264,
+      150, 1222,  240,  151,  241,  246,  152,  158,  271,  159,
+
+      242,  160,  260,  276,  161,  162,  277,  278,  163,  164,
+      272,  165,  247,  166,  279,  167,  168,  169,  261,  280,
+      262,  170, 1222,  158,  271,  159, 1222,  160,  260,  276,
+      161,  162,  277,  278,  163,  164,  272,  165,  281,  166,
+      279,  167,  168,  169,  261,  280,  262,  170,  171,  282,
+      289,  284,  172,  290,  291,  173,  292,  293,  283,  285,
+      295,  296,  174,  286,  281,  175,  294,  307,  308,  309,
+      310,  314,  176, 1222,  171,  282,  289,  284,  172,  290,
+      291,  173,  292,  293,  283,  285,  295,  296,  174,  286,
+     1222,  175,  294,  307,  308,  309,  310,  314,  176,  199,
+
+       50,   50,   50,   50,   50,   50,   50,   50,  204,  204,
+      204,  204,  204,  204,  204,  204,  205,  205,  205,  205,
+      205,  205,  205,  205,  299,  315,  200,  317,  318,  300,
+      206,  206,   42,  207,  207,  207,  207,  207,  207,  207,
+      207,  208,  208,  208,  208,  208,  208,  208,  208, 1222,
+      299,  315,  200,  317,  318,  300, 1222, 1222,   42,   51,
+       51,   51,   51,   51,   51,   51,   51, 1222,  333,  334,
+      337,  201,  202,  205,  205,  205,  205,  205,  205,  205,
+      205,  297,  301,  319,  349, 1222, 1222,  345,  346,  298,
+      302,  320,  350,  303,  333,  334,  337,  201,  202,   51,
+
+       51,   51,   51,   51,   51,   51,   51,  297,  301,  319,
+      349,  203,   56,  345,  346,  298,  302,  320,  350,  303,
+      207,  207,  207,  207,  207,  207,  207,  207,  321,  335,
+      351,  336,  304,  322,  323,  305,  352,  203,   56,  209,
+      209,  209,  209,  209,  209,  209,  209,  306,  209,  209,
+      209,  209,  209,  209,  321,  335,  351,  336,  304,  322,
+      323,  305,  352, 1222,  324,  353,  325,  354,  311,  358,
+      326,  312,  361,  306,  209,  209,  209,  209,  209,  209,
+      251,  252,  253,  254,  255,  313,  327,  338, 1222,  256,
+      324,  353,  325,  354,  311,  358,  326,  312,  361, 1222,
+
+     1222, 1222,  339,  340, 1222,  341,  251,  252,  253,  254,
+      255,  313,  327,  338,  355,  256,  265, 1222,  356,  357,
+      266,  267,  362,  328,  342,  343,  268,  329,  339,  340,
+      269,  341,  347,  359,  270,  344,  330, 1222,  331,  332,
+      355,  348,  265,  360,  356,  357,  266,  267,  362,  328,
+      342,  343,  268,  329,  370,  371,  269,  375,  347,  359,
+      270,  344,  330,  363,  331,  332,  364,  348,  367,  360,
+      372,  376,  368,  365,  378, 1222,  377,  366,  369,  373,
+      370,  371,  374,  375,  379,  395,  380,  382, 1222,  363,
+     1222, 1222,  364,  381,  367,  383,  372,  376,  368,  365,
+
+      378,  384,  377,  366,  369,  373,  393,  398,  374,  385,
+      379,  395,  380,  382,  386,  396,  389,  397,  394,  381,
+      400,  383,  387,  401,  390,  399,  388,  384,  391,  402,
+      392,  403,  393,  398,  404,  385,  406,  405,  411, 1222,
+      386,  396,  389,  397,  394,  417,  400,  412,  387,  401,
+      390,  399,  388,  407,  391,  402,  392,  403,  408,  409,
+      404,  415,  406,  405,  411,  413,  422,  423,  418,  424,
+      410,  417,  419,  412,  414,  425,  420,  428,  429,  407,
+      430,  416,  426,  421,  408,  409,  431,  415,  434,  432,
+      435,  413,  422,  423,  418,  424,  410,  427,  419,  433,
+
+      414,  425,  420,  428,  429,  436,  430,  416,  426,  421,
+      437,  438,  431, 1222,  434,  432,  435,  193,  193,  193,
+      203,   56, 1222,  427,  446,  433, 1222, 1222, 1222, 1222,
+     1222,  436, 1222, 1222,  200, 1222,  437,  438,  205,  205,
+      205,  205,  205,  205,  205,  205,  203,   56,  441,  441,
+      446,  442,  442,  442,  442,  442,  442,  442,  442,  444,
+      200,  204,  204,  204,  204,  204,  204,  204,  204,  443,
+      207,  207,  207,  207,  207,  207,  207,  207, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222,  444,  447,  448,  195,  198,
+      198,  198,  198,  198,  198,  198,  198,  449, 1222,  450,
+
+      451,  201,  202,  208,  208,  208,  208,  208,  208,  208,
+      208,  452,  447,  448,  453,  440,  454,  456,  458,  459,
+      460,  462,  455,  449,  445,  450,  451,  201,  202,  463,
+      464,  457,  465,  466,  467,  468,  469,  452,  470,  471,
+      453,  440,  454,  456,  458,  459,  460,  462,  455,  472,
+      445,  473,  474,  475,  476,  463,  464,  457,  465,  466,
+      467,  468,  469,  477,  470,  471,  478,  479,  480,  481,
+      482,  483,  489,  487,  490,  472,  488,  473,  474,  475,
+      476,  484,  491,  492,  493,  485,  494,  486,  495,  477,
+      497,  496,  478,  479,  480,  481,  482,  483,  489,  487,
+
+      490,  498,  488,  499,  500,  501,  502,  484,  491,  492,
+      493,  485,  494,  486,  495,  503,  497,  496,  504,  505,
+      506,  507,  508,  509,  510,  511,  512,  498,  513,  499,
+      500,  501,  502,  514,  515,  518,  519,  521,  516,  522,
+      523,  503,  524,  525,  504,  505,  506,  507,  508,  509,
+      510,  511,  512,  517,  513,  526,  527,  528,  529,  514,
+      515,  518,  519,  521,  516,  522,  523,  530,  524,  525,
+      531,  532,  533,  534,  535,  536,  537,  538,  539,  517,
+      540,  526,  527,  528,  529,  541,  542,  544,  545,  546,
+      547,  549,  543,  530,  550,  551,  531,  532,  533,  534,
+
+      535,  536,  537,  538,  539,  552,  540,  553,  554,  555,
+      556,  541,  542,  544,  545,  546,  547,  549,  543,  557,
+      550,  551,  558,  559,  560,  561,  562,  563,  564,  565,
+      566,  552,  567,  553,  554,  555,  556,  568,  569,  570,
+      571,  572,  573,  574,  575,  557,  576,  577,  558,  559,
+      560,  561,  562,  563,  564,  565,  566,  578,  567,  581,
+      583,  579,  584,  568,  569,  570,  571,  572,  573,  574,
+      575,  580,  576,  577,  585,  586,  587,  582,  588,  589,
+      590,  591,  592,  578,  593,  581,  583,  579,  584,  594,
+      597,  598,  599,  600,  604,  595,  605,  580,  596,  606,
+
+      585,  586,  587,  582,  588,  589,  590,  591,  592,  601,
+      593,  607, 1222,  602,  610,  594,  597,  598,  599,  600,
+      604,  595,  605,  603,  596,  606,  611,  608,  612,  613,
+      614,  615,  616,  617,  618,  601,  619,  607,  609,  602,
+      610,  620,  621,  622,  623,  624,  625,  626,  627,  603,
+      628,  629,  611,  608,  612,  613,  614,  615,  616,  617,
+      618,  630,  619,  631,  609,  632,  633,  620,  621,  622,
+      623,  624,  625,  626,  627,  634,  628,  629,  635,  636,
+      637,  638,  639,  640,  641,  642,  643,  630,  644,  631,
+      645,  632,  633,  646,  647,  648,  649,  650,  651,  652,
+
+      653,  634,  654,  655,  635,  636,  637,  638,  639,  640,
+      641,  642,  643,  656,  644,  657,  645, 1222, 1222,  646,
+      647,  648,  649,  650,  651,  652,  653, 1222,  654,  655,
+      442,  442,  442,  442,  442,  442,  442,  442, 1222,  656,
+     1222,  657,   42,   42,   42,   42,   42,   42,  658,   42,
+       42,   42,   42,   42,   42,   42,   42,  659,  660,  661,
+      662,  663,  664,  665,  666,  667,  668,  669,  670,  671,
+      672,  673,  674,  675,  676,  677,  678,  679,  680,  681,
+      682,  683,  684,  659,  660,  661,  662,  663,  664,  665,
+      666,  667,  668,  669,  670,  671,  672,  673,  674,  675,
+
+      676,  677,  678,  679,  680,  681,  682,  683,  684,   42,
+       42,  685,  686,  688,  689,  690,  442,  442,  442,  442,
+      442,  442,  442,  442,  691,  692,  692,  692,  692,  692,
+      692,  692,  692, 1222,  697,  698,  699,  685,  686,  688,
+      689,  690,  693,  694,  694,  694,  694,  694,  694,  694,
+      694,  695,  696,  696,  696,  696,  696,  696,  696,  696,
+      697,  698,  699,  700,  701,  702,  703,  704,  705,  706,
+      707,  708,  709,  710,  712,  713,  714,  715,  716,  717,
+      719,  720,  721,  722,  723,  724, 1222,  718,  727,  700,
+      701,  702,  703,  704,  705,  706,  707,  708,  709,  710,
+
+      712,  713,  714,  715,  716,  717,  719,  720,  721,  722,
+      723,  724,  725,  718,  727,  728,  729,  730,  731,  732,
+      733,  736,  738,  739,  737,  726,  740,  741,  742,  743,
+      744,  747,  748,  745,  734,  749,  750,  735,  725,  746,
+      751,  728,  729,  730,  731,  732,  733,  736,  738,  739,
+      737,  726,  740,  741,  742,  743,  744,  747,  748,  745,
+      734,  749,  750,  735,  752,  746,  751,  753,  754,  755,
+      756,  757,  758,  759,  760,  761,  762,  763,  764,  765,
+      766,  767,  768,  769,  770,  771,  772,  773,  774,  775,
+      752,  778,  779,  753,  754,  755,  756,  757,  758,  759,
+
+      760,  761,  762,  763,  764,  765,  766,  767,  768,  769,
+      770,  771,  772,  773,  774,  775,  776,  778,  779,  780,
+      781,  782,  783,  785,  786,  787,  777,  788,  789,  790,
+      791,  792,  793,  794,  795,  796,  797,  798,  799,  800,
+      801,  802,  776,  803,  804,  780,  781,  782,  783,  785,
+      786,  787,  777,  788,  789,  790,  791,  792,  793,  794,
+      795,  796,  797,  798,  799,  800,  801,  802,  805,  803,
+      804,  806,  807,  808,  809,  810,  811,  812,  813,  816,
+      817,  818,  819,  820,  821,  822,  823,  824,  825,  826,
+      827,  828,  829,  830,  805,  831,  832,  806,  807,  808,
+
+      809,  810,  811,  812,  813,  816,  817,  818,  819,  820,
+      821,  822,  823,  824,  825,  826,  827,  828,  829,  830,
+      833,  831,  832,  834,  835,  836,  837,  838,  839,  840,
+      841,  842,  843,  844,  845,  846,  847,  848,  849,  850,
+      851,  852,  854,  853,  855,  856,  833,  857,  858,  834,
+      835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
+      845,  846,  847,  848,  849,  850,  851,  852,  854,  853,
+      855,  856,  859,  857,  858,  861,  862,  863,  864,  865,
+      866,  867,  868,  869,  870,  871,  874,  876,  885,  872,
+      860, 1222, 1222, 1222, 1222, 1222, 1222, 1222,  859, 1222,
+
+     1222,  861,  862,  863,  864,  865,  866,  867,  868,  869,
+      870,  871,  874,  876,  885,  872,  860,  877,  877,  877,
+      877,  877,  877,  877,  877,  878,  692,  692,  692,  692,
+      692,  692,  692,  692,  879,  879,  879,  879,  879,  879,
+      879,  879,  880,  694,  694,  694,  694,  694,  694,  694,
+      694,  882,  882,  882,  882,  882,  882,  882,  882,  886,
+      887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
+      881,  877,  877,  877,  877,  877,  877,  877,  877, 1222,
+      897,  898,  899,  900,  901,  886,  887,  888,  889,  890,
+      891,  892,  893,  894,  895,  896,  881,  883,  696,  696,
+
+      696,  696,  696,  696,  696,  696,  897,  898,  899,  900,
+      901,  902,  903,  904,  905,  906,  907,  908,  911,  912,
+      913,  914,  915,  916,  917,  884,  918,  919,  909,  920,
+      921,  922,  923,  924,  910,  925,  926,  902,  903,  904,
+      905,  906,  907,  908,  911,  912,  913,  914,  915,  916,
+      917,  884,  918,  919,  909,  920,  921,  922,  923,  924,
+      910,  925,  926,  927,  928,  929,  930,  931,  932,  933,
+      934,  935,  936,  937,  938,  939,  940,  941,  942,  943,
+      944,  945,  946,  947,  948,  949,  950,  951,  952,  927,
+      928,  929,  930,  931,  932,  933,  934,  935,  936,  937,
+
+      938,  939,  940,  941,  942,  943,  944,  945,  946,  947,
+      948,  949,  950,  951,  952,  953,  954,  955,  956,  957,
+      958,  959,  960,  961,  962,  963,  964,  965,  966,  967,
+      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
+      978,  953,  954,  955,  956,  957,  958,  959,  960,  961,
+      962,  963,  964,  965,  966,  967,  968,  969,  970,  971,
+      972,  973,  974,  975,  976,  977,  978,  979,  980,  981,
+      982,  983,  984,  985,  986,  987,  988,  989,  990,  991,
+      992,  993,  994,  995,  996,  997,  998,  999, 1000, 1001,
+     1002, 1003, 1004,  979,  980,  981,  982,  983,  984,  985,
+
+      986,  987,  988,  989,  990,  991,  992,  993,  994,  995,
+      996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005,
+     1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
+     1016, 1017, 1018, 1019, 1020,  877,  877,  877,  877,  877,
+      877,  877,  877, 1222, 1222, 1005, 1006, 1007, 1008, 1009,
+     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
+     1020,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  882,  882,  882,
+      882,  882,  882,  882,  882, 1222, 1222, 1023, 1021, 1024,
+     1025, 1026, 1027, 1028, 1029, 1030,  881, 1031, 1032, 1033,
+
+     1034, 1035, 1036, 1037, 1022,  882,  882,  882,  882,  882,
+      882,  882,  882, 1023, 1021, 1024, 1025, 1026, 1027, 1028,
+     1029, 1030,  881, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
+     1022, 1038,  884, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
+     1047, 1048, 1049, 1050, 1039, 1051, 1052, 1053, 1054, 1055,
+     1056, 1057, 1059, 1060, 1061, 1062, 1063, 1038,  884, 1040,
+     1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
+     1039, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, 1060,
+     1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070,
+     1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080,
+
+     1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
+     1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
+     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
+     1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
+     1115, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
+     1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,
+     1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
+     1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
+
+     1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138,
+     1139, 1140, 1141, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
+     1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132,
+     1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142,
+     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
+     1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
+     1163, 1164, 1165, 1166, 1167, 1142, 1143, 1144, 1145, 1146,
+     1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
+     1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
+     1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
+
+     1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186,
+     1187, 1188, 1189, 1190, 1191, 1192, 1193, 1168, 1169, 1170,
+     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180,
+     1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
+     1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,
+     1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
+     1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1194,
+     1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
+     1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
+     1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1222, 1222,
+
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1220, 1221,   44,   44,   47,   47,  194,  194,   43,
+       43,   46,   46,  193,  193,    3, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222
     } ;
 
-static yyconst flex_int16_t yy_chk[2904] =
+static yyconst flex_int16_t yy_chk[2909] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1122,319 +1126,319 @@ static yyconst flex_int16_t yy_chk[2904] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    8,    8,    8, 1206,    8,    9,    9,    9,
+        1,    1,    8,    8,    8, 1223,    8,    9,    9,    9,
       105,  105,    9,   10,   10,   10,   10,   10,   10,   10,
        10,   10,   11,   11,   11,   11,   11,   11,   11,   11,
 
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        13,   14,   18,   12,   12,   22,   18,   12,   25,   22,
-       18,  920,   34,   22,   34,   38,   53,   34,   60,   22,
-       18,   14,  891,   12,  678,   37,   13,   14,   18,   12,
+       18,  937,   34,   22,   34,   38,   53,   34,   60,   22,
+       18,   14,  687,   12,  685,   37,   13,   14,   18,   12,
        12,   22,   18,   12,   25,   22,   18,   37,   34,   22,
        34,   38,   53,   34,   60,   22,   18,   14,   21,   12,
        15,   37,   21,   61,   44,   44,   44,   15,   44,   21,
        15,   15,   15,   37,   15,   21,   15,   15,   63,   15,
-       15,  676,  543,   21,   21,   39,   15,   39,   21,   61,
-      457,   39,  429,   15,   65,   21,   15,   15,   15,   69,
+       15,  588,  588,   21,   21,   39,   15,   39,   21,   61,
+      548,   39,  461,   15,   65,   21,   15,   15,   15,   69,
 
        15,   21,   15,   15,   63,   15,   15,   16,   28,   21,
        26,   39,   28,   39,   26,   16,   16,   39,   26,   16,
        65,   16,   28,   16,   26,   69,   16,   72,   28,   16,
-       16,  314,  285,  226,   28,   16,   26,   16,   28,   68,
-       26,   16,   16,   68,   26,   16,  192,   16,   28,   16,
+       16,  433,  316,  287,   28,   16,   26,   16,   28,   68,
+       26,   16,   16,   68,   26,   16,  227,   16,   28,   16,
        26,   73,   16,   72,   28,   16,   16,   40,   40,   40,
-       76,   16,   35,   16,   17,   68,   35,   64,   17,   68,
-       35,   17,   17,   64,   77,   17,   17,   73,   17,   17,
-       64,   17,   78,  125,   17,   94,   76,   70,   35,   46,
-       17,   43,   35,   64,   17,   41,   35,   17,   17,   64,
+       77,   16,   35,   16,   17,   68,   35,   64,   17,   68,
+       35,   17,   17,   64,   78,   17,   17,   73,   17,   17,
+       64,   17,   79,  193,   17,  125,   77,   94,   35,   70,
+       17,   46,   35,   64,   17,   43,   35,   17,   17,   64,
 
-       77,   17,   17,   24,   17,   17,   64,   17,   78,   27,
-       17,   19,   19,   27,   79,   29,   82,   27,   82,   29,
+       78,   17,   17,   41,   17,   17,   64,   17,   79,   27,
+       17,   19,   19,   27,   82,   29,   82,   27,   83,   29,
        19,   27,   19,   27,   19,   19,   19,   29,   40,   29,
-        5,   29,   19,    3,    0,   27,    0,   19,   19,   27,
-       79,   29,   82,   27,   82,   29,   19,   27,   19,   27,
-       19,   19,   19,   29,   83,   29,   66,   29,   19,   20,
+       24,   29,   19,    5,    3,   27,    0,   19,   19,   27,
+       82,   29,   82,   27,   83,   29,   19,   27,   19,   27,
+       19,   19,   19,   29,   86,   29,   66,   29,   19,   20,
        47,   47,   47,   62,   31,   47,   62,   20,   31,   20,
-       31,   66,   67,   20,   62,   86,   20,   88,   31,   20,
-       83,    0,   66,   67,   31,   20,    0,   91,   91,   62,
+       31,   66,   67,   20,   62,   88,   20,   89,   31,   20,
+       86,    0,   66,   67,   31,   20,    0,   89,    0,   62,
        31,    0,   62,   20,   31,   20,   31,   66,   67,   20,
 
-       62,   86,   20,   88,   31,   20,   23,   23,    0,   67,
-       31,   85,   23,   91,   91,   85,   23,   23,   71,   84,
+       62,   88,   20,   89,   31,   20,   23,   23,    0,   67,
+       31,   85,   23,   89,   76,   85,   23,   23,   71,   76,
         0,   23,   95,   23,   49,   49,   49,   49,   49,   49,
-       49,   49,   23,   23,   71,    0,   84,   85,   23,   75,
-       96,   85,   23,   23,   71,   84,   75,   23,   95,   23,
-       30,   36,   75,   36,   30,   97,   36,   30,   30,   36,
-       71,   81,   84,   81,   30,   75,   96,   30,    0,   81,
-       30,    0,   75,    0,   98,    0,   30,   36,   75,   36,
-       30,   97,   36,   30,   30,   36,    0,   81,   89,   81,
-       30,    0,    0,   30,   90,   81,   30,   32,   89,   32,
-
-       98,   32,   99,  100,   32,   32,   93,  101,   32,   32,
-       90,   32,   90,   32,   89,   32,   32,   32,   93,  102,
-       90,   32,    0,   32,   89,   32,    0,   32,   99,  100,
-       32,   32,   93,  101,   32,   32,   90,   32,   90,   32,
-      103,   32,   32,   32,   93,  102,    0,   32,   33,  103,
-      106,  104,   33,  107,  108,   33,  108,  110,  109,  104,
-      111,  112,   33,  104,  117,   33,  103,  109,  118,  112,
-      120,  121,   33,    0,   33,  103,  106,  104,   33,  107,
-      108,   33,  108,  110,  109,  104,  111,  112,   33,  104,
-      117,   33,    0,  109,  118,  112,  120,  121,   33,   50,
+       49,   49,   23,   23,   71,    0,    0,   85,   23,   75,
+       76,   85,   23,   23,   71,   76,   75,   23,   95,   23,
+       30,   36,   75,   36,   30,   96,   36,   30,   30,   36,
+       71,   30,   91,   91,   30,   75,   81,   30,   81,   84,
+       30,    0,   75,    0,   81,    0,   30,   36,   75,   36,
+       30,   96,   36,   30,   30,   36,   84,   30,   91,   91,
+       30,    0,   81,   30,   81,   84,   30,   32,   93,   32,
+
+       81,   32,   90,   97,   32,   32,   98,   99,   32,   32,
+       93,   32,   84,   32,  100,   32,   32,   32,   90,  101,
+       90,   32,    0,   32,   93,   32,    0,   32,   90,   97,
+       32,   32,   98,   99,   32,   32,   93,   32,  102,   32,
+      100,   32,   32,   32,   90,  101,   90,   32,   33,  103,
+      106,  104,   33,  107,  108,   33,  108,  109,  103,  104,
+      110,  111,   33,  104,  102,   33,  109,  117,  118,  120,
+      121,  123,   33,    0,   33,  103,  106,  104,   33,  107,
+      108,   33,  108,  109,  103,  104,  110,  111,   33,  104,
+        0,   33,  109,  117,  118,  120,  121,  123,   33,   50,
 
        50,   50,   50,   50,   50,   50,   50,   50,   54,   54,
        54,   54,   54,   54,   54,   54,   55,   55,   55,   55,
-       55,   55,   55,   55,  114,  123,   50,  124,  126,  114,
+       55,   55,   55,   55,  114,  124,   50,  126,  127,  114,
        56,   56,   50,   56,   56,   56,   56,   56,   56,   56,
        56,   57,   57,   57,   57,   57,   57,   57,   57,    0,
-      114,  123,   50,  124,  126,  114,    0,  127,   50,   51,
-       51,   51,   51,   51,   51,   51,   51,  116,    0,    0,
-      116,   51,   51,   59,   59,   59,   59,   59,   59,   59,
-       59,  115,  116,  127,    0,    0,    0,  128,  130,  115,
-      130,  134,  115,  116,  130,  128,  116,   51,   51,   52,
-
-       52,   52,   52,   52,   52,   52,   52,  115,  116,    0,
-      130,   52,   52,  128,  130,  115,  130,  134,  115,    0,
-      130,  128,    0,    0,    0,    0,    0,    0,  139,  129,
-      122,  132,  132,  122,  129,  129,  130,   52,   52,   58,
-       58,   58,   58,   58,   58,   58,   58,  122,   58,   58,
-       58,   58,   58,   58,  139,  129,  122,  132,  132,  122,
-      129,  129,  133,    0,  133,  140,    0,    0,  137,  137,
-        0,  141,    0,  122,   58,   58,   58,   58,   58,   58,
-       87,   87,   87,   87,   87,    0,  142,    0,  133,   87,
-      133,  140,  136,  136,  137,  137,  138,  141,  131,  143,
-
-        0,  144,  131,  136,    0,  138,   87,   87,   87,   87,
-       87,  131,  142,  131,  131,   87,   92,  135,  136,  136,
-       92,   92,  138,    0,  131,  143,   92,  144,  131,  136,
-       92,  138,  135,  135,   92,  135,  146,  131,  147,  131,
-      131,  148,   92,  135,  145,  151,   92,   92,  145,  145,
-      152,    0,   92,    0,  154,    0,   92,  156,  135,  135,
-       92,  135,  146,  149,  147,    0,  149,  148,  150,    0,
-      145,  151,  150,  149,  145,  145,  152,  149,  150,  153,
-      154,  155,  158,  156,    0,  162,  155,    0,  153,  149,
-      158,  153,  149,  157,  150,  157,  158,    0,  150,  149,
-
-        0,    0,  157,  149,  150,  153,    0,  155,  158,  166,
-      159,  162,  155,  161,  153,  159,  158,  153,  160,  157,
-      164,  157,  158,  159,  167,  161,  160,  159,  157,  163,
-      160,  163,  160,  169,  165,  166,  159,  165,  164,  161,
-      168,  159,  170,  168,  160,    0,  164,  170,  175,  159,
-      167,  161,  160,  159,  171,  163,  160,  163,  160,  169,
-      165,  172,  173,  165,  164,  171,  168,  177,  170,  168,
-      172,  173,  174,  170,  175,  176,  178,  181,  179,  176,
-      171,  182,  183,  176,  179,  180,  184,  172,  173,  185,
-      176,  171,  174,  177,  186,  188,  172,  173,  174,  185,
-
-      180,  176,  178,  181,  179,  176,  189,  182,  183,  176,
-      179,  180,  184,  190,  191,  185,  176,    0,  174,    0,
-      186,  188,  193,  193,  193,  185,  180,  198,  198,    0,
-        0,    0,  189,    0,    0,    0,    0,    0,  209,  190,
-      191,  198,  201,  201,    0,  201,  201,  201,  201,  201,
-      201,  201,  201,  198,  198,  203,  203,  203,  203,  203,
-      203,  203,  203,  203,  209,  211,  212,  198,  204,  204,
-      204,  204,  204,  204,  204,  204,  205,  205,  205,  205,
-      205,  205,  205,  205,  214,  215,  216,  217,  218,  204,
-      220,  211,  212,  193,  197,  197,  197,  197,  197,  197,
-
-      197,  197,    0,  221,  220,  223,  197,  197,    0,    0,
-      214,  215,  216,  217,  218,  204,  220,  225,  227,  228,
-      197,  206,  206,  206,  206,  206,  206,  206,  206,  221,
-      220,  223,  197,  197,  207,  207,  207,  207,  207,  207,
-      207,  207,  219,  225,  227,  228,  197,  229,  219,  230,
-      231,  233,  234,  236,  235,  207,  235,  237,  238,  239,
-      240,  241,  242,  243,  244,  245,  246,  247,  219,  248,
-        0,  251,    0,  229,  219,  230,  231,  233,  234,  236,
-      235,  207,  235,  237,  238,  239,  240,  241,  242,  243,
-      244,  245,  246,  247,  249,  248,  250,  251,  249,  250,
-
-      252,  253,  254,  255,  256,  257,  258,  259,  257,  261,
-      262,  263,  264,  265,  266,  267,  268,  269,  272,  273,
-      249,  274,  250,  276,  249,  250,  252,  253,  254,  255,
-      256,  257,  258,  259,  257,  261,  262,  263,  264,  265,
-      266,  267,  268,  269,  272,  273,  277,  274,  278,  276,
-      280,  281,  282,  283,  284,  287,  288,  288,  289,  290,
-      291,  292,  294,  296,  295,  297,  299,  282,  300,  301,
-      302,  303,  277,  295,  278,  304,  280,  281,  282,  283,
-      284,  287,  288,  288,  289,  290,  291,  292,  294,  296,
-      295,  297,  299,  282,  300,  301,  302,  303,  305,  295,
-
-      306,  304,  308,  309,  310,  311,  312,  313,  315,  309,
-      316,  317,  318,  319,  320,  321,  322,  323,  326,  327,
-      329,  330,  331,  332,  305,  333,  306,  335,  308,  309,
-      310,  311,  312,  313,  315,  309,  316,  317,  318,  319,
-      320,  321,  322,  323,  326,  327,  329,  330,  331,  332,
-      336,  333,  337,  335,  338,  339,  340,  342,  344,  345,
-      347,  348,  350,  351,  352,  353,  354,  355,  356,  357,
-      358,  359,  360,  361,  363,  353,  336,  364,  337,  366,
-      338,  339,  340,  342,  344,  345,  347,  348,  350,  351,
-      352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
-
-      363,  353,  365,  364,  367,  366,  368,  369,  365,  370,
-      372,  365,  373,  370,  374,  375,  376,  377,  378,  379,
-      378,  380,  381,  370,  382,  384,  385,  376,  365,  386,
-      367,  387,  368,  369,  365,  370,  372,  365,  373,  370,
-      374,  375,  376,  377,  378,  379,  378,  380,  381,  370,
-      382,  384,  385,  376,  388,  386,  389,  387,  390,  391,
-      392,  393,  394,  395,  396,  397,  398,  399,  401,  402,
-      403,  405,  406,  407,  408,  409,  410,  411,  412,  413,
-      388,  414,  389,  415,  390,  391,  392,  393,  394,  395,
-      396,  397,  398,  399,  401,  402,  403,  405,  406,  407,
-
-      408,  409,  410,  411,  412,  413,  416,  414,  417,  415,
-      418,  419,  420,  422,  423,  423,  424,  425,  437,  437,
-      437,  437,  437,  437,  437,  437,    0,    0,    0,    0,
-        0,    0,  416,    0,  417,    0,  418,  419,  420,  422,
-      423,  423,  424,  425,  426,  426,  426,  426,  426,  426,
-      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
-      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
-      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
-      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
-      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
-
-      426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
-      426,  426,  426,  427,  428,  432,  433,  434,  438,  438,
-      438,  438,  438,  438,  438,  438,  439,  439,  439,  439,
-      439,  439,  439,  439,  439,    0,  442,  443,  444,  427,
-      428,  432,  433,  434,  440,  440,  440,  440,  440,  440,
-      440,  440,  440,  441,  441,  441,  441,  441,  441,  441,
-      441,  441,  442,  443,  444,  445,  446,  447,  448,  449,
-      450,  451,  452,  453,  454,  456,  461,  462,  463,  464,
-      465,  466,  467,  468,  469,  470,  471,  472,    0,  466,
-      474,  445,  446,  447,  448,  449,  450,  451,  452,  453,
-
-      454,  456,  461,  462,  463,  464,  465,  466,  467,  468,
-      469,  470,  471,  472,  473,  466,  474,  476,  477,  480,
-      482,  483,  484,  485,  487,  484,  488,  473,  489,  491,
-      493,  494,  496,  495,  497,  483,  498,  499,  483,  495,
-      473,  500,  501,  476,  477,  480,  482,  483,  484,  485,
-      487,  484,  488,  473,  489,  491,  493,  494,  496,  495,
-      497,  483,  498,  499,  483,  495,  502,  500,  501,  503,
-      505,  506,  507,  508,  509,  510,  512,  513,  514,  515,
-      518,  520,  521,  522,  523,  524,  527,  528,  529,  530,
-      532,    0,  502,  534,  536,  503,  505,  506,  507,  508,
-
-      509,  510,  512,  513,  514,  515,  518,  520,  521,  522,
-      523,  524,  527,  528,  529,  530,  532,  533,  537,  534,
-      536,  540,  541,  542,  544,  545,  546,  533,  547,  548,
-      550,  552,  553,  554,  555,  557,  558,  559,  560,  562,
-      563,  566,  569,  533,  537,  570,  572,  540,  541,  542,
-      544,  545,  546,  533,  547,  548,  550,  552,  553,  554,
-      555,  557,  558,  559,  560,  562,  563,  566,  569,  573,
-      574,  570,  572,  575,  576,  577,  579,  580,  581,  582,
-      583,  584,  585,  586,  587,  589,  590,  591,  592,  593,
-      594,  595,  597,  598,  599,  573,  574,  600,  601,  575,
-
-      576,  577,  579,  580,  581,  582,  583,  584,  585,  586,
-      587,  589,  590,  591,  592,  593,  594,  595,  597,  598,
-      599,  603,  605,  600,  601,  606,  607,  608,  609,  610,
-      611,  612,  616,  617,  618,  619,  620,  622,  623,  624,
-      625,  626,  627,  628,  630,    0,  632,  603,  605,  633,
-      634,  606,  607,  608,  609,  610,  611,  612,  616,  617,
-      618,  619,  620,  622,  623,  624,  625,  626,  627,  628,
-      630,  631,  632,  638,  639,  633,  634,  640,  641,  643,
-      644,  645,  646,  677,  681,  690,  646,  691,  692,  631,
-        0,    0,    0,    0,    0,    0,    0,  631,    0,  638,
-
-      639,    0,    0,  640,  641,  643,  644,  645,  646,  677,
-      681,  690,  646,  691,  692,  631,  682,  682,  682,  682,
-      682,  682,  682,  682,  683,  683,  683,  683,  683,  683,
-      683,  683,  683,  684,  684,  684,  684,  684,  684,  684,
-      684,  685,  685,  685,  685,  685,  685,  685,  685,  685,
-      686,  686,  686,  686,  686,  686,  686,  686,  694,  695,
-      696,  697,  701,  704,  705,  707,  708,  709,  710,  685,
-      861,  861,  861,  861,  861,  861,  861,  861,    0,  711,
-      712,  713,  714,  715,  694,  695,  696,  697,  701,  704,
-      705,  707,  708,  709,  710,  685,  687,  687,  687,  687,
-
-      687,  687,  687,  687,  687,  711,  712,  713,  714,  715,
-      716,  717,  718,  719,  721,  722,  723,  724,  725,  726,
-      727,  728,  730,  731,  687,  721,  732,  733,  734,  735,
-      736,  721,  738,  739,  740,  742,  716,  717,  718,  719,
-      721,  722,  723,  724,  725,  726,  727,  728,  730,  731,
-      687,  721,  732,  733,  734,  735,  736,  721,  738,  739,
-      740,  742,  743,  744,  745,  746,  747,  749,  751,  754,
-      756,  757,  758,  759,  760,  761,  762,  763,  764,  765,
-      766,  767,  768,  770,  771,  772,  773,  775,  743,  744,
-      745,  746,  747,  749,  751,  754,  756,  757,  758,  759,
-
-      760,  761,  762,  763,  764,  765,  766,  767,  768,  770,
-      771,  772,  773,  775,  777,  779,  780,  782,  783,  784,
-      785,  786,  787,  788,  789,  790,  792,  793,  794,  795,
-      797,  798,  800,  802,  803,  804,  805,  807,  808,  809,
-      777,  779,  780,  782,  783,  784,  785,  786,  787,  788,
-      789,  790,  792,  793,  794,  795,  797,  798,  800,  802,
-      803,  804,  805,  807,  808,  809,  810,  811,  812,  813,
-      815,  816,  818,  819,  820,  822,  824,  825,  826,  827,
-      832,  833,  834,  835,  836,  837,  838,  839,  841,  843,
-      844,  845,  810,  811,  812,  813,  815,  816,  818,  819,
-
-      820,  822,  824,  825,  826,  827,  832,  833,  834,  835,
-      836,  837,  838,  839,  841,  843,  844,  845,  846,  847,
-      848,  849,  850,  851,  853,  854,  855,  856,  860,  862,
-      862,  862,  862,  862,  862,  862,  862,    0,    0,    0,
-        0,    0,    0,    0,  846,  847,  848,  849,  850,  851,
-      853,  854,  855,  856,  860,  863,  863,  863,  863,  863,
-      863,  863,  863,  864,  864,  864,  864,  864,  864,  864,
-      864,  866,  866,  866,  866,  866,  866,  866,  866,    0,
-        0,  869,  863,  870,  871,  872,  876,  877,  879,  881,
-      864,  884,  886,  887,  889,  890,  892,  893,  866,  867,
-
-      867,  867,  867,  867,  867,  867,  867,  869,  863,  870,
-      871,  872,  876,  877,  879,  881,  864,  884,  886,  887,
-      889,  890,  892,  893,  866,  894,  867,  895,  896,  897,
-      898,  899,  900,  901,  904,  906,  907,  908,  894,  909,
-      910,  912,  913,  914,  915,  917,  921,  922,  923,  925,
-      929,  894,  867,  895,  896,  897,  898,  899,  900,  901,
-      904,  906,  907,  908,  894,  909,  910,  912,  913,  914,
-      915,  917,  921,  922,  923,  925,  929,  930,  931,  932,
-      933,  934,  935,  936,  937,  938,  941,  943,  945,  948,
-      957,  958,  959,  960,  961,  962,  963,  964,  967,  968,
-
-      969,  972,  974,  930,  931,  932,  933,  934,  935,  936,
-      937,  938,  941,  943,  945,  948,  957,  958,  959,  960,
-      961,  962,  963,  964,  967,  968,  969,  972,  974,  975,
-      977,  980,  982,  983,  985,  987,  988,  989,  992,  993,
-      995,  998, 1000, 1005, 1006, 1009, 1010, 1011, 1012, 1014,
-     1015, 1017, 1018, 1019, 1020,  975,  977,  980,  982,  983,
-      985,  987,  988,  989,  992,  993,  995,  998, 1000, 1005,
-     1006, 1009, 1010, 1011, 1012, 1014, 1015, 1017, 1018, 1019,
-     1020, 1021, 1024, 1025, 1027, 1028, 1029, 1030, 1035, 1037,
-     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1048,
-
-     1049, 1053, 1055, 1056, 1058, 1059, 1062, 1021, 1024, 1025,
-     1027, 1028, 1029, 1030, 1035, 1037, 1038, 1039, 1040, 1041,
-     1042, 1043, 1044, 1045, 1046, 1048, 1049, 1053, 1055, 1056,
-     1058, 1059, 1062, 1063, 1064, 1065, 1066, 1068, 1069, 1070,
-     1071, 1073, 1074, 1077, 1078, 1080, 1081, 1082, 1083, 1085,
-     1086, 1088, 1089, 1090, 1092, 1097, 1098, 1099, 1102, 1063,
-     1064, 1065, 1066, 1068, 1069, 1070, 1071, 1073, 1074, 1077,
-     1078, 1080, 1081, 1082, 1083, 1085, 1086, 1088, 1089, 1090,
-     1092, 1097, 1098, 1099, 1102, 1103, 1107, 1108, 1114, 1116,
-     1117, 1118, 1119, 1120, 1123, 1125, 1127, 1129, 1131, 1132,
-
-     1134, 1136, 1137, 1138, 1143, 1145, 1146, 1147, 1149, 1151,
-     1152, 1103, 1107, 1108, 1114, 1116, 1117, 1118, 1119, 1120,
-     1123, 1125, 1127, 1129, 1131, 1132, 1134, 1136, 1137, 1138,
-     1143, 1145, 1146, 1147, 1149, 1151, 1152, 1153, 1155, 1157,
-     1159, 1160, 1161, 1162, 1163, 1164, 1165, 1167, 1168, 1173,
-     1174, 1176, 1178, 1181, 1184, 1185, 1186, 1189, 1190, 1191,
-     1194, 1195, 1196, 1153, 1155, 1157, 1159, 1160, 1161, 1162,
-     1163, 1164, 1165, 1167, 1168, 1173, 1174, 1176, 1178, 1181,
-     1184, 1185, 1186, 1189, 1190, 1191, 1194, 1195, 1196, 1197,
-     1199, 1201,    0,    0,    0,    0,    0,    0,    0,    0,
+      114,  124,   50,  126,  127,  114,    0,    0,   50,   51,
+       51,   51,   51,   51,   51,   51,   51,    0,  132,  132,
+      134,   51,   51,   59,   59,   59,   59,   59,   59,   59,
+       59,  112,  115,  128,  139,    0,    0,  137,  137,  112,
+      115,  128,  140,  115,  132,  132,  134,   51,   51,   52,
+
+       52,   52,   52,   52,   52,   52,   52,  112,  115,  128,
+      139,   52,   52,  137,  137,  112,  115,  128,  140,  115,
+      206,  206,  206,  206,  206,  206,  206,  206,  129,  133,
+      141,  133,  116,  129,  129,  116,  142,   52,   52,   58,
+       58,   58,   58,   58,   58,   58,   58,  116,   58,   58,
+       58,   58,   58,   58,  129,  133,  141,  133,  116,  129,
+      129,  116,  142,    0,  130,  143,  130,  144,  122,  146,
+      130,  122,  148,  116,   58,   58,   58,   58,   58,   58,
+       87,   87,   87,   87,   87,  122,  130,  135,    0,   87,
+      130,  143,  130,  144,  122,  146,  130,  122,  148,    0,
+
+        0,    0,  135,  135,    0,  135,   87,   87,   87,   87,
+       87,  122,  130,  135,  145,   87,   92,    0,  145,  145,
+       92,   92,  149,  131,  136,  136,   92,  131,  135,  135,
+       92,  135,  138,  147,   92,  136,  131,    0,  131,  131,
+      145,  138,   92,  147,  145,  145,   92,   92,  149,  131,
+      136,  136,   92,  131,  152,  153,   92,  155,  138,  147,
+       92,  136,  131,  150,  131,  131,  150,  138,  151,  147,
+      154,  156,  151,  150,  157,    0,  156,  150,  151,  154,
+      152,  153,  154,  155,  158,  163,  158,  159,    0,  150,
+        0,    0,  150,  158,  151,  159,  154,  156,  151,  150,
+
+      157,  159,  156,  150,  151,  154,  162,  165,  154,  160,
+      158,  163,  158,  159,  160,  164,  161,  164,  162,  158,
+      166,  159,  160,  166,  161,  165,  160,  159,  161,  167,
+      161,  168,  162,  165,  169,  160,  170,  169,  173,    0,
+      160,  164,  161,  164,  162,  176,  166,  173,  160,  166,
+      161,  165,  160,  171,  161,  167,  161,  168,  171,  172,
+      169,  175,  170,  169,  173,  174,  178,  179,  177,  180,
+      172,  176,  177,  173,  174,  180,  177,  182,  183,  171,
+      184,  175,  181,  177,  171,  172,  185,  175,  187,  186,
+      189,  174,  178,  179,  177,  180,  172,  181,  177,  186,
+
+      174,  180,  177,  182,  183,  190,  184,  175,  181,  177,
+      191,  192,  185,    0,  187,  186,  189,  194,  194,  194,
+      199,  199,    0,  181,  210,  186,    0,    0,    0,    0,
+        0,  190,    0,    0,  199,    0,  191,  192,  205,  205,
+      205,  205,  205,  205,  205,  205,  199,  199,  202,  202,
+      210,  202,  202,  202,  202,  202,  202,  202,  202,  205,
+      199,  204,  204,  204,  204,  204,  204,  204,  204,  204,
+      207,  207,  207,  207,  207,  207,  207,  207,    0,    0,
+        0,    0,    0,    0,    0,  205,  212,  213,  194,  198,
+      198,  198,  198,  198,  198,  198,  198,  215,    0,  216,
+
+      217,  198,  198,  208,  208,  208,  208,  208,  208,  208,
+      208,  218,  212,  213,  219,  198,  220,  221,  222,  224,
+      226,  228,  220,  215,  208,  216,  217,  198,  198,  229,
+      230,  221,  231,  232,  234,  235,  237,  218,  237,  238,
+      219,  198,  220,  221,  222,  224,  226,  228,  220,  239,
+      208,  240,  241,  242,  243,  229,  230,  221,  231,  232,
+      234,  235,  237,  244,  237,  238,  245,  246,  247,  248,
+      249,  250,  253,  252,  254,  239,  252,  240,  241,  242,
+      243,  251,  255,  256,  257,  251,  258,  251,  259,  244,
+      260,  259,  245,  246,  247,  248,  249,  250,  253,  252,
+
+      254,  261,  252,  263,  264,  265,  266,  251,  255,  256,
+      257,  251,  258,  251,  259,  267,  260,  259,  268,  269,
+      270,  271,  274,  275,  276,  278,  279,  261,  280,  263,
+      264,  265,  266,  282,  283,  285,  286,  289,  284,  290,
+      290,  267,  291,  292,  268,  269,  270,  271,  274,  275,
+      276,  278,  279,  284,  280,  293,  294,  296,  297,  282,
+      283,  285,  286,  289,  284,  290,  290,  297,  291,  292,
+      298,  299,  301,  302,  303,  304,  305,  306,  307,  284,
+      308,  293,  294,  296,  297,  310,  311,  312,  313,  314,
+      315,  317,  311,  297,  318,  319,  298,  299,  301,  302,
+
+      303,  304,  305,  306,  307,  320,  308,  321,  322,  323,
+      324,  310,  311,  312,  313,  314,  315,  317,  311,  325,
+      318,  319,  328,  329,  331,  332,  333,  334,  335,  337,
+      338,  320,  339,  321,  322,  323,  324,  340,  341,  342,
+      344,  346,  347,  349,  350,  325,  352,  353,  328,  329,
+      331,  332,  333,  334,  335,  337,  338,  354,  339,  356,
+      357,  355,  358,  340,  341,  342,  344,  346,  347,  349,
+      350,  355,  352,  353,  359,  360,  361,  356,  362,  363,
+      364,  365,  367,  354,  368,  356,  357,  355,  358,  369,
+      370,  371,  372,  373,  376,  369,  377,  355,  369,  378,
+
+      359,  360,  361,  356,  362,  363,  364,  365,  367,  374,
+      368,  379,    0,  374,  381,  369,  370,  371,  372,  373,
+      376,  369,  377,  374,  369,  378,  382,  380,  382,  383,
+      384,  385,  386,  388,  389,  374,  389,  379,  380,  374,
+      381,  390,  391,  392,  393,  394,  395,  396,  397,  374,
+      398,  399,  382,  380,  382,  383,  384,  385,  386,  388,
+      389,  400,  389,  401,  380,  402,  403,  390,  391,  392,
+      393,  394,  395,  396,  397,  405,  398,  399,  406,  407,
+      409,  410,  411,  412,  413,  414,  415,  400,  416,  401,
+      417,  402,  403,  418,  419,  420,  421,  422,  423,  424,
+
+      426,  405,  427,  427,  406,  407,  409,  410,  411,  412,
+      413,  414,  415,  428,  416,  429,  417,    0,    0,  418,
+      419,  420,  421,  422,  423,  424,  426,    0,  427,  427,
+      441,  441,  441,  441,  441,  441,  441,  441,    0,  428,
+        0,  429,  430,  430,  430,  430,  430,  430,  430,  430,
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+      430,  431,  432,  436,  437,  438,  442,  442,  442,  442,
+      442,  442,  442,  442,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,    0,  446,  447,  448,  431,  432,  436,
+      437,  438,  444,  444,  444,  444,  444,  444,  444,  444,
+      444,  445,  445,  445,  445,  445,  445,  445,  445,  445,
+      446,  447,  448,  449,  450,  451,  452,  453,  454,  455,
+      456,  457,  458,  460,  465,  466,  467,  468,  469,  470,
+      471,  472,  473,  474,  475,  476,    0,  470,  478,  449,
+      450,  451,  452,  453,  454,  455,  456,  457,  458,  460,
+
+      465,  466,  467,  468,  469,  470,  471,  472,  473,  474,
+      475,  476,  477,  470,  478,  480,  481,  484,  486,  487,
+      488,  489,  490,  492,  489,  477,  493,  494,  496,  498,
+      499,  501,  502,  500,  488,  503,  504,  488,  477,  500,
+      505,  480,  481,  484,  486,  487,  488,  489,  490,  492,
+      489,  477,  493,  494,  496,  498,  499,  501,  502,  500,
+      488,  503,  504,  488,  506,  500,  505,  507,  508,  510,
+      511,  512,  513,  514,  515,  517,  518,  519,  520,  523,
+      525,  526,  527,  528,  529,  532,  533,  534,  535,  537,
+      506,  539,  541,  507,  508,  510,  511,  512,  513,  514,
+
+      515,  517,  518,  519,  520,  523,  525,  526,  527,  528,
+      529,  532,  533,  534,  535,  537,  538,  539,  541,  542,
+      545,  546,  547,  549,  550,  551,  538,  552,  553,  555,
+      557,  558,  559,  560,  562,  563,  564,  565,  567,  568,
+      571,  574,  538,  575,  577,  542,  545,  546,  547,  549,
+      550,  551,  538,  552,  553,  555,  557,  558,  559,  560,
+      562,  563,  564,  565,  567,  568,  571,  574,  578,  575,
+      577,  579,  580,  581,  582,  583,  585,  586,  587,  589,
+      590,  591,  592,  593,  594,  595,  597,  598,  599,  600,
+      601,  602,  603,  605,  578,  606,  607,  579,  580,  581,
+
+      582,  583,  585,  586,  587,  589,  590,  591,  592,  593,
+      594,  595,  597,  598,  599,  600,  601,  602,  603,  605,
+      608,  606,  607,  609,  611,  613,  614,  615,  616,  617,
+      618,  619,  620,  621,  625,  626,  627,  628,  629,  631,
+      632,  633,  634,  633,  635,  636,  608,  637,  639,  609,
+      611,  613,  614,  615,  616,  617,  618,  619,  620,  621,
+      625,  626,  627,  628,  629,  631,  632,  633,  634,  633,
+      635,  636,  640,  637,  639,  641,  642,  643,  647,  648,
+      649,  650,  652,  653,  654,  655,  686,  690,  699,  655,
+      640,    0,    0,    0,    0,    0,    0,    0,  640,    0,
+
+        0,  641,  642,  643,  647,  648,  649,  650,  652,  653,
+      654,  655,  686,  690,  699,  655,  640,  691,  691,  691,
+      691,  691,  691,  691,  691,  692,  692,  692,  692,  692,
+      692,  692,  692,  692,  693,  693,  693,  693,  693,  693,
+      693,  693,  694,  694,  694,  694,  694,  694,  694,  694,
+      694,  695,  695,  695,  695,  695,  695,  695,  695,  700,
+      701,  703,  704,  705,  706,  710,  713,  714,  716,  717,
+      694,  877,  877,  877,  877,  877,  877,  877,  877,    0,
+      718,  719,  720,  721,  722,  700,  701,  703,  704,  705,
+      706,  710,  713,  714,  716,  717,  694,  696,  696,  696,
+
+      696,  696,  696,  696,  696,  696,  718,  719,  720,  721,
+      722,  723,  724,  725,  726,  727,  728,  730,  731,  732,
+      733,  734,  735,  736,  737,  696,  738,  740,  730,  741,
+      742,  743,  744,  745,  730,  746,  748,  723,  724,  725,
+      726,  727,  728,  730,  731,  732,  733,  734,  735,  736,
+      737,  696,  738,  740,  730,  741,  742,  743,  744,  745,
+      730,  746,  748,  749,  750,  752,  753,  754,  755,  756,
+      757,  759,  761,  764,  766,  767,  768,  769,  770,  771,
+      772,  773,  774,  775,  776,  777,  778,  780,  781,  749,
+      750,  752,  753,  754,  755,  756,  757,  759,  761,  764,
+
+      766,  767,  768,  769,  770,  771,  772,  773,  774,  775,
+      776,  777,  778,  780,  781,  782,  783,  785,  787,  789,
+      790,  792,  793,  794,  795,  796,  797,  798,  799,  800,
+      802,  803,  804,  805,  807,  809,  812,  814,  815,  816,
+      817,  782,  783,  785,  787,  789,  790,  792,  793,  794,
+      795,  796,  797,  798,  799,  800,  802,  803,  804,  805,
+      807,  809,  812,  814,  815,  816,  817,  818,  819,  821,
+      822,  823,  824,  825,  826,  827,  829,  830,  832,  833,
+      834,  836,  838,  839,  840,  842,  847,  848,  849,  850,
+      851,  853,  854,  818,  819,  821,  822,  823,  824,  825,
+
+      826,  827,  829,  830,  832,  833,  834,  836,  838,  839,
+      840,  842,  847,  848,  849,  850,  851,  853,  854,  855,
+      857,  859,  860,  861,  862,  863,  864,  865,  866,  867,
+      869,  870,  871,  872,  876,  878,  878,  878,  878,  878,
+      878,  878,  878,    0,    0,  855,  857,  859,  860,  861,
+      862,  863,  864,  865,  866,  867,  869,  870,  871,  872,
+      876,  879,  879,  879,  879,  879,  879,  879,  879,  880,
+      880,  880,  880,  880,  880,  880,  880,  882,  882,  882,
+      882,  882,  882,  882,  882,    0,    0,  885,  879,  886,
+      887,  888,  892,  893,  895,  897,  880,  900,  902,  903,
+
+      905,  906,  908,  909,  882,  883,  883,  883,  883,  883,
+      883,  883,  883,  885,  879,  886,  887,  888,  892,  893,
+      895,  897,  880,  900,  902,  903,  905,  906,  908,  909,
+      882,  910,  883,  912,  913,  914,  915,  916,  917,  918,
+      921,  923,  924,  925,  910,  926,  927,  929,  930,  931,
+      932,  934,  938,  939,  940,  942,  946,  910,  883,  912,
+      913,  914,  915,  916,  917,  918,  921,  923,  924,  925,
+      910,  926,  927,  929,  930,  931,  932,  934,  938,  939,
+      940,  942,  946,  947,  948,  949,  950,  951,  952,  953,
+      954,  955,  958,  960,  962,  965,  974,  977,  978,  979,
+
+      980,  981,  982,  983,  986,  987,  988,  991,  993,  947,
+      948,  949,  950,  951,  952,  953,  954,  955,  958,  960,
+      962,  965,  974,  977,  978,  979,  980,  981,  982,  983,
+      986,  987,  988,  991,  993,  994,  996,  999, 1001, 1002,
+     1004, 1006, 1007, 1008, 1011, 1012, 1014, 1017, 1019, 1024,
+     1025, 1028, 1029, 1030, 1031, 1033, 1034, 1036, 1037, 1038,
+     1039,  994,  996,  999, 1001, 1002, 1004, 1006, 1007, 1008,
+     1011, 1012, 1014, 1017, 1019, 1024, 1025, 1028, 1029, 1030,
+     1031, 1033, 1034, 1036, 1037, 1038, 1039, 1042, 1043, 1045,
+     1046, 1047, 1048, 1053, 1055, 1056, 1057, 1058, 1059, 1060,
+
+     1061, 1062, 1063, 1064, 1066, 1067, 1071, 1073, 1074, 1076,
+     1077, 1080, 1081, 1042, 1043, 1045, 1046, 1047, 1048, 1053,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1066, 1067, 1071, 1073, 1074, 1076, 1077, 1080, 1081, 1082,
+     1083, 1084, 1086, 1087, 1088, 1089, 1091, 1092, 1095, 1096,
+     1098, 1099, 1100, 1101, 1103, 1104, 1106, 1107, 1108, 1110,
+     1114, 1115, 1116, 1119, 1120, 1082, 1083, 1084, 1086, 1087,
+     1088, 1089, 1091, 1092, 1095, 1096, 1098, 1099, 1100, 1101,
+     1103, 1104, 1106, 1107, 1108, 1110, 1114, 1115, 1116, 1119,
+     1120, 1124, 1125, 1131, 1133, 1134, 1135, 1136, 1137, 1140,
+
+     1142, 1144, 1146, 1148, 1149, 1151, 1153, 1154, 1155, 1160,
+     1162, 1163, 1164, 1166, 1168, 1169, 1170, 1124, 1125, 1131,
+     1133, 1134, 1135, 1136, 1137, 1140, 1142, 1144, 1146, 1148,
+     1149, 1151, 1153, 1154, 1155, 1160, 1162, 1163, 1164, 1166,
+     1168, 1169, 1170, 1172, 1174, 1176, 1177, 1178, 1179, 1180,
+     1181, 1182, 1184, 1185, 1190, 1191, 1193, 1195, 1198, 1201,
+     1202, 1203, 1206, 1207, 1208, 1211, 1212, 1213, 1214, 1172,
+     1174, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1184, 1185,
+     1190, 1191, 1193, 1195, 1198, 1201, 1202, 1203, 1206, 1207,
+     1208, 1211, 1212, 1213, 1214, 1216, 1218,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0, 1197, 1199, 1201, 1207, 1207,
-     1208, 1208, 1209, 1209, 1210, 1210, 1211, 1211, 1212, 1212,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-     1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
-
-     1205, 1205, 1205
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0, 1216, 1218, 1224, 1224, 1225, 1225, 1226, 1226, 1227,
+     1227, 1228, 1228, 1229, 1229, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
+
+     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1460,7 +1464,7 @@ static yyconst flex_int16_t yy_chk[2904] =
 
   extern YYSTYPE* frlval;
 /* rules */
-#line 1464 "lex.C"
+#line 1468 "lex.C"
 
 #define INITIAL 0
 
@@ -1563,7 +1567,7 @@ YY_DECL
 #line 28 "lex.L"
 
 
-#line 1567 "lex.C"
+#line 1571 "lex.C"
 
 	if ( !(yy_init) )
 		{
@@ -1616,13 +1620,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 1206 )
+				if ( yy_current_state >= 1223 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 1205 );
+		while ( yy_current_state != 1222 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1795,92 +1799,92 @@ YY_RULE_SETUP
 case 31:
 YY_RULE_SETUP
 #line 60 "lex.L"
-{return BLOCK_;}
+{return BLT_;}
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 61 "lex.L"
-{return BOX_;}
+{return BLOCK_;}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 62 "lex.L"
-{return BOXANNULUS_;}
+{return BOX_;}
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 63 "lex.L"
-{return BOXCAR_;}
+{return BOXANNULUS_;}
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 64 "lex.L"
-{return BOXCIRCLE_;}
+{return BOXCAR_;}
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 65 "lex.L"
-{return BPANDA_;}
+{return BOXCIRCLE_;}
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 66 "lex.L"
-{return BUFFER_;}
+{return BPANDA_;}
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 67 "lex.L"
-{return BW_;}
+{return BUFFER_;}
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 68 "lex.L"
-{return CALLBACK_;}
+{return BW_;}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 69 "lex.L"
-{return CANVAS_;}
+{return CALLBACK_;}
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 70 "lex.L"
-{return CATALOG_;}
+{return CANVAS_;}
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 71 "lex.L"
-{return CELESTRIAL_;}
+{return CATALOG_;}
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 72 "lex.L"
-{return CENTER_;}
+{return CELESTRIAL_;}
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 73 "lex.L"
-{return CENTROID_;}
+{return CENTER_;}
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 74 "lex.L"
-{return CHANNEL_;}
+{return CENTROID_;}
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 75 "lex.L"
-{return CIAO_;}
+{return CHANNEL_;}
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 76 "lex.L"
-{return CIRCLE_;}
+{return CIAO_;}
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 77 "lex.L"
-{return CIRCLE3D_;}
+{return CIRCLE_;}
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
@@ -1925,1346 +1929,1381 @@ YY_RULE_SETUP
 case 57:
 YY_RULE_SETUP
 #line 86 "lex.L"
-{return COMMAND_;}
+{return COLUMN_;}
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 87 "lex.L"
-{return COMPASS_;}
+{return COMMAND_;}
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 88 "lex.L"
-{return COMPOSITE_;}
+{return COMPASS_;}
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 89 "lex.L"
-{return COMPRESS_;}
+{return COMPOSITE_;}
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 90 "lex.L"
-{return CONTOUR_;}
+{return COMPRESS_;}
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 91 "lex.L"
-{return CONTRAST_;}
+{return CONTOUR_;}
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 92 "lex.L"
-{return COORDINATES_;}
+{return CONTRAST_;}
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 93 "lex.L"
-{return COPY_;}
+{return COORDINATES_;}
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 94 "lex.L"
-{return COUNT_;}
+{return COPY_;}
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 95 "lex.L"
-{return CROP_;}
+{return COUNT_;}
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 96 "lex.L"
-{return CROSS_;}
+{return CROP_;}
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 97 "lex.L"
-{return CPANDA_;}
+{return CROSS_;}
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 98 "lex.L"
-{return CREATE_;}
+{return CPANDA_;}
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 99 "lex.L"
-{return CROSSHAIR_;}
+{return CREATE_;}
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 100 "lex.L"
-{return CUBE_;}
+{return CROSSHAIR_;}
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 101 "lex.L"
-{return CURSOR_;}
+{return CUBE_;}
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 102 "lex.L"
-{return CUT_;}
+{return CURSOR_;}
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 103 "lex.L"
-{return CMYK_;}
+{return CUT_;}
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 104 "lex.L"
-{return DASH_;}
+{return CMYK_;}
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 105 "lex.L"
-{return DASHLIST_;}
+{return DASH_;}
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 106 "lex.L"
-{return DATA_;}
+{return DASHLIST_;}
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 107 "lex.L"
-{return DATAMIN_;}
+{return DATA_;}
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 108 "lex.L"
-{return DATASEC_;}
+{return DATAMIN_;}
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 109 "lex.L"
-{return DEBUG_;}
+{return DATASEC_;}
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 110 "lex.L"
-{return DEGREES_;}
+{return DEBUG_;}
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 111 "lex.L"
-{return DEFAULT_;}
+{return DEGREES_;}
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 112 "lex.L"
-{return DELETE_;}
+{return DEFAULT_;}
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 113 "lex.L"
-{return DEPTH_;}
+{return DELETE_;}
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 114 "lex.L"
-{return DETECTOR_;}
+{return DEPTH_;}
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 115 "lex.L"
-{return DIAMOND_;}
+{return DETECTOR_;}
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 116 "lex.L"
-{return DIM_;}
+{return DIAMOND_;}
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 117 "lex.L"
-{return DS9_;}
+{return DIM_;}
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 118 "lex.L"
-{return ECLIPTIC_;}
+{return DS9_;}
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 119 "lex.L"
-{return ELLIPSE_;}
+{return ECLIPTIC_;}
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 120 "lex.L"
-{return ELLIPSEANNULUS_;}
+{return ELLIPSE_;}
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 121 "lex.L"
-{return EDIT_;}
+{return ELLIPSEANNULUS_;}
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 122 "lex.L"
-{return END_;}
+{return EDIT_;}
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 123 "lex.L"
-{return EPANDA_;}
+{return END_;}
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 124 "lex.L"
-{return EQUATORIAL_;}
+{return EPANDA_;}
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 125 "lex.L"
-{return ERASE_;}
+{return EQUATORIAL_;}
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 126 "lex.L"
-{return EXT_;}
+{return ERASE_;}
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 127 "lex.L"
-{return FACTOR_;}
+{return EXT_;}
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 128 "lex.L"
-{return FALSE_;}
+{return FACTOR_;}
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 129 "lex.L"
-{return FILE_;}
+{return FALSE_;}
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 130 "lex.L"
-{return FILTER_;}
+{return FILE_;}
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 131 "lex.L"
-{return FIT_;}
+{return FILTER_;}
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 132 "lex.L"
-{return FITS_;}
+{return FIT_;}
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 133 "lex.L"
-{return FITSY_;}
+{return FITS_;}
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 134 "lex.L"
-{return FIXED_;}
+{return FITSY_;}
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 135 "lex.L"
-{return FK4_;}
+{return FIXED_;}
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 136 "lex.L"
-{return FK4_NO_E_;}
+{return FK4_;}
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 137 "lex.L"
-{return FK5_;}
+{return FK4_NO_E_;}
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 138 "lex.L"
-{return FONT_;}
+{return FK5_;}
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 139 "lex.L"
-{return FROM_;}
+{return FONT_;}
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 140 "lex.L"
-{return FRONT_;}
+{return FROM_;}
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 141 "lex.L"
-{return FULL_;}
+{return FRONT_;}
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 142 "lex.L"
-{return FUNCTION_;}
+{return FULL_;}
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 143 "lex.L"
-{return GALACTIC_;}
+{return FUNCTION_;}
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 144 "lex.L"
-{return GAUSSIAN_;}
+{return GALACTIC_;}
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 145 "lex.L"
-{return GET_;}
+{return GAUSSIAN_;}
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 146 "lex.L"
-{return GLOBAL_;}
+{return GET_;}
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 147 "lex.L"
-{return GRAPHICS_;}
+{return GLOBAL_;}
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 148 "lex.L"
-{return GRAY_;}
+{return GRAPHICS_;}
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 149 "lex.L"
-{return GRID_;}
+{return GRAY_;}
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 150 "lex.L"
-{return GZ_;}
+{return GRID_;}
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 151 "lex.L"
-{return HANDLE_;}
+{return GZ_;}
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 152 "lex.L"
-{return HAS_;}
+{return HANDLE_;}
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 153 "lex.L"
-{return HEAD_;}
+{return HAS_;}
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 154 "lex.L"
-{return HEADER_;}
+{return HEAD_;}
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 155 "lex.L"
-{return HEIGHT_;}
+{return HEADER_;}
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 156 "lex.L"
-{return HELIOECLIPTIC_;}
+{return HEIGHT_;}
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 157 "lex.L"
-{return HIDE_;}
+{return HELIOECLIPTIC_;}
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 158 "lex.L"
-{return HIGH_;}
+{return HIDE_;}
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 159 "lex.L"
-{return HIGHLITE_;}
+{return HIGH_;}
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 160 "lex.L"
-{return HISTEQU_;}
+{return HIGHLITE_;}
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 161 "lex.L"
-{return HISTOGRAM_;}
+{return HISTEQU_;}
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 162 "lex.L"
-{return HORIZONTAL_;}
+{return HISTOGRAM_;}
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 163 "lex.L"
-{return ICRS_;}
+{return HORIZONTAL_;}
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 164 "lex.L"
-{return ID_;}
+{return ICRS_;}
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 165 "lex.L"
-{return IIS_;}
+{return ID_;}
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 166 "lex.L"
-{return IMAGE_;}
+{return IIS_;}
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 167 "lex.L"
-{return INCLUDE_;}
+{return IMAGE_;}
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 168 "lex.L"
-{return INCR_;}
+{return INCLUDE_;}
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 169 "lex.L"
-{return INFO_;}
+{return INCR_;}
 	YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 170 "lex.L"
-{return INTEGER_;}
+{return INFO_;}
 	YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 171 "lex.L"
-{return ITERATION_;}
+{return INTEGER_;}
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 172 "lex.L"
-{return IRAF_;}
+{return ITERATION_;}
 	YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 173 "lex.L"
-{return IRAFMIN_;}
+{return IRAF_;}
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 174 "lex.L"
-{return J2000_;}
+{return IRAFMIN_;}
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 175 "lex.L"
-{return KEY_;}
+{return J2000_;}
 	YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 176 "lex.L"
-{return KEYWORD_;}
+{return KEY_;}
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 177 "lex.L"
-{return LABEL_;}
+{return KEYWORD_;}
 	YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 178 "lex.L"
-{return LENGTH_;}
+{return LABEL_;}
 	YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 179 "lex.L"
-{return LEVEL_;}
+{return LENGTH_;}
 	YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 180 "lex.L"
-{return LITTLEENDIAN_;}
+{return LEVEL_;}
 	YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 181 "lex.L"
-{return LINE_;}
+{return LITTLEENDIAN_;}
 	YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 182 "lex.L"
-{return LINEAR_;}
+{return LINE_;}
 	YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 183 "lex.L"
-{return LIST_;}
+{return LINEAR_;}
 	YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 184 "lex.L"
-{return LOAD_;}
+{return LIST_;}
 	YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 185 "lex.L"
-{return LOCAL_;}
+{return LOAD_;}
 	YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 186 "lex.L"
-{return LOG_;}
+{return LOCAL_;}
 	YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 187 "lex.L"
-{return LOW_;}
+{return LOG_;}
 	YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 188 "lex.L"
-{return MACOSX_;}
+{return LOW_;}
 	YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 189 "lex.L"
-{return MAGNIFIER_;}
+{return MACOSX_;}
 	YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 190 "lex.L"
-{return MAP_;}
+{return MAGNIFIER_;}
 	YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 191 "lex.L"
-{return MARK_;}
+{return MAP_;}
 	YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 192 "lex.L"
-{return MARKER_;}
+{return MARK_;}
 	YY_BREAK
 case 164:
 YY_RULE_SETUP
 #line 193 "lex.L"
-{return MASK_;}
+{return MARKER_;}
 	YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 194 "lex.L"
-{return MESSAGE_;}
+{return MASK_;}
 	YY_BREAK
 case 166:
 YY_RULE_SETUP
 #line 195 "lex.L"
-{return METHOD_;}
+{return MESSAGE_;}
 	YY_BREAK
 case 167:
 YY_RULE_SETUP
 #line 196 "lex.L"
-{return MINMAX_;}
+{return METHOD_;}
 	YY_BREAK
 case 168:
 YY_RULE_SETUP
 #line 197 "lex.L"
-{return MIP_;}
+{return MINMAX_;}
 	YY_BREAK
 case 169:
 YY_RULE_SETUP
 #line 198 "lex.L"
-{return MMAP_;}
+{return MIP_;}
 	YY_BREAK
 case 170:
 YY_RULE_SETUP
 #line 199 "lex.L"
-{return MMAPINCR_;}
+{return MMAP_;}
 	YY_BREAK
 case 171:
 YY_RULE_SETUP
 #line 200 "lex.L"
-{return MODE_;}
+{return MMAPINCR_;}
 	YY_BREAK
 case 172:
 YY_RULE_SETUP
 #line 201 "lex.L"
-{return MOSAIC_;}
+{return MODE_;}
 	YY_BREAK
 case 173:
 YY_RULE_SETUP
 #line 202 "lex.L"
-{return MOTION_;}
+{return MOSAIC_;}
 	YY_BREAK
 case 174:
 YY_RULE_SETUP
 #line 203 "lex.L"
-{return MOVE_;}
+{return MOTION_;}
 	YY_BREAK
 case 175:
 YY_RULE_SETUP
 #line 204 "lex.L"
-{return NAME_;}
+{return MOVE_;}
 	YY_BREAK
 case 176:
 YY_RULE_SETUP
 #line 205 "lex.L"
-{return NAN_;}
+{return NAME_;}
 	YY_BREAK
 case 177:
 YY_RULE_SETUP
 #line 206 "lex.L"
-{return NAXES_;}
+{return NAN_;}
 	YY_BREAK
 case 178:
 YY_RULE_SETUP
 #line 207 "lex.L"
-{return NEW_;}
+{return NAXES_;}
 	YY_BREAK
 case 179:
 YY_RULE_SETUP
 #line 208 "lex.L"
-{return NEXT_;}
+{return NEW_;}
 	YY_BREAK
 case 180:
 YY_RULE_SETUP
 #line 209 "lex.L"
-{return NO_;}
+{return NEXT_;}
 	YY_BREAK
 case 181:
 YY_RULE_SETUP
 #line 210 "lex.L"
-{return NONE_;}
+{return NO_;}
 	YY_BREAK
 case 182:
 YY_RULE_SETUP
 #line 211 "lex.L"
-{return NOW_;}
+{return NONE_;}
 	YY_BREAK
 case 183:
 YY_RULE_SETUP
 #line 212 "lex.L"
-{return NUMBER_;}
+{return NOW_;}
 	YY_BREAK
 case 184:
 YY_RULE_SETUP
 #line 213 "lex.L"
-{return OBJECT_;}
+{return NUMBER_;}
 	YY_BREAK
 case 185:
 YY_RULE_SETUP
 #line 214 "lex.L"
-{return OFF_;}
+{return OBJECT_;}
 	YY_BREAK
 case 186:
 YY_RULE_SETUP
 #line 215 "lex.L"
-{return ON_;}
+{return OFF_;}
 	YY_BREAK
 case 187:
 YY_RULE_SETUP
 #line 216 "lex.L"
-{return ONLY_;}
+{return ON_;}
 	YY_BREAK
 case 188:
 YY_RULE_SETUP
 #line 217 "lex.L"
-{return OPTION_;}
+{return ONLY_;}
 	YY_BREAK
 case 189:
 YY_RULE_SETUP
 #line 218 "lex.L"
-{return ORIENT_;}
+{return OPTION_;}
 	YY_BREAK
 case 190:
 YY_RULE_SETUP
 #line 219 "lex.L"
-{return PAN_;}
+{return ORIENT_;}
 	YY_BREAK
 case 191:
 YY_RULE_SETUP
 #line 220 "lex.L"
-{return CPANDA_;}
+{return PAN_;}
 	YY_BREAK
 case 192:
 YY_RULE_SETUP
 #line 221 "lex.L"
-{return PANNER_;}
+{return CPANDA_;}
 	YY_BREAK
 case 193:
 YY_RULE_SETUP
 #line 222 "lex.L"
-{return PARSER_;}
+{return PANNER_;}
 	YY_BREAK
 case 194:
 YY_RULE_SETUP
 #line 223 "lex.L"
-{return PASTE_;}
+{return PARAM_;}
 	YY_BREAK
 case 195:
 YY_RULE_SETUP
 #line 224 "lex.L"
-{return PERF_;}
+{return PARSER_;}
 	YY_BREAK
 case 196:
 YY_RULE_SETUP
 #line 225 "lex.L"
-{return PHYSICAL_;}
+{return PASTE_;}
 	YY_BREAK
 case 197:
 YY_RULE_SETUP
 #line 226 "lex.L"
-{return PIXEL_;}
+{return PERF_;}
 	YY_BREAK
 case 198:
 YY_RULE_SETUP
 #line 227 "lex.L"
-{return POINT_;}
+{return PHOTO_;}
 	YY_BREAK
 case 199:
 YY_RULE_SETUP
 #line 228 "lex.L"
-{return POINTER_;}
+{return PHYSICAL_;}
 	YY_BREAK
 case 200:
 YY_RULE_SETUP
 #line 229 "lex.L"
-{return POLYGON_;}
+{return PIXEL_;}
 	YY_BREAK
 case 201:
 YY_RULE_SETUP
 #line 230 "lex.L"
-{return POSTSCRIPT_;}
+{return PLOT2D_;}
 	YY_BREAK
 case 202:
 YY_RULE_SETUP
 #line 231 "lex.L"
-{return POW_;}
+{return PLOT3D_;}
 	YY_BREAK
 case 203:
 YY_RULE_SETUP
 #line 232 "lex.L"
-{return PRINT_;}
+{return POINT_;}
 	YY_BREAK
 case 204:
 YY_RULE_SETUP
 #line 233 "lex.L"
-{return PRESERVE_;}
+{return POINTER_;}
 	YY_BREAK
 case 205:
 YY_RULE_SETUP
 #line 234 "lex.L"
-{return PROJECTION_;}
+{return POLYGON_;}
 	YY_BREAK
 case 206:
 YY_RULE_SETUP
 #line 235 "lex.L"
-{return PROPERTY_;}
+{return POSTSCRIPT_;}
 	YY_BREAK
 case 207:
 YY_RULE_SETUP
 #line 236 "lex.L"
-{return PROS_;}
+{return POW_;}
 	YY_BREAK
 case 208:
 YY_RULE_SETUP
 #line 237 "lex.L"
-{return PUBLICATION_;}
+{return PRINT_;}
 	YY_BREAK
 case 209:
 YY_RULE_SETUP
 #line 238 "lex.L"
-{return RADIUS_;}
+{return PRESERVE_;}
 	YY_BREAK
 case 210:
 YY_RULE_SETUP
 #line 239 "lex.L"
-{return REGION_;}
+{return PROJECTION_;}
 	YY_BREAK
 case 211:
 YY_RULE_SETUP
 #line 240 "lex.L"
-{return REPLACE_;}
+{return PROPERTY_;}
 	YY_BREAK
 case 212:
 YY_RULE_SETUP
 #line 241 "lex.L"
-{return RESAMPLE_;}
+{return PROS_;}
 	YY_BREAK
 case 213:
 YY_RULE_SETUP
 #line 242 "lex.L"
-{return RESET_;}
+{return PUBLICATION_;}
 	YY_BREAK
 case 214:
 YY_RULE_SETUP
 #line 243 "lex.L"
-{return RESOLUTION_;}
+{return RADIUS_;}
 	YY_BREAK
 case 215:
 YY_RULE_SETUP
 #line 244 "lex.L"
-{return RGB_;}
+{return REGION_;}
 	YY_BREAK
 case 216:
 YY_RULE_SETUP
 #line 245 "lex.L"
-{return ROOT_;}
+{return REPLACE_;}
 	YY_BREAK
 case 217:
 YY_RULE_SETUP
 #line 246 "lex.L"
-{return ROTATE_;}
+{return RESAMPLE_;}
 	YY_BREAK
 case 218:
 YY_RULE_SETUP
 #line 247 "lex.L"
-{return RULER_;}
+{return RESET_;}
 	YY_BREAK
 case 219:
 YY_RULE_SETUP
 #line 248 "lex.L"
-{return SAMPLE_;}
+{return RESOLUTION_;}
 	YY_BREAK
 case 220:
 YY_RULE_SETUP
 #line 249 "lex.L"
-{return SAOIMAGE_;}
+{return RGB_;}
 	YY_BREAK
 case 221:
 YY_RULE_SETUP
 #line 250 "lex.L"
-{return SAOTNG_;}
+{return ROOT_;}
 	YY_BREAK
 case 222:
 YY_RULE_SETUP
 #line 251 "lex.L"
-{return SAVE_;}
+{return ROTATE_;}
 	YY_BREAK
 case 223:
 YY_RULE_SETUP
 #line 252 "lex.L"
-{return SCALE_;}
+{return RULER_;}
 	YY_BREAK
 case 224:
 YY_RULE_SETUP
 #line 253 "lex.L"
-{return SCAN_;}
+{return SAMPLE_;}
 	YY_BREAK
 case 225:
 YY_RULE_SETUP
 #line 254 "lex.L"
-{return SCIENTIFIC_;}
+{return SAOIMAGE_;}
 	YY_BREAK
 case 226:
 YY_RULE_SETUP
 #line 255 "lex.L"
-{return SCOPE_;}
+{return SAOTNG_;}
 	YY_BREAK
 case 227:
 YY_RULE_SETUP
 #line 256 "lex.L"
-{return SEGMENT_;}
+{return SAVE_;}
 	YY_BREAK
 case 228:
 YY_RULE_SETUP
 #line 257 "lex.L"
-{return SELECT_;}
+{return SCALE_;}
 	YY_BREAK
 case 229:
 YY_RULE_SETUP
 #line 258 "lex.L"
-{return SET_;}
+{return SCAN_;}
 	YY_BREAK
 case 230:
 YY_RULE_SETUP
 #line 259 "lex.L"
-{return SEXAGESIMAL_;}
+{return SCIENTIFIC_;}
 	YY_BREAK
 case 231:
 YY_RULE_SETUP
 #line 260 "lex.L"
-{return SHARED_;}
+{return SCOPE_;}
 	YY_BREAK
 case 232:
 YY_RULE_SETUP
 #line 261 "lex.L"
-{return SHIFT_;}
+{return SEGMENT_;}
 	YY_BREAK
 case 233:
 YY_RULE_SETUP
 #line 262 "lex.L"
-{return SHMID_;}
+{return SELECT_;}
 	YY_BREAK
 case 234:
 YY_RULE_SETUP
 #line 263 "lex.L"
-{return SHOW_;}
+{return SET_;}
 	YY_BREAK
 case 235:
 YY_RULE_SETUP
 #line 264 "lex.L"
-{return SINH_;}
+{return SEXAGESIMAL_;}
 	YY_BREAK
 case 236:
 YY_RULE_SETUP
 #line 265 "lex.L"
-{return SIZE_;}
+{return SHAPE_;}
 	YY_BREAK
 case 237:
 YY_RULE_SETUP
 #line 266 "lex.L"
-{return SLICE_;}
+{return SHARED_;}
 	YY_BREAK
 case 238:
 YY_RULE_SETUP
 #line 267 "lex.L"
-{return SMMAP_;}
+{return SHIFT_;}
 	YY_BREAK
 case 239:
 YY_RULE_SETUP
 #line 268 "lex.L"
-{return SMOOTH_;}
+{return SHMID_;}
 	YY_BREAK
 case 240:
 YY_RULE_SETUP
 #line 269 "lex.L"
-{return SOCKET_;}
+{return SHOW_;}
 	YY_BREAK
 case 241:
 YY_RULE_SETUP
 #line 270 "lex.L"
-{return SOCKETGZ_;}
+{return SINH_;}
 	YY_BREAK
 case 242:
 YY_RULE_SETUP
 #line 271 "lex.L"
-{return SOURCE_;}
+{return SIZE_;}
 	YY_BREAK
 case 243:
 YY_RULE_SETUP
 #line 272 "lex.L"
-{return SQRT_;}
+{return SLICE_;}
 	YY_BREAK
 case 244:
 YY_RULE_SETUP
 #line 273 "lex.L"
-{return SQUARED_;}
+{return SMMAP_;}
 	YY_BREAK
 case 245:
 YY_RULE_SETUP
 #line 274 "lex.L"
-{return SSHARED_;}
+{return SMOOTH_;}
 	YY_BREAK
 case 246:
 YY_RULE_SETUP
 #line 275 "lex.L"
-{return STATUS_;}
+{return SOCKET_;}
 	YY_BREAK
 case 247:
 YY_RULE_SETUP
 #line 276 "lex.L"
-{return SUM_;}
+{return SOCKETGZ_;}
 	YY_BREAK
 case 248:
 YY_RULE_SETUP
 #line 277 "lex.L"
-{return SUPERGALACTIC_;}
+{return SOURCE_;}
 	YY_BREAK
 case 249:
 YY_RULE_SETUP
 #line 278 "lex.L"
-{return SYSTEM_;}
+{return SQRT_;}
 	YY_BREAK
 case 250:
 YY_RULE_SETUP
 #line 279 "lex.L"
-{return TABLE_;}
+{return SQUARED_;}
 	YY_BREAK
 case 251:
 YY_RULE_SETUP
 #line 280 "lex.L"
-{return TAG_;}
+{return SSHARED_;}
 	YY_BREAK
 case 252:
 YY_RULE_SETUP
 #line 281 "lex.L"
-{return TEMPLATE_;}
+{return STATS_;}
 	YY_BREAK
 case 253:
 YY_RULE_SETUP
 #line 282 "lex.L"
-{return TEXT_;}
+{return STATUS_;}
 	YY_BREAK
 case 254:
 YY_RULE_SETUP
 #line 283 "lex.L"
-{return THREADS_;}
+{return SUM_;}
 	YY_BREAK
 case 255:
 YY_RULE_SETUP
 #line 284 "lex.L"
-{return THREED_;}
+{return SUPERGALACTIC_;}
 	YY_BREAK
 case 256:
 YY_RULE_SETUP
 #line 285 "lex.L"
-{return THRESHOLD_;}
+{return SYSTEM_;}
 	YY_BREAK
 case 257:
 YY_RULE_SETUP
 #line 286 "lex.L"
-{return THICK_;}
+{return TABLE_;}
 	YY_BREAK
 case 258:
 YY_RULE_SETUP
 #line 287 "lex.L"
-{return TRANSPARENCY_;}
+{return TAG_;}
 	YY_BREAK
 case 259:
 YY_RULE_SETUP
 #line 288 "lex.L"
-{return TO_;}
+{return TEMPLATE_;}
 	YY_BREAK
 case 260:
 YY_RULE_SETUP
 #line 289 "lex.L"
-{return TOGGLE_;}
+{return TEXT_;}
 	YY_BREAK
 case 261:
 YY_RULE_SETUP
 #line 290 "lex.L"
-{return TOPHAT_;}
+{return THREADS_;}
 	YY_BREAK
 case 262:
 YY_RULE_SETUP
 #line 291 "lex.L"
-{return TRUE_;}
+{return THREED_;}
 	YY_BREAK
 case 263:
 YY_RULE_SETUP
 #line 292 "lex.L"
-{return TYPE_;}
+{return THRESHOLD_;}
 	YY_BREAK
 case 264:
 YY_RULE_SETUP
 #line 293 "lex.L"
-{return UNDO_;}
+{return THICK_;}
 	YY_BREAK
 case 265:
 YY_RULE_SETUP
 #line 294 "lex.L"
-{return UNLOAD_;}
+{return TRANSPARENCY_;}
 	YY_BREAK
 case 266:
 YY_RULE_SETUP
 #line 295 "lex.L"
-{return UNHIGHLITE_;}
+{return TO_;}
 	YY_BREAK
 case 267:
 YY_RULE_SETUP
 #line 296 "lex.L"
-{return UNSELECT_;}
+{return TOGGLE_;}
 	YY_BREAK
 case 268:
 YY_RULE_SETUP
 #line 297 "lex.L"
-{return UPDATE_;}
+{return TOPHAT_;}
 	YY_BREAK
 case 269:
 YY_RULE_SETUP
 #line 298 "lex.L"
-{return USER_;}
+{return TRUE_;}
 	YY_BREAK
 case 270:
 YY_RULE_SETUP
 #line 299 "lex.L"
-{return VALUE_;}
+{return TYPE_;}
 	YY_BREAK
 case 271:
 YY_RULE_SETUP
 #line 300 "lex.L"
-{return VAR_;}
+{return UNDO_;}
 	YY_BREAK
 case 272:
 YY_RULE_SETUP
 #line 301 "lex.L"
-{return VIEW_;}
+{return UNLOAD_;}
 	YY_BREAK
 case 273:
 YY_RULE_SETUP
 #line 302 "lex.L"
-{return VECTOR_;}
+{return UNHIGHLITE_;}
 	YY_BREAK
 case 274:
 YY_RULE_SETUP
 #line 303 "lex.L"
-{return VERSION_;}
+{return UNSELECT_;}
 	YY_BREAK
 case 275:
 YY_RULE_SETUP
 #line 304 "lex.L"
-{return VERTEX_;}
+{return UPDATE_;}
 	YY_BREAK
 case 276:
 YY_RULE_SETUP
 #line 305 "lex.L"
-{return VERTICAL_;}
+{return USER_;}
 	YY_BREAK
 case 277:
 YY_RULE_SETUP
 #line 306 "lex.L"
-{return WARP_;}
+{return VALUE_;}
 	YY_BREAK
 case 278:
 YY_RULE_SETUP
 #line 307 "lex.L"
-{return WCS_;}
+{return VAR_;}
 	YY_BREAK
 case 279:
 YY_RULE_SETUP
 #line 308 "lex.L"
-{return WCSA_;}
+{return VIEW_;}
 	YY_BREAK
 case 280:
 YY_RULE_SETUP
 #line 309 "lex.L"
-{return WCSB_;}
+{return VECTOR_;}
 	YY_BREAK
 case 281:
 YY_RULE_SETUP
 #line 310 "lex.L"
-{return WCSC_;}
+{return VERSION_;}
 	YY_BREAK
 case 282:
 YY_RULE_SETUP
 #line 311 "lex.L"
-{return WCSD_;}
+{return VERTEX_;}
 	YY_BREAK
 case 283:
 YY_RULE_SETUP
 #line 312 "lex.L"
-{return WCSE_;}
+{return VERTICAL_;}
 	YY_BREAK
 case 284:
 YY_RULE_SETUP
 #line 313 "lex.L"
-{return WCSF_;}
+{return WARP_;}
 	YY_BREAK
 case 285:
 YY_RULE_SETUP
 #line 314 "lex.L"
-{return WCSG_;}
+{return WCS_;}
 	YY_BREAK
 case 286:
 YY_RULE_SETUP
 #line 315 "lex.L"
-{return WCSH_;}
+{return WCSA_;}
 	YY_BREAK
 case 287:
 YY_RULE_SETUP
 #line 316 "lex.L"
-{return WCSI_;}
+{return WCSB_;}
 	YY_BREAK
 case 288:
 YY_RULE_SETUP
 #line 317 "lex.L"
-{return WCSJ_;}
+{return WCSC_;}
 	YY_BREAK
 case 289:
 YY_RULE_SETUP
 #line 318 "lex.L"
-{return WCSK_;}
+{return WCSD_;}
 	YY_BREAK
 case 290:
 YY_RULE_SETUP
 #line 319 "lex.L"
-{return WCSL_;}
+{return WCSE_;}
 	YY_BREAK
 case 291:
 YY_RULE_SETUP
 #line 320 "lex.L"
-{return WCSM_;}
+{return WCSF_;}
 	YY_BREAK
 case 292:
 YY_RULE_SETUP
 #line 321 "lex.L"
-{return WCSN_;}
+{return WCSG_;}
 	YY_BREAK
 case 293:
 YY_RULE_SETUP
 #line 322 "lex.L"
-{return WCSO_;}
+{return WCSH_;}
 	YY_BREAK
 case 294:
 YY_RULE_SETUP
 #line 323 "lex.L"
-{return WCSP_;}
+{return WCSI_;}
 	YY_BREAK
 case 295:
 YY_RULE_SETUP
 #line 324 "lex.L"
-{return WCSQ_;}
+{return WCSJ_;}
 	YY_BREAK
 case 296:
 YY_RULE_SETUP
 #line 325 "lex.L"
-{return WCSR_;}
+{return WCSK_;}
 	YY_BREAK
 case 297:
 YY_RULE_SETUP
 #line 326 "lex.L"
-{return WCSS_;}
+{return WCSL_;}
 	YY_BREAK
 case 298:
 YY_RULE_SETUP
 #line 327 "lex.L"
-{return WCST_;}
+{return WCSM_;}
 	YY_BREAK
 case 299:
 YY_RULE_SETUP
 #line 328 "lex.L"
-{return WCSU_;}
+{return WCSN_;}
 	YY_BREAK
 case 300:
 YY_RULE_SETUP
 #line 329 "lex.L"
-{return WCSV_;}
+{return WCSO_;}
 	YY_BREAK
 case 301:
 YY_RULE_SETUP
 #line 330 "lex.L"
-{return WCSW_;}
+{return WCSP_;}
 	YY_BREAK
 case 302:
 YY_RULE_SETUP
 #line 331 "lex.L"
-{return WCSX_;}
+{return WCSQ_;}
 	YY_BREAK
 case 303:
 YY_RULE_SETUP
 #line 332 "lex.L"
-{return WCSY_;}
+{return WCSR_;}
 	YY_BREAK
 case 304:
 YY_RULE_SETUP
 #line 333 "lex.L"
-{return WCSZ_;}
+{return WCSS_;}
 	YY_BREAK
 case 305:
 YY_RULE_SETUP
 #line 334 "lex.L"
-{return WCS0_;}
+{return WCST_;}
 	YY_BREAK
 case 306:
 YY_RULE_SETUP
 #line 335 "lex.L"
-{return WFPC2_;}
+{return WCSU_;}
 	YY_BREAK
 case 307:
 YY_RULE_SETUP
 #line 336 "lex.L"
-{return WIDTH_;}
+{return WCSV_;}
 	YY_BREAK
 case 308:
 YY_RULE_SETUP
 #line 337 "lex.L"
-{return WIN32_;}
+{return WCSW_;}
 	YY_BREAK
 case 309:
 YY_RULE_SETUP
 #line 338 "lex.L"
-{return XML_;}
+{return WCSX_;}
 	YY_BREAK
 case 310:
 YY_RULE_SETUP
 #line 339 "lex.L"
-{return XY_;}
+{return WCSY_;}
 	YY_BREAK
 case 311:
 YY_RULE_SETUP
 #line 340 "lex.L"
-{return YES_;}
+{return WCSZ_;}
 	YY_BREAK
 case 312:
 YY_RULE_SETUP
 #line 341 "lex.L"
-{return ZMAX_;}
+{return WCS0_;}
 	YY_BREAK
 case 313:
 YY_RULE_SETUP
 #line 342 "lex.L"
-{return ZSCALE_;}
+{return WFPC2_;}
 	YY_BREAK
 case 314:
 YY_RULE_SETUP
 #line 343 "lex.L"
-{return ZOOM_;}
+{return WIDTH_;}
 	YY_BREAK
 case 315:
 YY_RULE_SETUP
+#line 344 "lex.L"
+{return WIN32_;}
+	YY_BREAK
+case 316:
+YY_RULE_SETUP
 #line 345 "lex.L"
+{return XML_;}
+	YY_BREAK
+case 317:
+YY_RULE_SETUP
+#line 346 "lex.L"
+{return XY_;}
+	YY_BREAK
+case 318:
+YY_RULE_SETUP
+#line 347 "lex.L"
+{return YES_;}
+	YY_BREAK
+case 319:
+YY_RULE_SETUP
+#line 348 "lex.L"
+{return ZMAX_;}
+	YY_BREAK
+case 320:
+YY_RULE_SETUP
+#line 349 "lex.L"
+{return ZSCALE_;}
+	YY_BREAK
+case 321:
+YY_RULE_SETUP
+#line 350 "lex.L"
+{return ZOOM_;}
+	YY_BREAK
+case 322:
+YY_RULE_SETUP
+#line 352 "lex.L"
 { // Integer
 		  frlval->integer = atoi(yytext);
 		  return INT;
 		}
 	YY_BREAK
-case 316:
-#line 351 "lex.L"
-case 317:
+case 323:
+#line 358 "lex.L"
+case 324:
 YY_RULE_SETUP
-#line 351 "lex.L"
+#line 358 "lex.L"
 { // Real Number
 		  frlval->real = atof(yytext);
 		  return REAL;
 		}
 	YY_BREAK
-case 318:
+case 325:
 YY_RULE_SETUP
-#line 356 "lex.L"
+#line 363 "lex.L"
 { // Pointer
 		  frlval->ptr = (void*)strtoul(yytext,NULL,16);
 		  return POINTER;
 		}
 	YY_BREAK
-case 319:
-#line 362 "lex.L"
-case 320:
+case 326:
+#line 369 "lex.L"
+case 327:
 YY_RULE_SETUP
-#line 362 "lex.L"
+#line 369 "lex.L"
 { // degrees
 		  yytext[yyleng-1] = '\0';
 		  frlval->real = atof(yytext);
 		  return ANGDEGREE;
 		}	
 	YY_BREAK
-case 321:
-#line 369 "lex.L"
-case 322:
+case 328:
+#line 376 "lex.L"
+case 329:
 YY_RULE_SETUP
-#line 369 "lex.L"
+#line 376 "lex.L"
 { // radians
 		  yytext[yyleng-1] = '\0';
 		  frlval->real = atof(yytext);
 		  return ANGRADIAN;
 		}
 	YY_BREAK
-case 323:
-#line 376 "lex.L"
-case 324:
+case 330:
+#line 383 "lex.L"
+case 331:
 YY_RULE_SETUP
-#line 376 "lex.L"
+#line 383 "lex.L"
 { // sexagesimal
 		  int ll = yyleng <(FRBUFSIZE-1) ? yyleng:(FRBUFSIZE-1);
 		  strncpy(frlval->str,yytext,ll);
@@ -3272,11 +3311,11 @@ YY_RULE_SETUP
 		  return SEXSTR;
 		}	
 	YY_BREAK
-case 325:
-#line 384 "lex.L"
-case 326:
+case 332:
+#line 391 "lex.L"
+case 333:
 YY_RULE_SETUP
-#line 384 "lex.L"
+#line 391 "lex.L"
 { // HMS
 		  int ll = yyleng <(FRBUFSIZE-1) ? yyleng:(FRBUFSIZE-1);
 		  strncpy(frlval->str,yytext,ll);
@@ -3284,11 +3323,11 @@ YY_RULE_SETUP
 		  return HMSSTR;
 		}	
 	YY_BREAK
-case 327:
-#line 392 "lex.L"
-case 328:
+case 334:
+#line 399 "lex.L"
+case 335:
 YY_RULE_SETUP
-#line 392 "lex.L"
+#line 399 "lex.L"
 { // DMS
 		  int ll = yyleng <(FRBUFSIZE-1) ? yyleng:(FRBUFSIZE-1);
 		  strncpy(frlval->str,yytext,ll);
@@ -3296,13 +3335,13 @@ YY_RULE_SETUP
 		  return DMSSTR;
 		}	
 	YY_BREAK
-case 329:
-/* rule 329 can match eol */
-#line 400 "lex.L"
-case 330:
-/* rule 330 can match eol */
+case 336:
+/* rule 336 can match eol */
+#line 407 "lex.L"
+case 337:
+/* rule 337 can match eol */
 YY_RULE_SETUP
-#line 400 "lex.L"
+#line 407 "lex.L"
 { // Quoted String
 		  int ll = (yyleng-2)<(FRBUFSIZE-1) ? (yyleng-2):(FRBUFSIZE-1);
 		  strncpy(frlval->str,yytext+1,ll); // skip the " " 
@@ -3310,10 +3349,10 @@ YY_RULE_SETUP
 		  return STRING;
 		}
 	YY_BREAK
-case 331:
-/* rule 331 can match eol */
+case 338:
+/* rule 338 can match eol */
 YY_RULE_SETUP
-#line 407 "lex.L"
+#line 414 "lex.L"
 { // Quoted String
 		  int ll = (yyleng-2)<(FRBUFSIZE-1) ? (yyleng-2):(FRBUFSIZE-1);
 		  strncpy(frlval->str,yytext+1,ll); // skip the '{'
@@ -3321,9 +3360,9 @@ YY_RULE_SETUP
 		  return STRING;
 		}
 	YY_BREAK
-case 332:
+case 339:
 YY_RULE_SETUP
-#line 414 "lex.L"
+#line 421 "lex.L"
 { // General String-- at least 2 printable chars
 		  int ll = yyleng <(FRBUFSIZE-1) ? yyleng:(FRBUFSIZE-1);
 		  strncpy(frlval->str,yytext,ll);
@@ -3331,25 +3370,25 @@ YY_RULE_SETUP
 		  return STRING;
 		}
 	YY_BREAK
-case 333:
+case 340:
 YY_RULE_SETUP
-#line 421 "lex.L"
+#line 428 "lex.L"
 { // White Spaces
 		} 
 	YY_BREAK
-case 334:
+case 341:
 YY_RULE_SETUP
-#line 424 "lex.L"
+#line 431 "lex.L"
 { // Else, return the char
 		  return toupper(yytext[0]);
 		}
 	YY_BREAK
-case 335:
+case 342:
 YY_RULE_SETUP
-#line 428 "lex.L"
+#line 435 "lex.L"
 ECHO;
 	YY_BREAK
-#line 3353 "lex.C"
+#line 3392 "lex.C"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -3731,7 +3770,7 @@ int yyFlexLexer::yy_get_next_buffer()
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 1206 )
+			if ( yy_current_state >= 1223 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3759,11 +3798,11 @@ int yyFlexLexer::yy_get_next_buffer()
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 1206 )
+		if ( yy_current_state >= 1223 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 1205);
+	yy_is_jam = (yy_current_state == 1222);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4248,7 +4287,7 @@ void frfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 428 "lex.L"
+#line 435 "lex.L"
 
 
 
diff --git a/saotk/frame/lex.L b/saotk/frame/lex.L
index 0590c7b..9d59277 100644
--- a/saotk/frame/lex.L
+++ b/saotk/frame/lex.L
@@ -57,6 +57,7 @@ bg		{return BG_;}
 bigendian	{return BIGENDIAN_;}
 bin		{return BIN_;}
 bitpix		{return BITPIX_;}
+blt		{return BLT_;}
 block		{return BLOCK_;}
 box		{return BOX_;}
 boxannulus	{return BOXANNULUS_;}
@@ -74,7 +75,6 @@ centroid	{return CENTROID_;}
 channel		{return CHANNEL_;}
 ciao		{return CIAO_;}
 circle		{return CIRCLE_;}
-circle3d	{return CIRCLE3D_;}
 clear		{return CLEAR_;}
 clip		{return CLIP_;}
 color		{return COLOR_;}
@@ -83,6 +83,7 @@ colormap	{return COLORMAP_;}
 colorscale	{return COLORSCALE_;}
 colorspace	{return COLORSPACE_;}
 cols		{return COLS_;}
+column		{return COLUMN_;}
 command		{return COMMAND_;}
 compass		{return COMPASS_;}
 composite	{return COMPOSITE_;}
@@ -219,11 +220,15 @@ orient		{return ORIENT_;}
 pan		{return PAN_;}
 panda		{return CPANDA_;}
 panner		{return PANNER_;}
+param		{return PARAM_;}
 parser		{return PARSER_;}
 paste		{return PASTE_;}
 perf		{return PERF_;}
+photo		{return PHOTO_;}
 physical	{return PHYSICAL_;}
 pixel		{return PIXEL_;}
+plot2d		{return PLOT2D_;}
+plot3d		{return PLOT3D_;}
 point		{return POINT_;}
 pointer		{return POINTER_;}
 polygon		{return POLYGON_;}
@@ -257,6 +262,7 @@ segment		{return SEGMENT_;}
 select		{return SELECT_;}
 set		{return SET_;}
 sexagesimal	{return SEXAGESIMAL_;}
+shape		{return SHAPE_;}
 shared		{return SHARED_;}
 shift		{return SHIFT_;}
 shmid		{return SHMID_;}
@@ -272,6 +278,7 @@ source		{return SOURCE_;}
 sqrt		{return SQRT_;}
 squared		{return SQUARED_;}
 sshared		{return SSHARED_;}
+stats		{return STATS_;}
 status		{return STATUS_;}
 sum		{return SUM_;}
 supergalactic	{return SUPERGALACTIC_;}
diff --git a/saotk/frame/line.C b/saotk/frame/line.C
index 227ea16..5bd6386 100644
--- a/saotk/frame/line.C
+++ b/saotk/frame/line.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "line.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Line::Line(const Line& a) : BaseLine(a)
@@ -23,14 +22,14 @@ Line::Line(Base* p, const Vector& ptr1, const Vector& ptr2,
   p1Arrow = a1;
   p2Arrow = a2;
 
-  strcpy(type,"line");
+  strcpy(type_,"line");
   handle = new Vector[2];
   numHandle = 2;
 
   updateBBox();
 }
 
-void Line::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Line::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
 
@@ -54,17 +53,17 @@ void Line::renderPS(int mode)
 {
   renderPSGC(mode);
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
 
   if (p1Arrow) {
-    aa = modifyArrow(p2,p1,CANVAS);
-    renderPSArrow(p2,p1,CANVAS);
+    aa = modifyArrow(p2,p1,Coord::CANVAS);
+    renderPSArrow(p2,p1,Coord::CANVAS);
   }
 
   if (p2Arrow) {
-    bb = modifyArrow(p1,p2,CANVAS);
-    renderPSArrow(p1,p2,CANVAS);
+    bb = modifyArrow(p1,p2,Coord::CANVAS);
+    renderPSArrow(p1,p2,Coord::CANVAS);
   }
 
   ostringstream str;
@@ -80,17 +79,17 @@ void Line::renderMACOSX()
 {
   renderMACOSXGC();
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
 
   if (p1Arrow) {
-    aa = modifyArrow(p2,p1,CANVAS);
-    renderMACOSXArrow(p2,p1,CANVAS);
+    aa = modifyArrow(p2,p1,Coord::CANVAS);
+    renderMACOSXArrow(p2,p1,Coord::CANVAS);
   }
 
   if (p2Arrow) {
-    bb = modifyArrow(p1,p2,CANVAS);
-    renderMACOSXArrow(p1,p2,CANVAS);
+    bb = modifyArrow(p1,p2,Coord::CANVAS);
+    renderMACOSXArrow(p1,p2,Coord::CANVAS);
   }
 
   macosxDrawLine(aa,bb);
@@ -102,17 +101,17 @@ void Line::renderWIN32()
 {
   renderWIN32GC();
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
 
   if (p1Arrow) {
-    aa = modifyArrow(p2,p1,CANVAS);
-    renderWIN32Arrow(p2,p1,CANVAS);
+    aa = modifyArrow(p2,p1,Coord::CANVAS);
+    renderWIN32Arrow(p2,p1,Coord::CANVAS);
   }
 
   if (p2Arrow) {
-    bb = modifyArrow(p1,p2,CANVAS);
-    renderWIN32Arrow(p1,p2,CANVAS);
+    bb = modifyArrow(p1,p2,Coord::CANVAS);
+    renderWIN32Arrow(p1,p2,Coord::CANVAS);
   }
 
   win32DrawLine(aa,bb);
@@ -128,9 +127,9 @@ void Line::updateHandles()
   if (parent->isIIS())
     angle = -angle;
 
-  // generate handles in CANVAS coords
-  handle[0] = parent->mapFromRef(p1,CANVAS);
-  handle[1] = parent->mapFromRef(p2,CANVAS);
+  // generate handles in Coord::CANVAS coords
+  handle[0] = parent->mapFromRef(p1,Coord::CANVAS);
+  handle[1] = parent->mapFromRef(p2,Coord::CANVAS);
 }
 
 void Line::setArrows(int w1, int w2)
@@ -140,23 +139,61 @@ void Line::setArrows(int w1, int w2)
   updateBBox();
 }
 
+void Line::analysis(AnalysisMethod mm, int which)
+{
+  switch (mm) {
+  case PLOT2D:
+    if (!analysisPlot2d_ && which) {
+      addCallBack(CallBack::MOVECB, analysisPlot2dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::EDITCB, analysisPlot2dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::UPDATECB, analysisPlot2dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::DELETECB, analysisPlot2dCB_[1], 
+		  parent->options->cmdName);
+    }
+    if (analysisPlot2d_ && !which) {
+      deleteCallBack(CallBack::MOVECB, analysisPlot2dCB_[0]);
+      deleteCallBack(CallBack::EDITCB, analysisPlot2dCB_[0]);
+      deleteCallBack(CallBack::UPDATECB, analysisPlot2dCB_[0]);
+      deleteCallBack(CallBack::DELETECB, analysisPlot2dCB_[1]);
+    }
+
+    analysisPlot2d_ = which;
+    break;
+  }
+}
+
+void Line::analysisPlot2d(char* xname, char* yname, 
+				char* xcname, char* ycname)
+{
+  double* x;
+  double* y;
+  double* xc;
+  double* yc;
+
+  int num = parent->markerAnalysisPlot2d(&x, &y, &xc, &yc, this, p1, p2, 0);
+  analysisPlot2dResult(xname, yname, xcname, ycname, x, y, xc, yc, num);
+}
+
 // list
 
-void Line::list(ostream& str, CoordSystem sys, SkyFrame sky, 
-		SkyFormat format, int conj, int strip)
+void Line::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v1 = ptr->mapFromRef(p1,sys);
       Vector v2 = ptr->mapFromRef(p2,sys);
-      str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
+      str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
 	  << v2[0] << ',' << v2[1] << ')';
     }
     break;
@@ -164,15 +201,15 @@ void Line::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v1 = ptr->mapFromRef(p1,sys,sky);
 	    Vector v2 = ptr->mapFromRef(p2,sys,sky);
-	    str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+	    str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
 		<< ',' << v2[0] << ',' << v2[1] << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    char ra1[16], ra2[16];
@@ -189,7 +226,7 @@ void Line::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	      istringstream wcs(x);
 	      wcs >> ra2 >> dec2;
 	    }
-	    str << type << '(' << ra1 << ',' << dec1 << ',' 
+	    str << type_ << '(' << ra1 << ',' << dec1 << ',' 
 		<< ra2 << ',' << dec2 << ')';
 	  }
 	  break;
@@ -198,7 +235,7 @@ void Line::list(ostream& str, CoordSystem sys, SkyFrame sky,
       else {
 	Vector v1 = ptr->mapFromRef(p1,sys);
 	Vector v2 = ptr->mapFromRef(p2,sys);
-	str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+	str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
 	    << ',' << v2[0] << ',' << v2[1] << ')';
       }
     }
@@ -215,6 +252,7 @@ void Line::listPost(ostream& str, int conj, int strip)
       str << " ||";
 
     str << " # line=" << p1Arrow << ' ' << p2Arrow;
+
     listProperties(str, 0);
   }
   else {
@@ -225,8 +263,8 @@ void Line::listPost(ostream& str, int conj, int strip)
   }
 }
 
-void Line::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		     SkyFormat format)
+void Line::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		     Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   Vector vv[2];
@@ -234,7 +272,7 @@ void Line::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   vv[1] = p2;
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowPoint(ptr,sys,sky,format,vv,2);
   XMLRow(XMLPARAM,p1Arrow);
@@ -244,36 +282,36 @@ void Line::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Line::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-		      SkyFormat format, int strip)
+void Line::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		      Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listSAOtngPre(str, strip);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v1 = ptr->mapFromRef(p1,IMAGE);
-      Vector v2 = ptr->mapFromRef(p2,IMAGE);
-      str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
+      Vector v1 = ptr->mapFromRef(p1,Coord::IMAGE);
+      Vector v2 = ptr->mapFromRef(p2,Coord::IMAGE);
+      str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
 	  << v2[0] << ',' << v2[1] << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v1 = ptr->mapFromRef(p1,sys,sky);
 	  Vector v2 = ptr->mapFromRef(p2,sys,sky);
-	  str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
+	  str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
 	      << v2[0] << ',' << v2[1] << ')';
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  char ra1[16], ra2[16];
@@ -290,7 +328,7 @@ void Line::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
 	    istringstream wcs(x);
 	    wcs >> ra2 >> dec2;
 	  }
-	  str << type << '(' << ra1 << ',' << dec1 << ',' 
+	  str << type_ << '(' << ra1 << ',' << dec1 << ',' 
 	      << ra2 << ',' << dec2 << ')';
 	}
 	break;
diff --git a/saotk/frame/line.h b/saotk/frame/line.h
index 3074160..bce97b1 100644
--- a/saotk/frame/line.h
+++ b/saotk/frame/line.h
@@ -13,7 +13,7 @@ protected:
   int p2Arrow;
 
 protected:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
@@ -40,10 +40,13 @@ public:
   int getP1Arrow() {return p1Arrow;}
   int getP2Arrow() {return p2Arrow;}
 
-  virtual void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  virtual void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
+  void analysis(AnalysisMethod, int);
+  void analysisPlot2d(char*, char*, char*, char*);
+
+  virtual void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  virtual void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
   virtual void listPost(ostream&, int, int);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
 };
 
 #endif
diff --git a/saotk/frame/marker.C b/saotk/frame/marker.C
index 0936de3..51b758e 100644
--- a/saotk/frame/marker.C
+++ b/saotk/frame/marker.C
@@ -3,17 +3,28 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "marker.h"
-#include "framebase.h"
 #include "fitsimage.h"
+#include "blt.h"
+#include "bltVector.h"
 
 static int markerSeqID = 1;
 
+char* Marker::analysisPlot2dCB_[] = {
+  "MarkerAnalysisPlot2dCB",
+  "MarkerAnalysisPlot2dDeleteCB"
+};
+
+char* Marker::analysisPlot3dCB_[] = {
+  "MarkerAnalysisPlot3dCB",
+  "MarkerAnalysisPlot3dDeleteCB"
+};
+
 // Marker Members Public
 
 Marker::Marker(const Marker& a)
 {
   id = a.id;
-  strcpy(type, a.type);
+  strcpy(type_, a.type_);
   parent = a.parent;
 
   center = a.center;
@@ -62,6 +73,12 @@ Marker::Marker(const Marker& a)
 
   previous_ = NULL;
   next_ = NULL;
+
+  analysisPlot2d_ = a.analysisPlot2d_;
+  analysisPlot3d_ = a.analysisPlot3d_;
+  analysisParam_ = a.analysisParam_;
+  analysisSystem_ = a.analysisSystem_;
+  analysisSky_ = a.analysisSky_;
 }
 
 Marker::Marker(Base* p, const Vector& ctr, 
@@ -72,7 +89,7 @@ Marker::Marker(Base* p, const Vector& ctr,
 	       const List<Tag>& tg, const List<CallBack>& cb)
 {
   id = markerSeqID++;
-  type[0] = '\0';
+  type_[0] = '\0';
   parent = p;
 
   center = ctr;
@@ -115,6 +132,12 @@ Marker::Marker(Base* p, const Vector& ctr,
 
   previous_ = NULL;
   next_ = NULL;
+
+  analysisPlot2d_ =0;
+  analysisPlot3d_ =0;
+  analysisParam_ = AVERAGE;
+  analysisSystem_ = Coord::PHYSICAL;
+  analysisSky_ = Coord::FK5;
 }
 
 Marker::~Marker()
@@ -144,7 +167,7 @@ Marker::~Marker()
   doCallBack(CallBack::DELETECB);
 }
 
-void Marker::draw(Drawable drawable, InternalSystem sys, 
+void Marker::draw(Drawable drawable, Coord::InternalSystem sys, 
 		  int tt, RenderMode mode, HandleMode hh)
 {
   if (hh==HANDLES)
@@ -156,7 +179,7 @@ void Marker::draw(Drawable drawable, InternalSystem sys,
   renderXInclude(drawable, sys, mode);
 }
 
-void Marker::renderXInclude(Drawable drawable, InternalSystem sys, 
+void Marker::renderXInclude(Drawable drawable, Coord::InternalSystem sys, 
 			    RenderMode mode)
 {
   if (!(properties & INCLUDE)) {
@@ -172,7 +195,7 @@ void Marker::renderXInclude(Drawable drawable, InternalSystem sys,
   }
 }
 
-void Marker::renderXText(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Marker::renderXText(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   if (text && *text && tkfont_) {
     GC lgc;
@@ -212,7 +235,7 @@ void Marker::renderXText(Drawable drawable, InternalSystem sys, RenderMode mode)
 }
 
 void Marker::renderXArrow(Drawable drawable, const Vector& p1, 
-			  const Vector& p2, InternalSystem sys, GC lgc)
+			  const Vector& p2, Coord::InternalSystem sys, GC lgc)
 {
   Vector* vv = arrow(p1,p2,sys);
   XPoint dd[6];
@@ -327,7 +350,7 @@ void Marker::renderPSText(int mode)
 }
 
 void Marker::renderPSArrow(const Vector& p1, const Vector& p2, 
-			   InternalSystem sys)
+			   Coord::InternalSystem sys)
 {
   Vector* vv = arrow(p1,p2,sys);
   ostringstream str;
@@ -515,7 +538,7 @@ void Marker::renderWIN32Text()
 }
 
 void Marker::renderWIN32Arrow(const Vector& p1, const Vector& p2, 
-			       InternalSystem sys)
+			      Coord::InternalSystem sys)
 {
   Vector* vv = arrow(p1,p2,sys);
   Vector dd[6];
@@ -667,7 +690,7 @@ void Marker::rotate(const Vector& v, int h)
   // handles are in canvas coords
 
   double a = (v * Translate(-center) * flip_).angle();
-  double b = ((parent->mapToRef(handle[h-1],CANVAS) * Translate(-center) * flip_)).angle();
+  double b = ((parent->mapToRef(handle[h-1],Coord::CANVAS) * Translate(-center) * flip_)).angle();
   angle -= a-b;
 
   updateBBox();
@@ -1007,6 +1030,13 @@ int Marker::deleteCallBack(CallBack::Type t, const char* proc)
   return TCL_ERROR;
 }
 
+int Marker::isIn(const Vector& vv, Coord::InternalSystem sys)
+{
+  Vector rr = parent->mapToRef(vv,sys);
+  Vector ss = parent->mapFromRef(rr,Coord::CANVAS);
+  return bbox.isIn(ss);
+}
+
 int Marker::isVisible(const BBox& b)
 {
   // assume visible, prove otherwise
@@ -1045,17 +1075,17 @@ void Marker::doCallBack(CallBack::Type t)
 double Marker::calcAngle()
 {
   switch (parent->getOrientation()) {
-  case NONE:
-  case XY:
+  case Coord::NORMAL:
+  case Coord::XY:
     return angle + parent->getRotation();
-  case XX:
-  case YY:
+  case Coord::XX:
+  case Coord::YY:
     return -angle + parent->getRotation();
   }
 }
 
 Vector Marker::modifyArrow(const Vector& p1, const Vector& p2, 
-			   InternalSystem sys)
+			   Coord::InternalSystem sys)
 {
   const int tip = 6;  // length from end of line to tip of arrow
   
@@ -1067,7 +1097,7 @@ Vector Marker::modifyArrow(const Vector& p1, const Vector& p2,
   return nn * Scale(ll-tip) * Translate(aa);
 }
 
-Vector* Marker::arrow(const Vector& p1, const Vector& p2, InternalSystem sys)
+Vector* Marker::arrow(const Vector& p1, const Vector& p2, Coord::InternalSystem sys)
 {
   Vector p3;
   if (((p2-p1)[0]) == 0)
@@ -1112,6 +1142,45 @@ Vector* Marker::arrow(const Vector& p1, const Vector& p2, InternalSystem sys)
   return ww;
 }
 
+void Marker::analysisPlot2dResult(char* xname, char* yname, 
+				  char* xcname, char* ycname,
+				  double* x, double* y, 
+				  double* xc, double* yc, int num)
+{
+  Blt_Vector* xx;
+  Blt_GetVector(parent->getInterp(), xname, &xx);
+  Blt_ResetVector(xx, x, num, num*sizeof(double), TCL_DYNAMIC);
+
+  Blt_Vector* yy;
+  Blt_GetVector(parent->getInterp(), yname, &yy);
+  Blt_ResetVector(yy, y, num, num*sizeof(double), TCL_DYNAMIC);
+
+  Blt_Vector* xxc;
+  Blt_GetVector(parent->getInterp(), xcname, &xxc);
+  Blt_ResetVector(xxc, xc, num, num*sizeof(double), TCL_DYNAMIC);
+
+  Blt_Vector* yyc;
+  Blt_GetVector(parent->getInterp(), ycname, &yyc);
+  Blt_ResetVector(yyc, yc, num, num*sizeof(double), TCL_DYNAMIC);
+
+  return;
+}
+
+void Marker::analysisPlot3dResult(char* xname, char* yname, 
+				  double* x, double* y, 
+				  int num)
+{
+  Blt_Vector* xx;
+  Blt_GetVector(parent->getInterp(), xname, &xx);
+  Blt_ResetVector(xx, x, num, num*sizeof(double), TCL_DYNAMIC);
+
+  Blt_Vector* yy;
+  Blt_GetVector(parent->getInterp(), yname, &yy);
+  Blt_ResetVector(yy, y, num, num*sizeof(double), TCL_DYNAMIC);
+
+  return;
+}
+
 Matrix Marker::fwdMatrix()
 {
   return Rotate(angle) * flip_ * Translate(center);
@@ -1122,32 +1191,32 @@ Matrix Marker::bckMatrix()
   return Translate(-center) * flip_ * Rotate(-angle);
 }
 
-Vector Marker::fwdMap(const Vector& vv, InternalSystem sys)
+Vector Marker::fwdMap(const Vector& vv, Coord::InternalSystem sys)
 {
   return parent->mapFromRef(vv*Rotate(angle)*flip_*Translate(center),sys);
 }
 
-Vector Marker::bckMap(const Vector& vv, InternalSystem sys)
+Vector Marker::bckMap(const Vector& vv, Coord::InternalSystem sys)
 {
-  return parent->mapToRef(vv,CANVAS)*Translate(-center)*flip_* Rotate(-angle);
+  return parent->mapToRef(vv,sys)*Translate(-center)*flip_* Rotate(-angle);
 }
 
-void Marker::setMatrices(InternalSystem sys, Matrix* fwd, Matrix* bck)
+void Marker::setMatrices(Coord::InternalSystem sys, Matrix* fwd, Matrix* bck)
 {
   switch (sys) {
-  case WIDGET:
+  case Coord::WIDGET:
     *fwd = parent->refToWidget;
     *bck = parent->widgetToRef;
     break;
-  case CANVAS:
+  case Coord::CANVAS:
     *fwd = parent->refToCanvas;
     *bck = parent->canvasToRef;
     break;
-  case WINDOW:
+  case Coord::WINDOW:
     *fwd = parent->refToWindow;
     *bck = parent->windowToRef;
     break;
-  case MAGNIFIER:
+  case Coord::MAGNIFIER:
     *fwd = parent->refToMagnifier;
     *bck = parent->magnifierToRef;
     break;
@@ -1156,7 +1225,7 @@ void Marker::setMatrices(InternalSystem sys, Matrix* fwd, Matrix* bck)
 
 // list
 
-void Marker::listPre(ostream& str, CoordSystem sys, SkyFrame sky, 
+void Marker::listPre(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
 		     FitsImage* ptr, int strip, int hash)
 {
   // no props for semicolons
@@ -1164,10 +1233,10 @@ void Marker::listPre(ostream& str, CoordSystem sys, SkyFrame sky,
     FitsImage* fits = parent->findFits();
     if (fits && fits->nextMosaic()) {
       switch (sys) {
-      case IMAGE:
-      case PHYSICAL:
-      case DETECTOR:
-      case AMPLIFIER:
+      case Coord::IMAGE:
+      case Coord::PHYSICAL:
+      case Coord::DETECTOR:
+      case Coord::AMPLIFIER:
 	str << "# tile " << parent->findFits(ptr) << endl;
 
 	break;
@@ -1192,7 +1261,7 @@ void Marker::listPost(ostream& str, int conj, int strip)
     if (conj)
       str << " ||";
 
-    listProperties(str, 1);
+    listProperties(str,1);
   }
   else {
     if (conj)
@@ -1339,26 +1408,26 @@ void Marker::listSAOimagePost(ostream& str, int strip)
   str << (strip ? ';' : '\n');
 }
 
-void Marker::listXY(ostream& str, CoordSystem sys, SkyFrame sky,
-		    SkyFormat format, int strip)
+void Marker::listXY(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		    Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     str << setprecision(8) << ptr->mapFromRef(center,sys);
     break;
   default:
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  str << setprecision(8) << ptr->mapFromRef(center,sys,sky);
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -1466,7 +1535,7 @@ void Marker::XMLRow(XMLColName col, char** val, int cnt)
   XMLCol[col] = dupstr(str.str().c_str());
 }
 
-void Marker::XMLRowProps(FitsImage* ptr, CoordSystem sys)
+void Marker::XMLRowProps(FitsImage* ptr, Coord::CoordSystem sys)
 {
   // tile
   {
@@ -1476,10 +1545,10 @@ void Marker::XMLRowProps(FitsImage* ptr, CoordSystem sys)
     FitsImage* fits = parent->findFits();
     if (fits && fits->nextMosaic()) {
       switch (sys) {
-      case IMAGE:
-      case PHYSICAL:
-      case DETECTOR:
-      case AMPLIFIER:
+      case Coord::IMAGE:
+      case Coord::PHYSICAL:
+      case Coord::DETECTOR:
+      case Coord::AMPLIFIER:
 	str << parent->findFits(ptr) << ends;
 	break;
       default:
@@ -1611,14 +1680,14 @@ void Marker::XMLRowProp(XMLColName col, Property prop)
   XMLCol[col] = dupstr(str.str().c_str());
 }
 
-void Marker::XMLRowPoint(FitsImage* ptr, CoordSystem sys, SkyFrame sky, 
-			 SkyFormat format, Vector vv)
+void Marker::XMLRowPoint(FitsImage* ptr, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			 Coord::SkyFormat format, Vector vv)
 {
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(vv,sys);
       XMLRow(XMLX,v[0]);
@@ -1629,14 +1698,14 @@ void Marker::XMLRowPoint(FitsImage* ptr, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(vv,sys,sky);
 	    XMLRow(XMLX,v[0]);
 	    XMLRow(XMLY,v[1]);
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(vv,sys,sky,format,buf,64);
@@ -1661,14 +1730,14 @@ void Marker::XMLRowPoint(FitsImage* ptr, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Marker::XMLRowPoint(FitsImage* ptr, CoordSystem sys, SkyFrame sky, 
-			 SkyFormat format, Vector* vv, int cnt)
+void Marker::XMLRowPoint(FitsImage* ptr, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			 Coord::SkyFormat format, Vector* vv, int cnt)
 {
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       double xx[cnt];
       double yy[cnt];
@@ -1685,7 +1754,7 @@ void Marker::XMLRowPoint(FitsImage* ptr, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    double xx[cnt];
 	    double yy[cnt];
@@ -1698,7 +1767,7 @@ void Marker::XMLRowPoint(FitsImage* ptr, CoordSystem sys, SkyFrame sky,
 	    XMLRow(XMLYV,yy,cnt);
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char* xx[cnt];
 	    char* yy[cnt];
@@ -1740,34 +1809,34 @@ void Marker::XMLRowPoint(FitsImage* ptr, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Marker::XMLRowRadiusX(FitsImage* ptr, CoordSystem sys, Vector vv)
+void Marker::XMLRowRadiusX(FitsImage* ptr, Coord::CoordSystem sys, Vector vv)
 {
-  double rr = ptr->mapLenFromRef(vv[0],sys,ARCSEC);
+  double rr = ptr->mapLenFromRef(vv[0],sys,Coord::ARCSEC);
   XMLRow(XMLR,rr);
 }
 
-void Marker::XMLRowRadiusX(FitsImage* ptr, CoordSystem sys, Vector* vv, int cnt)
+void Marker::XMLRowRadiusX(FitsImage* ptr, Coord::CoordSystem sys, Vector* vv, int cnt)
 {
   double rr[cnt];
   for (int ii=0; ii<cnt; ii++)
-    rr[ii] = ptr->mapLenFromRef(vv[ii][0],sys,ARCSEC);
+    rr[ii] = ptr->mapLenFromRef(vv[ii][0],sys,Coord::ARCSEC);
 
   XMLRow(XMLRV,rr,cnt);
 }
 
-void Marker::XMLRowRadius(FitsImage* ptr, CoordSystem sys, Vector vv)
+void Marker::XMLRowRadius(FitsImage* ptr, Coord::CoordSystem sys, Vector vv)
 {
-  Vector v = ptr->mapLenFromRef(vv,sys,ARCSEC);
+  Vector v = ptr->mapLenFromRef(vv,sys,Coord::ARCSEC);
   XMLRow(XMLR,v[0]);
   XMLRow(XMLR2,v[1]);
 }
 
-void Marker::XMLRowRadius(FitsImage* ptr, CoordSystem sys, Vector* vv, int cnt)
+void Marker::XMLRowRadius(FitsImage* ptr, Coord::CoordSystem sys, Vector* vv, int cnt)
 {
   double rr[cnt];
   double rr2[cnt];
   for (int ii=0; ii<cnt; ii++) {
-    Vector v = ptr->mapLenFromRef(vv[ii],sys,ARCSEC);
+    Vector v = ptr->mapLenFromRef(vv[ii],sys,Coord::ARCSEC);
     rr[ii] = v[0];
     rr2[ii] = v[1];
   }
@@ -1776,12 +1845,12 @@ void Marker::XMLRowRadius(FitsImage* ptr, CoordSystem sys, Vector* vv, int cnt)
   XMLRow(XMLRV2,rr2,cnt);
 }
 
-void Marker::XMLRowAng(CoordSystem sys, SkyFrame sky)
+void Marker::XMLRowAng(Coord::CoordSystem sys, Coord::SkyFrame sky)
 {
   XMLRow(XMLANG, radToDeg(parent->mapAngleFromRef(angle,sys,sky)));
 }
 
-void Marker::XMLRowAng(CoordSystem sys, SkyFrame sky, double* ang, int cnt)
+void Marker::XMLRowAng(Coord::CoordSystem sys, Coord::SkyFrame sky, double* ang, int cnt)
 {
   double aa[cnt];
   for (int ii=0; ii<cnt; ii++)
diff --git a/saotk/frame/marker.h b/saotk/frame/marker.h
index 5f5422f..69fc25c 100644
--- a/saotk/frame/marker.h
+++ b/saotk/frame/marker.h
@@ -37,9 +37,12 @@ public:
   enum RenderMode {SRC,XOR};
   enum HandleMode {HANDLES,NOHANDLES};
 
+  enum AnalysisMethod {STATS,PLOT2D,PLOT3D};
+  enum AnalysisParamType {SUM,AVERAGE};
+
 protected:
   int id;
-  char type[64];
+  char type_[64];
   Base* parent;
 
   Vector center;                // ref coordinates
@@ -78,15 +81,23 @@ protected:
   Marker* previous_;
   Marker* next_;
 
-  Vector* arrow(const Vector&, const Vector&, InternalSystem);
+  Vector* arrow(const Vector&, const Vector&, Coord::InternalSystem);
 
   char* XMLCol[XMLNUMCOL];
 
+  int analysisPlot2d_;
+  static char* analysisPlot2dCB_[];
+  int analysisPlot3d_;
+  static char* analysisPlot3dCB_[];
+  AnalysisParamType analysisParam_;
+  Coord::CoordSystem analysisSystem_;
+  Coord::SkyFrame analysisSky_;
+
  protected:
-  virtual void renderX(Drawable, InternalSystem, RenderMode) =0;
-  virtual void renderXInclude(Drawable drawable, InternalSystem, RenderMode mode);
-  virtual void renderXText(Drawable, InternalSystem, RenderMode);
-  void renderXArrow(Drawable, const Vector&, const Vector&, InternalSystem, GC);
+  virtual void renderX(Drawable, Coord::InternalSystem, RenderMode) =0;
+  virtual void renderXInclude(Drawable drawable, Coord::InternalSystem, RenderMode mode);
+  virtual void renderXText(Drawable, Coord::InternalSystem, RenderMode);
+  void renderXArrow(Drawable, const Vector&, const Vector&, Coord::InternalSystem, GC);
   void renderXHandles(Drawable);
   virtual GC renderXGC(RenderMode);
   virtual void renderXLineDash(GC);
@@ -95,7 +106,7 @@ protected:
   virtual void renderPS(int mode) =0;
   virtual void renderPSInclude(int);
   virtual void renderPSText(int);
-  void renderPSArrow(const Vector&, const Vector&, InternalSystem);
+  void renderPSArrow(const Vector&, const Vector&, Coord::InternalSystem);
   virtual void renderPSGC(int);
   virtual void renderPSLineDash();
   void renderPSLineNoDash();
@@ -105,7 +116,7 @@ protected:
   virtual void renderMACOSX() =0;
   virtual void renderMACOSXInclude();
   virtual void renderMACOSXText();
-  void renderMACOSXArrow(const Vector&, const Vector&, InternalSystem);
+  void renderMACOSXArrow(const Vector&, const Vector&, Coord::InternalSystem);
   virtual void renderMACOSXGC();
   virtual void renderMACOSXLineDash();
   void renderMACOSXLineNoDash();
@@ -115,21 +126,25 @@ protected:
   virtual void renderWIN32() =0;
   virtual void renderWIN32Include();
   virtual void renderWIN32Text();
-  void renderWIN32Arrow(const Vector&, const Vector&, InternalSystem);
+  void renderWIN32Arrow(const Vector&, const Vector&, Coord::InternalSystem);
   virtual void renderWIN32GC();
   virtual void renderWIN32LineDash();
   void renderWIN32LineNoDash();
 #endif
 
-  void setMatrices(InternalSystem, Matrix*, Matrix*);
+  void analysisPlot2dResult(char*, char*, char*, char*, 
+			    double*, double*, double*, double*, int);
+  void analysisPlot3dResult(char*, char*, double*, double*, int);
+
+  void setMatrices(Coord::InternalSystem, Matrix*, Matrix*);
   double calcAngle();
-  Vector modifyArrow(const Vector&, const Vector&, InternalSystem);
+  Vector modifyArrow(const Vector&, const Vector&, Coord::InternalSystem);
   virtual void updateHandles() =0;
   virtual void calcAllBBox();
 
   void initFonts(const char*);
 
-  void listPre(ostream&, CoordSystem, SkyFrame, FitsImage*, int, int);
+  void listPre(ostream&, Coord::CoordSystem, Coord::SkyFrame, FitsImage*, int, int);
   virtual void listPost(ostream&, int, int);
 
   void listCiaoPre(ostream&);
@@ -148,8 +163,8 @@ protected:
 
   virtual Matrix fwdMatrix();
   virtual Matrix bckMatrix();
-  virtual Vector fwdMap(const Vector&, InternalSystem);
-  virtual Vector bckMap(const Vector&, InternalSystem);
+  virtual Vector fwdMap(const Vector&, Coord::InternalSystem);
+  virtual Vector bckMap(const Vector&, Coord::InternalSystem);
 
   void XMLRowInit();
   void XMLRow(XMLColName,int);
@@ -158,21 +173,21 @@ protected:
   void XMLRow(XMLColName,double*,int);
   void XMLRow(XMLColName,char*);
   void XMLRow(XMLColName,char**, int);
-  void XMLRowProps(FitsImage*, CoordSystem);
+  void XMLRowProps(FitsImage*, Coord::CoordSystem);
   void XMLRowEnd(ostream&);
   void XMLRowProp(XMLColName, Property);
-  void XMLRowCenter(FitsImage* fits, CoordSystem sys, SkyFrame sky, SkyFormat format) {XMLRowPoint(fits, sys, sky, format, center);}
-  void XMLRowPoint(FitsImage*, CoordSystem, SkyFrame, SkyFormat, Vector);
-  void XMLRowPoint(FitsImage*, CoordSystem, SkyFrame, SkyFormat, Vector*, int);
-  void XMLRowRadiusX(FitsImage*, CoordSystem, Vector);
-  void XMLRowRadiusX(FitsImage*, CoordSystem, Vector*, int);
-  void XMLRowRadius(FitsImage*, CoordSystem, Vector);
-  void XMLRowRadius(FitsImage*, CoordSystem, Vector*, int);
-  void XMLRowAng(CoordSystem, SkyFrame);
-  void XMLRowAng(CoordSystem, SkyFrame, double*, int);
+  void XMLRowCenter(FitsImage* fits, Coord::CoordSystem sys, Coord::SkyFrame sky, Coord::SkyFormat format) {XMLRowPoint(fits, sys, sky, format, center);}
+  void XMLRowPoint(FitsImage*, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Vector);
+  void XMLRowPoint(FitsImage*, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, Vector*, int);
+  void XMLRowRadiusX(FitsImage*, Coord::CoordSystem, Vector);
+  void XMLRowRadiusX(FitsImage*, Coord::CoordSystem, Vector*, int);
+  void XMLRowRadius(FitsImage*, Coord::CoordSystem, Vector);
+  void XMLRowRadius(FitsImage*, Coord::CoordSystem, Vector*, int);
+  void XMLRowAng(Coord::CoordSystem, Coord::SkyFrame);
+  void XMLRowAng(Coord::CoordSystem, Coord::SkyFrame, double*, int);
   char* XMLQuote(char*);
 
-public:
+ public:
   Marker(const Marker&);
   Marker(Base* p, const Vector& v, double ang,
 	 const char* clr, int* dsh,
@@ -181,7 +196,7 @@ public:
 	 const List<Tag>& tag, const List<CallBack>& cb);
   virtual ~Marker();
 
-  virtual void draw(Drawable, InternalSystem, int, RenderMode, HandleMode);
+  virtual void draw(Drawable, Coord::InternalSystem, int, RenderMode, HandleMode);
   virtual void ps(int,int);
 #ifdef _MACOSX
   virtual void macosx(int);
@@ -212,7 +227,10 @@ public:
   virtual void rotate(const Vector& v, int h);
   virtual void rotateEnd();
 
-  virtual int isIn(const Vector& v) {return bbox.isIn(v);}
+  virtual void analysis(AnalysisMethod, int) {}
+  
+  virtual int isIn(const Vector& vv) {return bbox.isIn(vv);}
+  virtual int isIn(const Vector&, Coord::InternalSystem);
 
   void setAngle(double);
   double getAngle() {return angle;}
@@ -220,15 +238,15 @@ public:
   int getNumHandle() {return numHandle;}
   Vector getHandle(int);
 
-  virtual int isPolygon() {return 0;}
+  virtual int getSegment(const Vector&) {return 0;}
 
-  virtual void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int) =0;
-  virtual void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat) {}
-  virtual void listCiao(ostream&, CoordSystem, int) {}
-  virtual void listSAOtng(ostream&,CoordSystem,SkyFrame,SkyFormat, int) {}
-  virtual void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int) {}
+  virtual void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int) =0;
+  virtual void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat) {}
+  virtual void listCiao(ostream&, Coord::CoordSystem, int) {}
+  virtual void listSAOtng(ostream&,Coord::CoordSystem,Coord::SkyFrame,Coord::SkyFormat, int) {}
+  virtual void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int) {}
   virtual void listSAOimage(ostream&, int) {}
-  virtual void listXY(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  virtual void listXY(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
 
   const BBox& getBBox() {return bbox;}
   const BBox& getAllBBox() {return allBBox;}
@@ -270,7 +288,7 @@ public:
   int onHandle(const Vector& v);
 
   int getId() {return id;}
-  const char* getType() {return type;}
+  const char* getType() {return type_;}
   Vector getCenter() {return center;}
 
   int canSelect() {return (properties & SELECT) ? 1:0;}
@@ -298,6 +316,16 @@ public:
   void disableCB() {doCB = 0;}
   void deleteCBs();
 
+  virtual void analysisPlot2d(char*, char*, char*, char*) {}
+  virtual void analysisPlot3d(char*, char*) {}
+
+  AnalysisParamType analysisParam() {return analysisParam_;}
+  void setAnalysisParam(AnalysisParamType mm) {analysisParam_ = mm;}
+  Coord::CoordSystem analysisSystem() {return analysisSystem_;}
+  void setAnalysisSystem(Coord::CoordSystem sys) {analysisSystem_ = sys;}
+  Coord::SkyFrame analysisSky() {return analysisSky_;}
+  void setAnalysisSky(Coord::SkyFrame sky) {analysisSky_ = sky;}
+
   // special composite funtionality
   virtual void setComposite(const Matrix&, double);
   void setComposite(const char*, int, int);
diff --git a/saotk/frame/parser.C b/saotk/frame/parser.C
index c0d7cc3..2da2ca2 100644
--- a/saotk/frame/parser.C
+++ b/saotk/frame/parser.C
@@ -114,288 +114,295 @@
      BIN_ = 295,
      BITPIX_ = 296,
      BLOCK_ = 297,
-     BOX_ = 298,
-     BOXANNULUS_ = 299,
-     BOXCAR_ = 300,
-     BOXCIRCLE_ = 301,
-     BPANDA_ = 302,
-     BUFFER_ = 303,
-     BW_ = 304,
-     CALLBACK_ = 305,
-     CANVAS_ = 306,
-     CATALOG_ = 307,
-     CELESTRIAL_ = 308,
-     CENTER_ = 309,
-     CENTROID_ = 310,
-     CHANNEL_ = 311,
-     CIRCLE_ = 312,
-     CIAO_ = 313,
-     CLEAR_ = 314,
-     CLIP_ = 315,
-     COLOR_ = 316,
-     COLORBAR_ = 317,
-     COLORMAP_ = 318,
-     COLORSCALE_ = 319,
-     COLORSPACE_ = 320,
-     COLS_ = 321,
-     COMMAND_ = 322,
-     COMPASS_ = 323,
-     COMPOSITE_ = 324,
-     COMPRESS_ = 325,
-     CONTOUR_ = 326,
-     CONTRAST_ = 327,
-     COORDINATES_ = 328,
-     COPY_ = 329,
-     COUNT_ = 330,
-     CPANDA_ = 331,
-     CREATE_ = 332,
-     CROP_ = 333,
-     CROSS_ = 334,
-     CROSSHAIR_ = 335,
-     CUBE_ = 336,
-     CURSOR_ = 337,
-     CUT_ = 338,
-     CMYK_ = 339,
-     DASH_ = 340,
-     DASHLIST_ = 341,
-     DATA_ = 342,
-     DATAMIN_ = 343,
-     DATASEC_ = 344,
-     DEBUG_ = 345,
-     DEGREES_ = 346,
-     DEFAULT_ = 347,
-     DELETE_ = 348,
-     DEPTH_ = 349,
-     DETECTOR_ = 350,
-     DIAMOND_ = 351,
-     DIM_ = 352,
-     DS9_ = 353,
-     EDIT_ = 354,
-     ECLIPTIC_ = 355,
-     ELLIPSE_ = 356,
-     ELLIPSEANNULUS_ = 357,
-     END_ = 358,
-     EPANDA_ = 359,
-     EQUATORIAL_ = 360,
-     ERASE_ = 361,
-     EXT_ = 362,
-     FACTOR_ = 363,
-     FALSE_ = 364,
-     FILE_ = 365,
-     FILTER_ = 366,
-     FIT_ = 367,
-     FITS_ = 368,
-     FITSY_ = 369,
-     FIXED_ = 370,
-     FK4_ = 371,
-     FK4_NO_E_ = 372,
-     FK5_ = 373,
-     FONT_ = 374,
-     FROM_ = 375,
-     FRONT_ = 376,
-     FULL_ = 377,
-     FUNCTION_ = 378,
-     GALACTIC_ = 379,
-     GAUSSIAN_ = 380,
-     GET_ = 381,
-     GLOBAL_ = 382,
-     GRAPHICS_ = 383,
-     GRAY_ = 384,
-     GRID_ = 385,
-     GZ_ = 386,
-     HANDLE_ = 387,
-     HAS_ = 388,
-     HEAD_ = 389,
-     HEADER_ = 390,
-     HEIGHT_ = 391,
-     HELIOECLIPTIC_ = 392,
-     HIDE_ = 393,
-     HIGH_ = 394,
-     HIGHLITE_ = 395,
-     HISTEQU_ = 396,
-     HISTOGRAM_ = 397,
-     HORIZONTAL_ = 398,
-     ICRS_ = 399,
-     ID_ = 400,
-     IIS_ = 401,
-     IMAGE_ = 402,
-     INCLUDE_ = 403,
-     INCR_ = 404,
-     INFO_ = 405,
-     INTEGER_ = 406,
-     ITERATION_ = 407,
-     IRAF_ = 408,
-     IRAFMIN_ = 409,
-     J2000_ = 410,
-     KEY_ = 411,
-     KEYWORD_ = 412,
-     LABEL_ = 413,
-     LENGTH_ = 414,
-     LEVEL_ = 415,
-     LITTLEENDIAN_ = 416,
-     LINE_ = 417,
-     LINEAR_ = 418,
-     LIST_ = 419,
-     LOAD_ = 420,
-     LOCAL_ = 421,
-     LOG_ = 422,
-     LOW_ = 423,
-     MACOSX_ = 424,
-     MAGNIFIER_ = 425,
-     MAP_ = 426,
-     MARK_ = 427,
-     MARKER_ = 428,
-     MASK_ = 429,
-     MESSAGE_ = 430,
-     METHOD_ = 431,
-     MINMAX_ = 432,
-     MIP_ = 433,
-     MMAP_ = 434,
-     MMAPINCR_ = 435,
-     MOSAIC_ = 436,
-     MODE_ = 437,
-     MOTION_ = 438,
-     MOVE_ = 439,
-     NAME_ = 440,
-     NAN_ = 441,
-     NAXES_ = 442,
-     NEW_ = 443,
-     NEXT_ = 444,
-     NO_ = 445,
-     NONE_ = 446,
-     NOW_ = 447,
-     NUMBER_ = 448,
-     OBJECT_ = 449,
-     OFF_ = 450,
-     ON_ = 451,
-     ONLY_ = 452,
-     OPTION_ = 453,
-     ORIENT_ = 454,
-     PAN_ = 455,
-     PANNER_ = 456,
-     PARSER_ = 457,
-     PASTE_ = 458,
-     PERF_ = 459,
-     PHYSICAL_ = 460,
-     PIXEL_ = 461,
-     POINT_ = 462,
-     POINTER_ = 463,
-     POLYGON_ = 464,
-     POSTSCRIPT_ = 465,
-     POW_ = 466,
-     PRINT_ = 467,
-     PRESERVE_ = 468,
-     PROJECTION_ = 469,
-     CIRCLE3D_ = 470,
-     PROPERTY_ = 471,
-     PUBLICATION_ = 472,
-     PROS_ = 473,
-     RADIUS_ = 474,
-     REGION_ = 475,
-     REPLACE_ = 476,
-     RESAMPLE_ = 477,
-     RESET_ = 478,
-     RESOLUTION_ = 479,
-     RGB_ = 480,
-     ROOT_ = 481,
-     ROTATE_ = 482,
-     RULER_ = 483,
-     SAMPLE_ = 484,
-     SAOIMAGE_ = 485,
-     SAOTNG_ = 486,
-     SAVE_ = 487,
-     SCALE_ = 488,
-     SCAN_ = 489,
-     SCIENTIFIC_ = 490,
-     SCOPE_ = 491,
-     SEGMENT_ = 492,
-     SELECT_ = 493,
-     SET_ = 494,
-     SEXAGESIMAL_ = 495,
-     SHARED_ = 496,
-     SHIFT_ = 497,
-     SHMID_ = 498,
-     SHOW_ = 499,
-     SINH_ = 500,
-     SIZE_ = 501,
-     SLICE_ = 502,
-     SMMAP_ = 503,
-     SMOOTH_ = 504,
-     SOCKET_ = 505,
-     SOCKETGZ_ = 506,
-     SOURCE_ = 507,
-     SQRT_ = 508,
-     SQUARED_ = 509,
-     SSHARED_ = 510,
-     STATUS_ = 511,
-     SUPERGALACTIC_ = 512,
-     SUM_ = 513,
-     SYSTEM_ = 514,
-     TABLE_ = 515,
-     TAG_ = 516,
-     TEMPLATE_ = 517,
-     TEXT_ = 518,
-     THREADS_ = 519,
-     THREED_ = 520,
-     THRESHOLD_ = 521,
-     THICK_ = 522,
-     TRANSPARENCY_ = 523,
-     TO_ = 524,
-     TOGGLE_ = 525,
-     TOPHAT_ = 526,
-     TRUE_ = 527,
-     TYPE_ = 528,
-     UNDO_ = 529,
-     UNHIGHLITE_ = 530,
-     UNLOAD_ = 531,
-     UNSELECT_ = 532,
-     UPDATE_ = 533,
-     USER_ = 534,
-     VALUE_ = 535,
-     VAR_ = 536,
-     VIEW_ = 537,
-     VECTOR_ = 538,
-     VERSION_ = 539,
-     VERTEX_ = 540,
-     VERTICAL_ = 541,
-     WARP_ = 542,
-     WCS_ = 543,
-     WCSA_ = 544,
-     WCSB_ = 545,
-     WCSC_ = 546,
-     WCSD_ = 547,
-     WCSE_ = 548,
-     WCSF_ = 549,
-     WCSG_ = 550,
-     WCSH_ = 551,
-     WCSI_ = 552,
-     WCSJ_ = 553,
-     WCSK_ = 554,
-     WCSL_ = 555,
-     WCSM_ = 556,
-     WCSN_ = 557,
-     WCSO_ = 558,
-     WCSP_ = 559,
-     WCSQ_ = 560,
-     WCSR_ = 561,
-     WCSS_ = 562,
-     WCST_ = 563,
-     WCSU_ = 564,
-     WCSV_ = 565,
-     WCSW_ = 566,
-     WCSX_ = 567,
-     WCSY_ = 568,
-     WCSZ_ = 569,
-     WCS0_ = 570,
-     WFPC2_ = 571,
-     WIDTH_ = 572,
-     WIN32_ = 573,
-     XML_ = 574,
-     XY_ = 575,
-     YES_ = 576,
-     ZMAX_ = 577,
-     ZSCALE_ = 578,
-     ZOOM_ = 579
+     BLT_ = 298,
+     BOX_ = 299,
+     BOXANNULUS_ = 300,
+     BOXCAR_ = 301,
+     BOXCIRCLE_ = 302,
+     BPANDA_ = 303,
+     BUFFER_ = 304,
+     BW_ = 305,
+     CALLBACK_ = 306,
+     CANVAS_ = 307,
+     CATALOG_ = 308,
+     CELESTRIAL_ = 309,
+     CENTER_ = 310,
+     CENTROID_ = 311,
+     CHANNEL_ = 312,
+     CIRCLE_ = 313,
+     CIAO_ = 314,
+     CLEAR_ = 315,
+     CLIP_ = 316,
+     COLOR_ = 317,
+     COLORBAR_ = 318,
+     COLORMAP_ = 319,
+     COLORSCALE_ = 320,
+     COLORSPACE_ = 321,
+     COLS_ = 322,
+     COLUMN_ = 323,
+     COMMAND_ = 324,
+     COMPASS_ = 325,
+     COMPOSITE_ = 326,
+     COMPRESS_ = 327,
+     CONTOUR_ = 328,
+     CONTRAST_ = 329,
+     COORDINATES_ = 330,
+     COPY_ = 331,
+     COUNT_ = 332,
+     CPANDA_ = 333,
+     CREATE_ = 334,
+     CROP_ = 335,
+     CROSS_ = 336,
+     CROSSHAIR_ = 337,
+     CUBE_ = 338,
+     CURSOR_ = 339,
+     CUT_ = 340,
+     CMYK_ = 341,
+     DASH_ = 342,
+     DASHLIST_ = 343,
+     DATA_ = 344,
+     DATAMIN_ = 345,
+     DATASEC_ = 346,
+     DEBUG_ = 347,
+     DEGREES_ = 348,
+     DEFAULT_ = 349,
+     DELETE_ = 350,
+     DEPTH_ = 351,
+     DETECTOR_ = 352,
+     DIAMOND_ = 353,
+     DIM_ = 354,
+     DS9_ = 355,
+     EDIT_ = 356,
+     ECLIPTIC_ = 357,
+     ELLIPSE_ = 358,
+     ELLIPSEANNULUS_ = 359,
+     END_ = 360,
+     EPANDA_ = 361,
+     EQUATORIAL_ = 362,
+     ERASE_ = 363,
+     EXT_ = 364,
+     FACTOR_ = 365,
+     FALSE_ = 366,
+     FILE_ = 367,
+     FILTER_ = 368,
+     FIT_ = 369,
+     FITS_ = 370,
+     FITSY_ = 371,
+     FIXED_ = 372,
+     FK4_ = 373,
+     FK4_NO_E_ = 374,
+     FK5_ = 375,
+     FONT_ = 376,
+     FROM_ = 377,
+     FRONT_ = 378,
+     FULL_ = 379,
+     FUNCTION_ = 380,
+     GALACTIC_ = 381,
+     GAUSSIAN_ = 382,
+     GET_ = 383,
+     GLOBAL_ = 384,
+     GRAPHICS_ = 385,
+     GRAY_ = 386,
+     GRID_ = 387,
+     GZ_ = 388,
+     HANDLE_ = 389,
+     HAS_ = 390,
+     HEAD_ = 391,
+     HEADER_ = 392,
+     HEIGHT_ = 393,
+     HELIOECLIPTIC_ = 394,
+     HIDE_ = 395,
+     HIGH_ = 396,
+     HIGHLITE_ = 397,
+     HISTEQU_ = 398,
+     HISTOGRAM_ = 399,
+     HORIZONTAL_ = 400,
+     ICRS_ = 401,
+     ID_ = 402,
+     IIS_ = 403,
+     IMAGE_ = 404,
+     INCLUDE_ = 405,
+     INCR_ = 406,
+     INFO_ = 407,
+     INTEGER_ = 408,
+     ITERATION_ = 409,
+     IRAF_ = 410,
+     IRAFMIN_ = 411,
+     J2000_ = 412,
+     KEY_ = 413,
+     KEYWORD_ = 414,
+     LABEL_ = 415,
+     LENGTH_ = 416,
+     LEVEL_ = 417,
+     LITTLEENDIAN_ = 418,
+     LINE_ = 419,
+     LINEAR_ = 420,
+     LIST_ = 421,
+     LOAD_ = 422,
+     LOCAL_ = 423,
+     LOG_ = 424,
+     LOW_ = 425,
+     MACOSX_ = 426,
+     MAGNIFIER_ = 427,
+     MAP_ = 428,
+     MARK_ = 429,
+     MARKER_ = 430,
+     MASK_ = 431,
+     MESSAGE_ = 432,
+     METHOD_ = 433,
+     MINMAX_ = 434,
+     MIP_ = 435,
+     MMAP_ = 436,
+     MMAPINCR_ = 437,
+     MOSAIC_ = 438,
+     MODE_ = 439,
+     MOTION_ = 440,
+     MOVE_ = 441,
+     NAME_ = 442,
+     NAN_ = 443,
+     NAXES_ = 444,
+     NEW_ = 445,
+     NEXT_ = 446,
+     NO_ = 447,
+     NONE_ = 448,
+     NOW_ = 449,
+     NUMBER_ = 450,
+     OBJECT_ = 451,
+     OFF_ = 452,
+     ON_ = 453,
+     ONLY_ = 454,
+     OPTION_ = 455,
+     ORIENT_ = 456,
+     PAN_ = 457,
+     PANNER_ = 458,
+     PARAM_ = 459,
+     PARSER_ = 460,
+     PASTE_ = 461,
+     PERF_ = 462,
+     PHOTO_ = 463,
+     PHYSICAL_ = 464,
+     PIXEL_ = 465,
+     PLOT2D_ = 466,
+     PLOT3D_ = 467,
+     POINT_ = 468,
+     POINTER_ = 469,
+     POLYGON_ = 470,
+     POSTSCRIPT_ = 471,
+     POW_ = 472,
+     PRINT_ = 473,
+     PRESERVE_ = 474,
+     PROJECTION_ = 475,
+     PROPERTY_ = 476,
+     PUBLICATION_ = 477,
+     PROS_ = 478,
+     RADIUS_ = 479,
+     REGION_ = 480,
+     REPLACE_ = 481,
+     RESAMPLE_ = 482,
+     RESET_ = 483,
+     RESOLUTION_ = 484,
+     RGB_ = 485,
+     ROOT_ = 486,
+     ROTATE_ = 487,
+     RULER_ = 488,
+     SAMPLE_ = 489,
+     SAOIMAGE_ = 490,
+     SAOTNG_ = 491,
+     SAVE_ = 492,
+     SCALE_ = 493,
+     SCAN_ = 494,
+     SCIENTIFIC_ = 495,
+     SCOPE_ = 496,
+     SEGMENT_ = 497,
+     SELECT_ = 498,
+     SET_ = 499,
+     SEXAGESIMAL_ = 500,
+     SHAPE_ = 501,
+     SHARED_ = 502,
+     SHIFT_ = 503,
+     SHMID_ = 504,
+     SHOW_ = 505,
+     SINH_ = 506,
+     SIZE_ = 507,
+     SLICE_ = 508,
+     SMMAP_ = 509,
+     SMOOTH_ = 510,
+     SOCKET_ = 511,
+     SOCKETGZ_ = 512,
+     SOURCE_ = 513,
+     SQRT_ = 514,
+     SQUARED_ = 515,
+     SSHARED_ = 516,
+     STATS_ = 517,
+     STATUS_ = 518,
+     SUPERGALACTIC_ = 519,
+     SUM_ = 520,
+     SYSTEM_ = 521,
+     TABLE_ = 522,
+     TAG_ = 523,
+     TEMPLATE_ = 524,
+     TEXT_ = 525,
+     THREADS_ = 526,
+     THREED_ = 527,
+     THRESHOLD_ = 528,
+     THICK_ = 529,
+     TRANSPARENCY_ = 530,
+     TO_ = 531,
+     TOGGLE_ = 532,
+     TOPHAT_ = 533,
+     TRUE_ = 534,
+     TYPE_ = 535,
+     UNDO_ = 536,
+     UNHIGHLITE_ = 537,
+     UNLOAD_ = 538,
+     UNSELECT_ = 539,
+     UPDATE_ = 540,
+     USER_ = 541,
+     VALUE_ = 542,
+     VAR_ = 543,
+     VIEW_ = 544,
+     VECTOR_ = 545,
+     VERSION_ = 546,
+     VERTEX_ = 547,
+     VERTICAL_ = 548,
+     WARP_ = 549,
+     WCS_ = 550,
+     WCSA_ = 551,
+     WCSB_ = 552,
+     WCSC_ = 553,
+     WCSD_ = 554,
+     WCSE_ = 555,
+     WCSF_ = 556,
+     WCSG_ = 557,
+     WCSH_ = 558,
+     WCSI_ = 559,
+     WCSJ_ = 560,
+     WCSK_ = 561,
+     WCSL_ = 562,
+     WCSM_ = 563,
+     WCSN_ = 564,
+     WCSO_ = 565,
+     WCSP_ = 566,
+     WCSQ_ = 567,
+     WCSR_ = 568,
+     WCSS_ = 569,
+     WCST_ = 570,
+     WCSU_ = 571,
+     WCSV_ = 572,
+     WCSW_ = 573,
+     WCSX_ = 574,
+     WCSY_ = 575,
+     WCSZ_ = 576,
+     WCS0_ = 577,
+     WFPC2_ = 578,
+     WIDTH_ = 579,
+     WIN32_ = 580,
+     XML_ = 581,
+     XY_ = 582,
+     YES_ = 583,
+     ZMAX_ = 584,
+     ZSCALE_ = 585,
+     ZOOM_ = 586
    };
 #endif
 /* Tokens.  */
@@ -439,288 +446,295 @@
 #define BIN_ 295
 #define BITPIX_ 296
 #define BLOCK_ 297
-#define BOX_ 298
-#define BOXANNULUS_ 299
-#define BOXCAR_ 300
-#define BOXCIRCLE_ 301
-#define BPANDA_ 302
-#define BUFFER_ 303
-#define BW_ 304
-#define CALLBACK_ 305
-#define CANVAS_ 306
-#define CATALOG_ 307
-#define CELESTRIAL_ 308
-#define CENTER_ 309
-#define CENTROID_ 310
-#define CHANNEL_ 311
-#define CIRCLE_ 312
-#define CIAO_ 313
-#define CLEAR_ 314
-#define CLIP_ 315
-#define COLOR_ 316
-#define COLORBAR_ 317
-#define COLORMAP_ 318
-#define COLORSCALE_ 319
-#define COLORSPACE_ 320
-#define COLS_ 321
-#define COMMAND_ 322
-#define COMPASS_ 323
-#define COMPOSITE_ 324
-#define COMPRESS_ 325
-#define CONTOUR_ 326
-#define CONTRAST_ 327
-#define COORDINATES_ 328
-#define COPY_ 329
-#define COUNT_ 330
-#define CPANDA_ 331
-#define CREATE_ 332
-#define CROP_ 333
-#define CROSS_ 334
-#define CROSSHAIR_ 335
-#define CUBE_ 336
-#define CURSOR_ 337
-#define CUT_ 338
-#define CMYK_ 339
-#define DASH_ 340
-#define DASHLIST_ 341
-#define DATA_ 342
-#define DATAMIN_ 343
-#define DATASEC_ 344
-#define DEBUG_ 345
-#define DEGREES_ 346
-#define DEFAULT_ 347
-#define DELETE_ 348
-#define DEPTH_ 349
-#define DETECTOR_ 350
-#define DIAMOND_ 351
-#define DIM_ 352
-#define DS9_ 353
-#define EDIT_ 354
-#define ECLIPTIC_ 355
-#define ELLIPSE_ 356
-#define ELLIPSEANNULUS_ 357
-#define END_ 358
-#define EPANDA_ 359
-#define EQUATORIAL_ 360
-#define ERASE_ 361
-#define EXT_ 362
-#define FACTOR_ 363
-#define FALSE_ 364
-#define FILE_ 365
-#define FILTER_ 366
-#define FIT_ 367
-#define FITS_ 368
-#define FITSY_ 369
-#define FIXED_ 370
-#define FK4_ 371
-#define FK4_NO_E_ 372
-#define FK5_ 373
-#define FONT_ 374
-#define FROM_ 375
-#define FRONT_ 376
-#define FULL_ 377
-#define FUNCTION_ 378
-#define GALACTIC_ 379
-#define GAUSSIAN_ 380
-#define GET_ 381
-#define GLOBAL_ 382
-#define GRAPHICS_ 383
-#define GRAY_ 384
-#define GRID_ 385
-#define GZ_ 386
-#define HANDLE_ 387
-#define HAS_ 388
-#define HEAD_ 389
-#define HEADER_ 390
-#define HEIGHT_ 391
-#define HELIOECLIPTIC_ 392
-#define HIDE_ 393
-#define HIGH_ 394
-#define HIGHLITE_ 395
-#define HISTEQU_ 396
-#define HISTOGRAM_ 397
-#define HORIZONTAL_ 398
-#define ICRS_ 399
-#define ID_ 400
-#define IIS_ 401
-#define IMAGE_ 402
-#define INCLUDE_ 403
-#define INCR_ 404
-#define INFO_ 405
-#define INTEGER_ 406
-#define ITERATION_ 407
-#define IRAF_ 408
-#define IRAFMIN_ 409
-#define J2000_ 410
-#define KEY_ 411
-#define KEYWORD_ 412
-#define LABEL_ 413
-#define LENGTH_ 414
-#define LEVEL_ 415
-#define LITTLEENDIAN_ 416
-#define LINE_ 417
-#define LINEAR_ 418
-#define LIST_ 419
-#define LOAD_ 420
-#define LOCAL_ 421
-#define LOG_ 422
-#define LOW_ 423
-#define MACOSX_ 424
-#define MAGNIFIER_ 425
-#define MAP_ 426
-#define MARK_ 427
-#define MARKER_ 428
-#define MASK_ 429
-#define MESSAGE_ 430
-#define METHOD_ 431
-#define MINMAX_ 432
-#define MIP_ 433
-#define MMAP_ 434
-#define MMAPINCR_ 435
-#define MOSAIC_ 436
-#define MODE_ 437
-#define MOTION_ 438
-#define MOVE_ 439
-#define NAME_ 440
-#define NAN_ 441
-#define NAXES_ 442
-#define NEW_ 443
-#define NEXT_ 444
-#define NO_ 445
-#define NONE_ 446
-#define NOW_ 447
-#define NUMBER_ 448
-#define OBJECT_ 449
-#define OFF_ 450
-#define ON_ 451
-#define ONLY_ 452
-#define OPTION_ 453
-#define ORIENT_ 454
-#define PAN_ 455
-#define PANNER_ 456
-#define PARSER_ 457
-#define PASTE_ 458
-#define PERF_ 459
-#define PHYSICAL_ 460
-#define PIXEL_ 461
-#define POINT_ 462
-#define POINTER_ 463
-#define POLYGON_ 464
-#define POSTSCRIPT_ 465
-#define POW_ 466
-#define PRINT_ 467
-#define PRESERVE_ 468
-#define PROJECTION_ 469
-#define CIRCLE3D_ 470
-#define PROPERTY_ 471
-#define PUBLICATION_ 472
-#define PROS_ 473
-#define RADIUS_ 474
-#define REGION_ 475
-#define REPLACE_ 476
-#define RESAMPLE_ 477
-#define RESET_ 478
-#define RESOLUTION_ 479
-#define RGB_ 480
-#define ROOT_ 481
-#define ROTATE_ 482
-#define RULER_ 483
-#define SAMPLE_ 484
-#define SAOIMAGE_ 485
-#define SAOTNG_ 486
-#define SAVE_ 487
-#define SCALE_ 488
-#define SCAN_ 489
-#define SCIENTIFIC_ 490
-#define SCOPE_ 491
-#define SEGMENT_ 492
-#define SELECT_ 493
-#define SET_ 494
-#define SEXAGESIMAL_ 495
-#define SHARED_ 496
-#define SHIFT_ 497
-#define SHMID_ 498
-#define SHOW_ 499
-#define SINH_ 500
-#define SIZE_ 501
-#define SLICE_ 502
-#define SMMAP_ 503
-#define SMOOTH_ 504
-#define SOCKET_ 505
-#define SOCKETGZ_ 506
-#define SOURCE_ 507
-#define SQRT_ 508
-#define SQUARED_ 509
-#define SSHARED_ 510
-#define STATUS_ 511
-#define SUPERGALACTIC_ 512
-#define SUM_ 513
-#define SYSTEM_ 514
-#define TABLE_ 515
-#define TAG_ 516
-#define TEMPLATE_ 517
-#define TEXT_ 518
-#define THREADS_ 519
-#define THREED_ 520
-#define THRESHOLD_ 521
-#define THICK_ 522
-#define TRANSPARENCY_ 523
-#define TO_ 524
-#define TOGGLE_ 525
-#define TOPHAT_ 526
-#define TRUE_ 527
-#define TYPE_ 528
-#define UNDO_ 529
-#define UNHIGHLITE_ 530
-#define UNLOAD_ 531
-#define UNSELECT_ 532
-#define UPDATE_ 533
-#define USER_ 534
-#define VALUE_ 535
-#define VAR_ 536
-#define VIEW_ 537
-#define VECTOR_ 538
-#define VERSION_ 539
-#define VERTEX_ 540
-#define VERTICAL_ 541
-#define WARP_ 542
-#define WCS_ 543
-#define WCSA_ 544
-#define WCSB_ 545
-#define WCSC_ 546
-#define WCSD_ 547
-#define WCSE_ 548
-#define WCSF_ 549
-#define WCSG_ 550
-#define WCSH_ 551
-#define WCSI_ 552
-#define WCSJ_ 553
-#define WCSK_ 554
-#define WCSL_ 555
-#define WCSM_ 556
-#define WCSN_ 557
-#define WCSO_ 558
-#define WCSP_ 559
-#define WCSQ_ 560
-#define WCSR_ 561
-#define WCSS_ 562
-#define WCST_ 563
-#define WCSU_ 564
-#define WCSV_ 565
-#define WCSW_ 566
-#define WCSX_ 567
-#define WCSY_ 568
-#define WCSZ_ 569
-#define WCS0_ 570
-#define WFPC2_ 571
-#define WIDTH_ 572
-#define WIN32_ 573
-#define XML_ 574
-#define XY_ 575
-#define YES_ 576
-#define ZMAX_ 577
-#define ZSCALE_ 578
-#define ZOOM_ 579
+#define BLT_ 298
+#define BOX_ 299
+#define BOXANNULUS_ 300
+#define BOXCAR_ 301
+#define BOXCIRCLE_ 302
+#define BPANDA_ 303
+#define BUFFER_ 304
+#define BW_ 305
+#define CALLBACK_ 306
+#define CANVAS_ 307
+#define CATALOG_ 308
+#define CELESTRIAL_ 309
+#define CENTER_ 310
+#define CENTROID_ 311
+#define CHANNEL_ 312
+#define CIRCLE_ 313
+#define CIAO_ 314
+#define CLEAR_ 315
+#define CLIP_ 316
+#define COLOR_ 317
+#define COLORBAR_ 318
+#define COLORMAP_ 319
+#define COLORSCALE_ 320
+#define COLORSPACE_ 321
+#define COLS_ 322
+#define COLUMN_ 323
+#define COMMAND_ 324
+#define COMPASS_ 325
+#define COMPOSITE_ 326
+#define COMPRESS_ 327
+#define CONTOUR_ 328
+#define CONTRAST_ 329
+#define COORDINATES_ 330
+#define COPY_ 331
+#define COUNT_ 332
+#define CPANDA_ 333
+#define CREATE_ 334
+#define CROP_ 335
+#define CROSS_ 336
+#define CROSSHAIR_ 337
+#define CUBE_ 338
+#define CURSOR_ 339
+#define CUT_ 340
+#define CMYK_ 341
+#define DASH_ 342
+#define DASHLIST_ 343
+#define DATA_ 344
+#define DATAMIN_ 345
+#define DATASEC_ 346
+#define DEBUG_ 347
+#define DEGREES_ 348
+#define DEFAULT_ 349
+#define DELETE_ 350
+#define DEPTH_ 351
+#define DETECTOR_ 352
+#define DIAMOND_ 353
+#define DIM_ 354
+#define DS9_ 355
+#define EDIT_ 356
+#define ECLIPTIC_ 357
+#define ELLIPSE_ 358
+#define ELLIPSEANNULUS_ 359
+#define END_ 360
+#define EPANDA_ 361
+#define EQUATORIAL_ 362
+#define ERASE_ 363
+#define EXT_ 364
+#define FACTOR_ 365
+#define FALSE_ 366
+#define FILE_ 367
+#define FILTER_ 368
+#define FIT_ 369
+#define FITS_ 370
+#define FITSY_ 371
+#define FIXED_ 372
+#define FK4_ 373
+#define FK4_NO_E_ 374
+#define FK5_ 375
+#define FONT_ 376
+#define FROM_ 377
+#define FRONT_ 378
+#define FULL_ 379
+#define FUNCTION_ 380
+#define GALACTIC_ 381
+#define GAUSSIAN_ 382
+#define GET_ 383
+#define GLOBAL_ 384
+#define GRAPHICS_ 385
+#define GRAY_ 386
+#define GRID_ 387
+#define GZ_ 388
+#define HANDLE_ 389
+#define HAS_ 390
+#define HEAD_ 391
+#define HEADER_ 392
+#define HEIGHT_ 393
+#define HELIOECLIPTIC_ 394
+#define HIDE_ 395
+#define HIGH_ 396
+#define HIGHLITE_ 397
+#define HISTEQU_ 398
+#define HISTOGRAM_ 399
+#define HORIZONTAL_ 400
+#define ICRS_ 401
+#define ID_ 402
+#define IIS_ 403
+#define IMAGE_ 404
+#define INCLUDE_ 405
+#define INCR_ 406
+#define INFO_ 407
+#define INTEGER_ 408
+#define ITERATION_ 409
+#define IRAF_ 410
+#define IRAFMIN_ 411
+#define J2000_ 412
+#define KEY_ 413
+#define KEYWORD_ 414
+#define LABEL_ 415
+#define LENGTH_ 416
+#define LEVEL_ 417
+#define LITTLEENDIAN_ 418
+#define LINE_ 419
+#define LINEAR_ 420
+#define LIST_ 421
+#define LOAD_ 422
+#define LOCAL_ 423
+#define LOG_ 424
+#define LOW_ 425
+#define MACOSX_ 426
+#define MAGNIFIER_ 427
+#define MAP_ 428
+#define MARK_ 429
+#define MARKER_ 430
+#define MASK_ 431
+#define MESSAGE_ 432
+#define METHOD_ 433
+#define MINMAX_ 434
+#define MIP_ 435
+#define MMAP_ 436
+#define MMAPINCR_ 437
+#define MOSAIC_ 438
+#define MODE_ 439
+#define MOTION_ 440
+#define MOVE_ 441
+#define NAME_ 442
+#define NAN_ 443
+#define NAXES_ 444
+#define NEW_ 445
+#define NEXT_ 446
+#define NO_ 447
+#define NONE_ 448
+#define NOW_ 449
+#define NUMBER_ 450
+#define OBJECT_ 451
+#define OFF_ 452
+#define ON_ 453
+#define ONLY_ 454
+#define OPTION_ 455
+#define ORIENT_ 456
+#define PAN_ 457
+#define PANNER_ 458
+#define PARAM_ 459
+#define PARSER_ 460
+#define PASTE_ 461
+#define PERF_ 462
+#define PHOTO_ 463
+#define PHYSICAL_ 464
+#define PIXEL_ 465
+#define PLOT2D_ 466
+#define PLOT3D_ 467
+#define POINT_ 468
+#define POINTER_ 469
+#define POLYGON_ 470
+#define POSTSCRIPT_ 471
+#define POW_ 472
+#define PRINT_ 473
+#define PRESERVE_ 474
+#define PROJECTION_ 475
+#define PROPERTY_ 476
+#define PUBLICATION_ 477
+#define PROS_ 478
+#define RADIUS_ 479
+#define REGION_ 480
+#define REPLACE_ 481
+#define RESAMPLE_ 482
+#define RESET_ 483
+#define RESOLUTION_ 484
+#define RGB_ 485
+#define ROOT_ 486
+#define ROTATE_ 487
+#define RULER_ 488
+#define SAMPLE_ 489
+#define SAOIMAGE_ 490
+#define SAOTNG_ 491
+#define SAVE_ 492
+#define SCALE_ 493
+#define SCAN_ 494
+#define SCIENTIFIC_ 495
+#define SCOPE_ 496
+#define SEGMENT_ 497
+#define SELECT_ 498
+#define SET_ 499
+#define SEXAGESIMAL_ 500
+#define SHAPE_ 501
+#define SHARED_ 502
+#define SHIFT_ 503
+#define SHMID_ 504
+#define SHOW_ 505
+#define SINH_ 506
+#define SIZE_ 507
+#define SLICE_ 508
+#define SMMAP_ 509
+#define SMOOTH_ 510
+#define SOCKET_ 511
+#define SOCKETGZ_ 512
+#define SOURCE_ 513
+#define SQRT_ 514
+#define SQUARED_ 515
+#define SSHARED_ 516
+#define STATS_ 517
+#define STATUS_ 518
+#define SUPERGALACTIC_ 519
+#define SUM_ 520
+#define SYSTEM_ 521
+#define TABLE_ 522
+#define TAG_ 523
+#define TEMPLATE_ 524
+#define TEXT_ 525
+#define THREADS_ 526
+#define THREED_ 527
+#define THRESHOLD_ 528
+#define THICK_ 529
+#define TRANSPARENCY_ 530
+#define TO_ 531
+#define TOGGLE_ 532
+#define TOPHAT_ 533
+#define TRUE_ 534
+#define TYPE_ 535
+#define UNDO_ 536
+#define UNHIGHLITE_ 537
+#define UNLOAD_ 538
+#define UNSELECT_ 539
+#define UPDATE_ 540
+#define USER_ 541
+#define VALUE_ 542
+#define VAR_ 543
+#define VIEW_ 544
+#define VECTOR_ 545
+#define VERSION_ 546
+#define VERTEX_ 547
+#define VERTICAL_ 548
+#define WARP_ 549
+#define WCS_ 550
+#define WCSA_ 551
+#define WCSB_ 552
+#define WCSC_ 553
+#define WCSD_ 554
+#define WCSE_ 555
+#define WCSF_ 556
+#define WCSG_ 557
+#define WCSH_ 558
+#define WCSI_ 559
+#define WCSJ_ 560
+#define WCSK_ 561
+#define WCSL_ 562
+#define WCSM_ 563
+#define WCSN_ 564
+#define WCSO_ 565
+#define WCSP_ 566
+#define WCSQ_ 567
+#define WCSR_ 568
+#define WCSS_ 569
+#define WCST_ 570
+#define WCSU_ 571
+#define WCSV_ 572
+#define WCSW_ 573
+#define WCSX_ 574
+#define WCSY_ 575
+#define WCSZ_ 576
+#define WCS0_ 577
+#define WFPC2_ 578
+#define WIDTH_ 579
+#define WIN32_ 580
+#define XML_ 581
+#define XY_ 582
+#define YES_ 583
+#define ZMAX_ 584
+#define ZSCALE_ 585
+#define ZOOM_ 586
 
 
 
@@ -746,8 +760,8 @@
 extern int frlex(void*, frFlexLexer*);
 extern void frerror(Base*, frFlexLexer*, const char*);
 
-static CoordSystem currentCoord = IMAGE;
-static SkyFrame currentSky = FK5;
+static Coord::CoordSystem currentCoord = Coord::IMAGE;
+static Coord::SkyFrame currentSky = Coord::FK5;
 
 static unsigned short defaultProps = Marker::SELECT | Marker::HIGHLITE |
 		Marker::EDIT | Marker::MOVE | Marker::ROTATE | 
@@ -800,7 +814,7 @@ typedef union YYSTYPE
   int dash[2];
 }
 /* Line 193 of yacc.c.  */
-#line 804 "parser.C"
+#line 818 "parser.C"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -813,7 +827,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 817 "parser.C"
+#line 831 "parser.C"
 
 #ifdef short
 # undef short
@@ -1026,22 +1040,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  318
+#define YYFINAL  321
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   5503
+#define YYLAST   5336
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  329
+#define YYNTOKENS  336
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  184
+#define YYNNTS  188
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  1143
+#define YYNRULES  1156
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  2522
+#define YYNSTATES  2525
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   579
+#define YYMAXUTOK   586
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1055,9 +1069,9 @@ static const yytype_uint16 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   328,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   326,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   327,   325,
+       2,   335,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   333,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   334,   332,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1106,7 +1120,8 @@ static const yytype_uint16 yytranslate[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331
 };
 
 #if YYDEBUG
@@ -1131,663 +1146,665 @@ static const yytype_uint16 yyprhs[] =
      334,   336,   338,   340,   342,   344,   346,   347,   349,   351,
      352,   354,   356,   358,   360,   362,   364,   366,   368,   369,
      371,   373,   374,   376,   378,   379,   381,   383,   384,   386,
-     388,   389,   391,   392,   394,   396,   400,   403,   406,   409,
-     412,   415,   420,   423,   426,   429,   433,   436,   439,   441,
-     444,   446,   449,   454,   460,   463,   467,   473,   480,   482,
-     484,   486,   494,   506,   515,   528,   531,   534,   537,   540,
-     543,   546,   549,   552,   555,   557,   559,   561,   563,   565,
-     567,   569,   572,   575,   577,   579,   581,   583,   585,   588,
-     591,   594,   602,   613,   615,   618,   620,   628,   639,   641,
-     644,   647,   650,   654,   657,   660,   662,   665,   673,   681,
-     686,   689,   691,   693,   698,   711,   714,   716,   718,   719,
-     726,   735,   738,   742,   746,   750,   751,   755,   760,   765,
-     770,   774,   778,   780,   784,   790,   795,   800,   804,   808,
-     811,   814,   817,   820,   822,   825,   828,   831,   834,   837,
-     840,   843,   845,   848,   851,   855,   863,   866,   869,   871,
-     875,   878,   881,   883,   886,   895,   898,   901,   904,   907,
-     909,   914,   922,   925,   928,   930,   932,   934,   937,   939,
-     941,   944,   946,   947,   950,   953,   955,   957,   959,   962,
-     965,   968,   970,   971,   973,   975,   977,   979,   981,   983,
-     985,   987,   989,   991,   994,   996,  1001,  1007,  1008,  1011,
-    1013,  1019,  1022,  1025,  1028,  1030,  1032,  1034,  1037,  1039,
-    1042,  1044,  1046,  1048,  1050,  1052,  1053,  1055,  1056,  1058,
-    1064,  1071,  1075,  1080,  1085,  1089,  1096,  1099,  1101,  1106,
-    1108,  1110,  1115,  1122,  1130,  1136,  1138,  1140,  1145,  1151,
-    1153,  1155,  1157,  1161,  1162,  1164,  1167,  1169,  1175,  1177,
-    1180,  1182,  1187,  1191,  1194,  1196,  1199,  1201,  1207,  1210,
-    1212,  1214,  1218,  1221,  1222,  1224,  1226,  1231,  1234,  1235,
-    1237,  1238,  1240,  1242,  1244,  1246,  1248,  1250,  1252,  1254,
-    1256,  1258,  1260,  1262,  1264,  1266,  1268,  1269,  1272,  1275,
-    1276,  1278,  1280,  1287,  1289,  1291,  1293,  1295,  1298,  1300,
-    1302,  1304,  1306,  1309,  1311,  1313,  1315,  1318,  1320,  1322,
-    1325,  1328,  1329,  1331,  1332,  1334,  1336,  1338,  1340,  1342,
-    1344,  1346,  1348,  1351,  1354,  1356,  1360,  1362,  1365,  1368,
-    1373,  1380,  1382,  1393,  1395,  1398,  1402,  1406,  1409,  1412,
-    1415,  1418,  1423,  1428,  1433,  1437,  1441,  1447,  1452,  1457,
-    1462,  1466,  1470,  1474,  1478,  1481,  1484,  1489,  1493,  1497,
-    1501,  1506,  1511,  1516,  1521,  1527,  1532,  1539,  1547,  1552,
-    1557,  1563,  1566,  1570,  1573,  1576,  1580,  1584,  1588,  1592,
-    1597,  1601,  1607,  1614,  1618,  1622,  1627,  1631,  1635,  1639,
-    1643,  1647,  1653,  1657,  1661,  1666,  1670,  1673,  1676,  1678,
-    1682,  1687,  1692,  1697,  1702,  1707,  1714,  1719,  1724,  1730,
-    1735,  1740,  1745,  1750,  1756,  1761,  1768,  1776,  1781,  1786,
-    1792,  1798,  1804,  1810,  1816,  1822,  1830,  1836,  1842,  1849,
-    1855,  1861,  1867,  1873,  1880,  1886,  1894,  1903,  1909,  1915,
-    1922,  1926,  1930,  1934,  1938,  1942,  1948,  1952,  1956,  1961,
-    1964,  1967,  1971,  1975,  1979,  1983,  1988,  1992,  1998,  2005,
-    2009,  2013,  2018,  2022,  2026,  2030,  2034,  2038,  2044,  2048,
-    2052,  2057,  2064,  2071,  2073,  2075,  2077,  2080,  2083,  2086,
-    2090,  2094,  2097,  2100,  2103,  2105,  2109,  2114,  2117,  2118,
-    2122,  2124,  2126,  2129,  2132,  2135,  2138,  2143,  2148,  2152,
-    2157,  2163,  2171,  2180,  2187,  2196,  2206,  2213,  2220,  2228,
-    2239,  2251,  2264,  2274,  2280,  2286,  2293,  2297,  2303,  2309,
-    2315,  2322,  2328,  2333,  2343,  2354,  2366,  2376,  2383,  2390,
-    2397,  2404,  2411,  2418,  2425,  2432,  2439,  2447,  2450,  2455,
-    2460,  2465,  2470,  2476,  2481,  2486,  2492,  2496,  2501,  2506,
-    2511,  2518,  2526,  2535,  2545,  2552,  2563,  2575,  2588,  2598,
-    2602,  2605,  2609,  2615,  2622,  2630,  2635,  2639,  2643,  2650,
-    2657,  2664,  2672,  2677,  2685,  2696,  2702,  2708,  2715,  2720,
-    2725,  2729,  2736,  2744,  2752,  2755,  2759,  2763,  2767,  2772,
-    2775,  2778,  2783,  2791,  2802,  2806,  2808,  2812,  2815,  2818,
-    2821,  2824,  2828,  2834,  2839,  2845,  2848,  2856,  2860,  2863,
-    2866,  2870,  2873,  2876,  2879,  2883,  2886,  2890,  2895,  2899,
-    2903,  2909,  2916,  2921,  2924,  2928,  2931,  2934,  2939,  2943,
-    2947,  2950,  2954,  2956,  2960,  2962,  2965,  2968,  2971,  2973,
-    2975,  2977,  2979,  2982,  2984,  2987,  2990,  2992,  2995,  2998,
-    3000,  3003,  3005,  3007,  3009,  3011,  3013,  3015,  3017,  3019,
-    3020,  3022,  3025,  3028,  3031,  3035,  3041,  3049,  3060,  3068,
-    3078,  3091,  3099,  3109,  3122,  3129,  3136,  3144,  3154,  3160,
-    3168,  3179,  3186,  3193,  3200,  3207,  3214,  3221,  3228,  3234,
-    3241,  3249,  3252,  3255,  3259,  3264,  3269,  3274,  3277,  3282,
-    3287,  3289,  3291,  3293,  3295,  3297,  3299,  3301,  3303,  3306,
-    3308,  3310,  3314,  3318,  3321,  3324,  3328,  3333,  3338,  3344,
-    3349,  3355,  3360,  3366,  3370,  3375,  3381,  3386,  3392,  3396,
-    3402,  3407,  3413,  3416,  3420,  3424,  3429,  3435,  3439,  3443,
-    3447,  3452,  3458,  3463,  3469,  3474,  3480,  3485,  3491,  3495,
-    3500,  3506,  3511,  3517,  3520,  3523,  3527,  3533,  3538,  3545,
-    3552,  3556,  3563,  3568,  3575,  3581,  3585,  3590,  3596,  3600,
-    3606,  3610,  3616,  3620,  3623,  3627,  3633,  3638,  3645,  3649,
-    3652,  3655,  3659,  3662,  3666,  3669,  3673,  3679,  3684,  3691,
-    3694,  3697,  3700,  3702,  3707,  3709,  3712,  3715,  3718,  3721,
-    3724,  3727,  3730,  3734,  3737,  3741,  3744,  3748,  3750,  3752,
-    3754,  3756,  3758,  3759,  3762,  3763,  3766,  3767,  3769,  3770,
-    3771,  3773,  3775,  3777,  3785,  3794,  3797,  3802,  3805,  3810,
-    3817,  3820,  3822,  3824,  3828,  3832,  3834,  3838,  3843,  3846,
-    3848,  3852,  3856,  3861,  3865,  3869,  3873,  3875,  3877,  3879,
-    3881,  3883,  3885,  3887,  3889,  3891,  3893,  3895,  3897,  3899,
-    3901,  3904,  3905,  3906,  3909,  3911,  3915,  3917,  3921,  3923,
-    3926,  3929,  3931,  3935,  3936,  3937,  3940,  3943,  3945,  3949,
-    3955,  3957,  3960,  3963,  3966,  3968,  3970,  3972,  3974,  3979,
-    3982,  3986,  3990,  3993,  3997,  4000,  4003,  4006,  4010,  4014,
-    4018,  4021,  4025,  4027,  4031,  4035,  4037,  4040,  4043,  4046,
-    4049,  4051,  4053,  4055,  4057,  4060,  4063,  4067,  4071,  4073,
-    4076,  4080,  4084,  4086,  4089,  4091,  4093,  4096,  4099,  4104,
-    4106,  4109,  4112,  4115,  4119,  4121,  4123,  4125,  4128,  4131,
-    4135,  4139,  4143,  4146,  4149,  4152,  4156,  4160,  4164,  4168,
-    4172,  4176,  4180,  4184,  4188,  4191,  4193,  4195,  4197,  4199,
-    4200,  4206,  4208,  4215,  4219,  4221,  4224,  4227,  4231,  4235,
-    4238,  4241,  4244,  4247,  4250,  4253,  4257,  4260,  4263,  4267,
-    4269,  4273,  4277,  4279,  4282,  4288,  4295,  4302,  4305,  4307,
-    4310,  4313,  4319,  4326
+     388,   389,   391,   393,   395,   397,   399,   401,   403,   404,
+     406,   408,   410,   412,   413,   415,   417,   418,   420,   422,
+     426,   429,   432,   435,   438,   441,   446,   449,   452,   455,
+     459,   462,   465,   467,   470,   472,   475,   480,   486,   489,
+     493,   499,   506,   508,   510,   512,   520,   532,   541,   554,
+     557,   560,   563,   566,   569,   572,   575,   578,   581,   583,
+     585,   587,   589,   591,   593,   595,   598,   601,   603,   605,
+     607,   609,   611,   614,   617,   620,   628,   639,   641,   644,
+     646,   654,   665,   667,   670,   673,   676,   680,   683,   686,
+     688,   691,   699,   707,   712,   715,   717,   719,   724,   737,
+     740,   742,   744,   745,   752,   761,   764,   768,   772,   776,
+     777,   781,   786,   791,   796,   800,   804,   806,   810,   816,
+     821,   826,   830,   834,   837,   840,   843,   846,   848,   851,
+     854,   857,   860,   863,   866,   869,   871,   874,   877,   881,
+     889,   892,   895,   897,   901,   904,   907,   909,   912,   921,
+     924,   927,   930,   933,   935,   940,   948,   951,   954,   956,
+     958,   960,   963,   965,   967,   970,   972,   973,   976,   979,
+     981,   983,   985,   988,   991,   994,   996,   997,   999,  1001,
+    1003,  1005,  1007,  1009,  1011,  1013,  1015,  1017,  1020,  1022,
+    1027,  1033,  1034,  1037,  1039,  1045,  1048,  1051,  1054,  1056,
+    1058,  1060,  1063,  1065,  1068,  1070,  1072,  1074,  1076,  1078,
+    1079,  1081,  1082,  1084,  1090,  1097,  1101,  1106,  1111,  1115,
+    1122,  1125,  1127,  1132,  1134,  1136,  1141,  1148,  1156,  1162,
+    1164,  1166,  1171,  1177,  1179,  1181,  1183,  1187,  1188,  1190,
+    1193,  1195,  1201,  1203,  1206,  1208,  1213,  1217,  1220,  1222,
+    1225,  1227,  1233,  1236,  1238,  1240,  1244,  1247,  1248,  1250,
+    1252,  1257,  1260,  1261,  1263,  1264,  1266,  1268,  1270,  1272,
+    1274,  1276,  1278,  1280,  1282,  1284,  1286,  1288,  1290,  1292,
+    1294,  1295,  1298,  1301,  1302,  1304,  1306,  1313,  1315,  1317,
+    1319,  1321,  1324,  1327,  1329,  1331,  1333,  1335,  1338,  1340,
+    1342,  1344,  1347,  1349,  1351,  1354,  1357,  1360,  1361,  1363,
+    1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,  1380,  1383,
+    1386,  1388,  1392,  1394,  1397,  1400,  1405,  1412,  1414,  1425,
+    1427,  1430,  1434,  1438,  1441,  1444,  1447,  1450,  1454,  1459,
+    1464,  1469,  1473,  1477,  1483,  1488,  1493,  1498,  1502,  1506,
+    1510,  1514,  1517,  1520,  1525,  1529,  1533,  1537,  1542,  1547,
+    1552,  1557,  1563,  1568,  1575,  1583,  1588,  1593,  1599,  1602,
+    1606,  1609,  1612,  1616,  1620,  1624,  1628,  1633,  1637,  1643,
+    1650,  1654,  1658,  1663,  1667,  1671,  1675,  1679,  1683,  1689,
+    1693,  1697,  1702,  1706,  1709,  1712,  1714,  1718,  1723,  1728,
+    1733,  1738,  1743,  1750,  1755,  1760,  1766,  1771,  1776,  1781,
+    1786,  1792,  1797,  1804,  1812,  1817,  1822,  1828,  1834,  1840,
+    1846,  1852,  1858,  1866,  1872,  1878,  1885,  1891,  1897,  1903,
+    1909,  1916,  1922,  1930,  1939,  1945,  1951,  1958,  1962,  1966,
+    1970,  1974,  1978,  1984,  1988,  1992,  1997,  2000,  2003,  2007,
+    2011,  2015,  2019,  2024,  2028,  2034,  2041,  2045,  2049,  2054,
+    2058,  2062,  2066,  2070,  2074,  2080,  2084,  2088,  2093,  2100,
+    2107,  2109,  2111,  2113,  2116,  2119,  2122,  2126,  2130,  2133,
+    2136,  2139,  2141,  2145,  2150,  2153,  2154,  2158,  2160,  2162,
+    2165,  2168,  2171,  2174,  2179,  2184,  2189,  2194,  2200,  2204,
+    2209,  2215,  2223,  2232,  2239,  2248,  2258,  2265,  2272,  2280,
+    2291,  2303,  2316,  2326,  2332,  2338,  2345,  2349,  2355,  2361,
+    2367,  2374,  2380,  2385,  2395,  2406,  2418,  2428,  2435,  2442,
+    2449,  2456,  2463,  2470,  2477,  2484,  2491,  2499,  2502,  2507,
+    2512,  2517,  2522,  2528,  2533,  2538,  2544,  2548,  2553,  2558,
+    2563,  2570,  2578,  2587,  2597,  2604,  2615,  2627,  2640,  2650,
+    2654,  2657,  2661,  2667,  2674,  2682,  2687,  2691,  2695,  2702,
+    2709,  2716,  2724,  2729,  2734,  2741,  2751,  2756,  2760,  2767,
+    2775,  2783,  2786,  2790,  2794,  2798,  2803,  2806,  2809,  2814,
+    2822,  2833,  2837,  2839,  2843,  2846,  2849,  2852,  2855,  2859,
+    2865,  2870,  2876,  2879,  2887,  2891,  2894,  2897,  2901,  2904,
+    2907,  2910,  2914,  2917,  2921,  2926,  2930,  2934,  2940,  2947,
+    2952,  2955,  2959,  2962,  2965,  2970,  2974,  2978,  2981,  2985,
+    2987,  2991,  2993,  2996,  2999,  3002,  3004,  3006,  3008,  3010,
+    3013,  3015,  3018,  3021,  3023,  3026,  3029,  3031,  3034,  3036,
+    3038,  3040,  3042,  3044,  3046,  3048,  3050,  3051,  3053,  3056,
+    3059,  3062,  3066,  3072,  3080,  3088,  3095,  3102,  3109,  3115,
+    3122,  3129,  3136,  3143,  3150,  3157,  3164,  3175,  3183,  3191,
+    3199,  3209,  3219,  3230,  3243,  3256,  3259,  3262,  3266,  3271,
+    3276,  3281,  3284,  3289,  3294,  3296,  3298,  3300,  3302,  3304,
+    3306,  3308,  3310,  3313,  3315,  3317,  3321,  3325,  3333,  3339,
+    3343,  3347,  3350,  3353,  3357,  3362,  3367,  3373,  3378,  3384,
+    3389,  3395,  3399,  3404,  3410,  3415,  3421,  3425,  3431,  3436,
+    3442,  3445,  3449,  3453,  3458,  3464,  3468,  3472,  3476,  3481,
+    3487,  3492,  3498,  3503,  3509,  3514,  3520,  3524,  3529,  3535,
+    3540,  3546,  3549,  3552,  3556,  3562,  3567,  3574,  3581,  3585,
+    3589,  3594,  3601,  3607,  3612,  3618,  3621,  3625,  3631,  3636,
+    3643,  3647,  3650,  3653,  3657,  3660,  3664,  3667,  3671,  3677,
+    3682,  3689,  3692,  3695,  3698,  3700,  3705,  3707,  3710,  3713,
+    3716,  3719,  3722,  3725,  3728,  3732,  3735,  3739,  3742,  3746,
+    3748,  3750,  3752,  3754,  3756,  3757,  3760,  3761,  3764,  3765,
+    3767,  3768,  3769,  3771,  3773,  3775,  3783,  3792,  3795,  3800,
+    3803,  3808,  3815,  3818,  3820,  3822,  3826,  3830,  3832,  3836,
+    3841,  3844,  3846,  3850,  3854,  3859,  3863,  3867,  3871,  3873,
+    3875,  3877,  3879,  3881,  3883,  3885,  3887,  3889,  3891,  3893,
+    3895,  3897,  3899,  3902,  3903,  3904,  3907,  3909,  3913,  3915,
+    3919,  3921,  3924,  3927,  3929,  3933,  3934,  3935,  3938,  3941,
+    3943,  3947,  3953,  3955,  3958,  3961,  3964,  3966,  3968,  3970,
+    3972,  3977,  3980,  3984,  3988,  3991,  3995,  3998,  4001,  4004,
+    4008,  4012,  4016,  4019,  4023,  4025,  4029,  4033,  4035,  4038,
+    4041,  4044,  4047,  4049,  4051,  4053,  4055,  4058,  4061,  4065,
+    4069,  4071,  4074,  4078,  4082,  4084,  4087,  4089,  4091,  4094,
+    4097,  4102,  4104,  4107,  4110,  4113,  4117,  4119,  4121,  4123,
+    4126,  4129,  4132,  4136,  4140,  4144,  4147,  4150,  4153,  4157,
+    4161,  4165,  4169,  4173,  4177,  4181,  4185,  4189,  4192,  4194,
+    4196,  4198,  4200,  4201,  4207,  4209,  4216,  4220,  4222,  4225,
+    4228,  4232,  4236,  4239,  4242,  4245,  4248,  4251,  4254,  4258,
+    4261,  4264,  4268,  4270,  4274,  4278,  4280,  4283,  4289,  4296,
+    4303,  4306,  4308,  4311,  4314,  4320,  4327
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     330,     0,    -1,    90,   332,    -1,    40,   357,    -1,    38,
-      61,     5,    -1,    54,    -1,    59,    -1,    60,   362,    -1,
-      63,   369,    -1,    64,   371,    -1,    71,   372,    -1,    78,
-     376,    -1,    80,   378,    -1,    89,   333,    -1,   114,   379,
-      -1,   126,   380,    -1,   130,   418,    -1,   133,   420,    -1,
-     138,    -1,   140,   333,    -1,   146,   425,    -1,   165,   428,
-      -1,   169,   444,    -1,   170,   445,    -1,   173,   461,   446,
-      -1,   174,   480,    -1,   186,    61,     5,    -1,   199,   481,
-      -1,   200,   482,    -1,   201,   485,    -1,   210,   486,    -1,
-     223,    -1,   220,   461,   488,    -1,   225,   492,    -1,   227,
-     493,    -1,   232,   495,    -1,   244,    -1,   249,   501,    -1,
-     265,   356,    -1,   276,    -1,   278,   503,    -1,   284,    -1,
-     287,   505,    -1,   288,   506,    -1,   318,   510,    -1,   324,
-     511,    -1,     3,    -1,     4,    -1,   333,    -1,    29,   333,
-      -1,   181,   333,    -1,   202,   333,    -1,   204,   333,    -1,
-     288,   333,    -1,    40,   333,    -1,    70,   333,    -1,    78,
-     333,    -1,   131,   333,    -1,   225,   333,    -1,     4,    -1,
-     321,    -1,   325,    -1,   196,    -1,   272,    -1,   190,    -1,
-     326,    -1,   195,    -1,   109,    -1,    -1,    92,    -1,   115,
-      -1,   235,    -1,   151,    -1,    -1,   226,    35,    -1,   122,
-      35,    -1,   226,    -1,   122,    -1,   226,   265,    -1,   122,
-     265,    -1,    -1,   337,    -1,   331,    -1,     7,    -1,     8,
-      -1,     9,    -1,    10,    -1,    11,    -1,   338,   338,    -1,
-     339,   340,    -1,   340,   340,    -1,   331,   331,    -1,   147,
-      -1,   205,    -1,    95,    -1,    19,    -1,   343,    -1,   288,
-      -1,   289,    -1,   290,    -1,   291,    -1,   292,    -1,   293,
-      -1,   294,    -1,   295,    -1,   296,    -1,   297,    -1,   298,
-      -1,   299,    -1,   300,    -1,   301,    -1,   302,    -1,   303,
-      -1,   304,    -1,   305,    -1,   306,    -1,   307,    -1,   308,
-      -1,   309,    -1,   310,    -1,   311,    -1,   312,    -1,   313,
-      -1,   314,    -1,   315,    -1,    51,    -1,   201,    -1,   163,
-      -1,   167,    -1,   211,    -1,   253,    -1,   254,    -1,    28,
-      -1,   245,    -1,   141,    -1,    -1,   116,    -1,   117,    -1,
-      33,    -1,   118,    -1,   155,    -1,   144,    -1,   124,    -1,
-     257,    -1,   100,    -1,   137,    -1,    -1,    91,    -1,   240,
-      -1,    -1,    91,    -1,    24,    -1,    25,    -1,   331,    -1,
-     177,    -1,   323,    -1,   322,    -1,   279,    -1,    -1,   243,
-      -1,   156,    -1,    -1,    17,    -1,   149,    -1,    -1,   147,
-      -1,   174,    -1,    -1,   191,    -1,   131,    -1,    -1,     4,
-      -1,    -1,    39,    -1,   161,    -1,   282,   331,   331,    -1,
-     140,   333,    -1,   176,   491,    -1,   264,     4,    -1,   266,
-     331,    -1,    12,   358,    -1,    66,     5,     5,     5,    -1,
-      94,     4,    -1,   108,   359,    -1,   123,   360,    -1,    48,
-     246,     4,    -1,   269,   361,    -1,   111,     5,    -1,    54,
-      -1,   331,   331,    -1,   331,    -1,   331,   331,    -1,   331,
-      12,   331,   331,    -1,   331,   331,    12,   331,   331,    -1,
-     269,   331,    -1,   269,   331,   331,    -1,   269,   331,    12,
-     331,   331,    -1,   269,   331,   331,    12,   331,   331,    -1,
-      32,    -1,   258,    -1,   112,    -1,   331,   331,    12,    54,
-       5,     5,     5,    -1,   331,   331,     4,   331,   331,    12,
-      54,     5,     5,     5,     5,    -1,   331,   331,    12,   331,
-     331,     5,     5,     5,    -1,   331,   331,     4,   331,   331,
-      12,   331,   331,     5,     5,     5,     5,    -1,   236,   364,
-      -1,   182,   365,    -1,   177,   366,    -1,   279,   363,    -1,
-     323,   368,    -1,   213,   333,    -1,   331,   331,    -1,   168,
-     331,    -1,   139,   331,    -1,   127,    -1,   166,    -1,   331,
-      -1,   177,    -1,   323,    -1,   322,    -1,   279,    -1,   182,
-     367,    -1,   229,     4,    -1,    30,    -1,   234,    -1,   229,
-      -1,    88,    -1,   154,    -1,    72,   331,    -1,   229,     4,
-      -1,   162,     4,    -1,     4,   331,   331,     4,     6,     6,
-       4,    -1,   225,   331,   331,   331,   331,   331,   331,     4,
-       6,     4,    -1,    37,    -1,   183,   370,    -1,   103,    -1,
-       4,   331,   331,     4,     6,     6,     4,    -1,   225,   331,
-     331,   331,   331,   331,   331,     4,     6,     4,    -1,   345,
-      -1,   167,   331,    -1,    31,   373,    -1,    61,     5,    -1,
-      74,   342,   346,    -1,    77,   374,    -1,    85,     4,    -1,
-      93,    -1,    93,    17,    -1,   165,     5,     4,     4,     5,
-     342,   346,    -1,   203,     5,     4,     4,     6,   342,   346,
-      -1,   232,     5,   342,   346,    -1,   317,     4,    -1,   134,
-      -1,   189,    -1,   232,     5,   342,   346,    -1,     5,     4,
-       4,   375,     4,     4,   345,   331,   349,   331,   331,     5,
-      -1,   209,   468,    -1,   249,    -1,    42,    -1,    -1,   331,
-     331,   331,   331,   342,   346,    -1,    54,   341,   342,   346,
-     331,   331,   342,   348,    -1,   265,   377,    -1,    37,   331,
-     331,    -1,   183,   331,   331,    -1,   103,   331,   331,    -1,
-      -1,   331,   331,   342,    -1,    37,   331,   331,     4,    -1,
-     183,   331,   331,     4,    -1,   103,   331,   331,     4,    -1,
-     344,   331,   331,    -1,   342,   346,   341,    -1,   333,    -1,
-     287,   331,   331,    -1,    37,   183,   344,   331,   331,    -1,
-     183,   344,   331,   331,    -1,    37,   183,   342,   341,    -1,
-     183,   342,   341,    -1,   133,   107,     5,    -1,    38,    61,
-      -1,    40,   381,    -1,    60,   383,    -1,    63,   387,    -1,
-      62,    -1,    64,   389,    -1,    71,   391,    -1,    73,   395,
-      -1,    78,   396,    -1,    80,   397,    -1,    82,   398,    -1,
-      87,   399,    -1,    89,    -1,   113,   403,    -1,   130,   408,
-      -1,   142,     5,     5,    -1,   143,    83,     5,     5,   331,
-     331,   344,    -1,   146,   401,    -1,   150,   400,    -1,   177,
-      -1,   173,   461,   455,    -1,   174,   409,    -1,   186,    61,
-      -1,   199,    -1,   200,   410,    -1,   206,   260,   344,   331,
-     331,     4,     4,     5,    -1,   225,   411,    -1,   227,   412,
-      -1,   249,   413,    -1,   265,   414,    -1,   273,    -1,   280,
-     344,   331,   331,    -1,   286,    83,     5,     5,   331,   331,
-     344,    -1,   288,   415,    -1,   324,   417,    -1,    94,    -1,
-     108,    -1,   123,    -1,    48,   246,    -1,    82,    -1,   111,
-      -1,    66,   382,    -1,   164,    -1,    -1,   177,     5,    -1,
-      97,     5,    -1,   384,    -1,   236,    -1,   182,    -1,   177,
-     385,    -1,   279,   160,    -1,   323,   386,    -1,   213,    -1,
-      -1,   331,    -1,   177,    -1,   323,    -1,   322,    -1,   279,
-      -1,   182,    -1,   229,    -1,    72,    -1,   229,    -1,   162,
-      -1,   160,   388,    -1,     4,    -1,     4,   344,   331,   331,
-      -1,     4,   331,   331,   345,   331,    -1,    -1,   160,   390,
-      -1,   167,    -1,     4,   331,   331,   345,   331,    -1,   342,
-     346,    -1,    31,   392,    -1,    60,   393,    -1,    61,    -1,
-      85,    -1,   160,    -1,   193,   160,    -1,   176,    -1,    64,
-     394,    -1,   249,    -1,   317,    -1,    61,    -1,    85,    -1,
-     317,    -1,    -1,   182,    -1,    -1,   167,    -1,   331,   331,
-     342,   346,   347,    -1,   344,   331,   331,   342,   346,   347,
-      -1,   331,   342,     4,    -1,   120,   331,   342,     4,    -1,
-     269,   331,   342,     4,    -1,   342,   346,   347,    -1,    54,
-     342,   346,   347,   342,   348,    -1,   265,   342,    -1,   344,
-      -1,   342,   346,   347,   334,    -1,   256,    -1,   344,    -1,
-     342,   346,   347,   334,    -1,   342,   346,   341,   331,   331,
-       5,    -1,     4,   342,   346,   341,   331,   331,     5,    -1,
-     344,   331,   331,     4,     4,    -1,     5,    -1,    60,    -1,
-     344,   331,   331,     5,    -1,     6,     4,     4,     4,     4,
-      -1,    82,    -1,   317,    -1,   136,    -1,   110,   185,   402,
-      -1,    -1,     4,    -1,   331,   331,    -1,   187,    -1,    54,
-     342,   346,   347,   334,    -1,    75,    -1,    94,   405,    -1,
-      41,    -1,   107,   344,   331,   331,    -1,   110,   185,   406,
-      -1,   135,   404,    -1,   136,    -1,   194,   185,    -1,   246,
-      -1,   246,   342,   346,   348,   334,    -1,   247,   407,    -1,
-     317,    -1,     4,    -1,     4,   157,     5,    -1,   288,     4,
-      -1,    -1,     4,    -1,   335,    -1,   335,   344,   331,   331,
-      -1,   335,     4,    -1,    -1,     4,    -1,    -1,   198,    -1,
-      61,    -1,   172,    -1,   268,    -1,   213,    -1,    56,    -1,
-     259,    -1,   282,    -1,   334,    -1,   123,    -1,   219,    -1,
-     282,    -1,   140,    -1,   176,    -1,   264,    -1,    -1,    16,
-     416,    -1,   185,   343,    -1,    -1,   208,    -1,   334,    -1,
-      77,   342,   346,   347,   419,     5,    -1,    93,    -1,    20,
-      -1,   217,    -1,    19,    -1,    71,   421,    -1,    78,    -1,
-      88,    -1,    89,    -1,    95,    -1,   113,   422,    -1,   130,
-      -1,   146,    -1,   154,    -1,   173,   423,    -1,   205,    -1,
-     249,    -1,   259,   342,    -1,   288,   424,    -1,    -1,    31,
-      -1,    -1,    40,    -1,    81,    -1,   181,    -1,   140,    -1,
-     238,    -1,   203,    -1,   274,    -1,   342,    -1,   105,   342,
-      -1,    53,   342,    -1,    18,    -1,   188,     4,     4,    -1,
-     106,    -1,   175,     5,    -1,    82,   427,    -1,   239,   110,
-     185,   426,    -1,   239,     6,     4,     4,     4,     4,    -1,
-     278,    -1,   288,   331,   331,   331,   331,   331,   331,   331,
-     331,     4,    -1,     5,    -1,     5,     4,    -1,     4,     4,
-      51,    -1,     4,     4,   342,    -1,   182,   333,    -1,    26,
-     429,    -1,   113,   431,    -1,   149,   443,    -1,     5,    14,
-       5,   352,    -1,     5,    15,     5,   352,    -1,     5,    56,
-       5,   352,    -1,     5,   179,   352,    -1,     5,   180,   352,
-      -1,     5,   241,   350,     4,   352,    -1,     5,   250,     4,
-     352,    -1,     5,   251,     4,   352,    -1,     5,   281,     5,
-     352,    -1,   225,    81,   430,    -1,     5,    14,     5,    -1,
-       5,    15,     5,    -1,     5,    56,     5,    -1,     5,   179,
-      -1,     5,   180,    -1,     5,   241,   350,     4,    -1,     5,
-     250,     4,    -1,     5,   251,     4,    -1,     5,   281,     5,
-      -1,     5,    14,     5,   352,    -1,     5,    15,     5,   352,
-      -1,     5,    56,     5,   352,    -1,     5,   179,   351,   352,
-      -1,     5,     5,   248,   351,   352,    -1,     5,   180,   351,
-     352,    -1,     5,   241,   350,     4,   351,   352,    -1,     5,
-     255,   350,     4,     4,   351,   352,    -1,     5,   250,     4,
-     352,    -1,     5,   251,     4,   352,    -1,     5,   281,     5,
-     351,   352,    -1,   247,   432,    -1,   107,    81,   433,    -1,
-     181,   434,    -1,   225,   440,    -1,     5,    14,     5,    -1,
-       5,    15,     5,    -1,     5,    56,     5,    -1,     5,   179,
-     351,    -1,     5,     5,   248,   351,    -1,     5,   180,   351,
-      -1,     5,   241,   350,     4,   351,    -1,     5,   255,   350,
-       4,     4,   351,    -1,     5,   250,     4,    -1,     5,   251,
-       4,    -1,     5,   281,     5,   351,    -1,     5,    14,     5,
-      -1,     5,    15,     5,    -1,     5,    56,     5,    -1,     5,
-     179,   351,    -1,     5,   180,   351,    -1,     5,   241,   350,
-       4,   351,    -1,     5,   250,     4,    -1,     5,   251,     4,
-      -1,     5,   281,     5,   351,    -1,   147,   153,   435,    -1,
-     153,   436,    -1,   147,   437,    -1,   438,    -1,   147,   316,
-     439,    -1,     5,    14,     5,   352,    -1,     5,    15,     5,
-     352,    -1,     5,    56,     5,   352,    -1,     5,   179,   351,
-     352,    -1,     5,   180,   351,   352,    -1,     5,   241,   350,
-       4,   351,   352,    -1,     5,   250,     4,   352,    -1,     5,
-     251,     4,   352,    -1,     5,   281,     5,   351,   352,    -1,
-       5,    14,     5,   352,    -1,     5,    15,     5,   352,    -1,
-       5,    56,     5,   352,    -1,     5,   179,   351,   352,    -1,
-       5,     5,   248,   351,   352,    -1,     5,   180,   351,   352,
-      -1,     5,   241,   350,     4,   351,   352,    -1,     5,   255,
-     350,     4,     4,   351,   352,    -1,     5,   250,     4,   352,
-      -1,     5,   251,     4,   352,    -1,     5,   281,     5,   351,
-     352,    -1,   343,     5,    14,     5,   352,    -1,   343,     5,
-      15,     5,   352,    -1,   343,     5,    56,     5,   352,    -1,
-     343,     5,   179,   351,   352,    -1,   343,     5,   180,   351,
-     352,    -1,   343,     5,   241,   350,     4,   351,   352,    -1,
-     343,     5,   250,     4,   352,    -1,   343,     5,   251,     4,
-     352,    -1,   343,     5,   281,     5,   351,   352,    -1,   343,
-       5,    14,     5,   352,    -1,   343,     5,    15,     5,   352,
-      -1,   343,     5,    56,     5,   352,    -1,   343,     5,   179,
-     351,   352,    -1,   343,     5,     5,   248,   351,   352,    -1,
-     343,     5,   180,   351,   352,    -1,   343,     5,   241,   350,
-       4,   351,   352,    -1,   343,     5,   255,   350,     4,     4,
-     351,   352,    -1,   343,     5,   250,     4,   352,    -1,   343,
-       5,   251,     4,   352,    -1,   343,     5,   281,     5,   351,
-     352,    -1,     5,    14,     5,    -1,     5,    15,     5,    -1,
-       5,    56,     5,    -1,     5,   179,   351,    -1,     5,   180,
-     351,    -1,     5,   241,   350,     4,   351,    -1,     5,   250,
-       4,    -1,     5,   251,     4,    -1,     5,   281,     5,   351,
-      -1,    81,   441,    -1,   147,   442,    -1,     5,    14,     5,
-      -1,     5,    15,     5,    -1,     5,    56,     5,    -1,     5,
-     179,   351,    -1,     5,     5,   248,   351,    -1,     5,   180,
-     351,    -1,     5,   241,   350,     4,   351,    -1,     5,   255,
-     350,     4,     4,   351,    -1,     5,   250,     4,    -1,     5,
-     251,     4,    -1,     5,   281,     5,   351,    -1,     5,    14,
-       5,    -1,     5,    15,     5,    -1,     5,    56,     5,    -1,
-       5,   179,   351,    -1,     5,   180,   351,    -1,     5,   241,
-     350,     4,   351,    -1,     5,   250,     4,    -1,     5,   251,
-       4,    -1,     5,   281,     5,   351,    -1,    87,     4,     4,
-       4,     4,     4,    -1,   177,     4,     4,     4,     4,     4,
-      -1,   103,    -1,   212,    -1,   333,    -1,   128,   333,    -1,
-      82,   333,    -1,    61,     5,    -1,     5,     4,     4,    -1,
-     278,   331,   331,    -1,   324,   331,    -1,    55,   449,    -1,
-      61,     5,    -1,    74,    -1,    67,   454,     5,    -1,    67,
-     454,   281,     5,    -1,    69,    93,    -1,    -1,    77,   447,
-     450,    -1,    83,    -1,    93,    -1,    93,    17,    -1,    99,
-     453,    -1,   119,     5,    -1,   140,    17,    -1,   140,   197,
-     331,   331,    -1,   140,   270,   331,   331,    -1,     4,    21,
-     337,    -1,     4,    21,   337,   344,    -1,     4,    21,   337,
-     342,   346,    -1,     4,    22,   219,   331,   331,     4,   344,
-      -1,     4,    22,   219,   331,   331,     4,   342,   348,    -1,
-       4,    22,   219,     5,   342,   348,    -1,     4,    44,   219,
-     331,   331,   331,     4,   344,    -1,     4,    44,   219,   331,
-     331,   331,     4,   342,   348,    -1,     4,    44,   219,     5,
-     342,   348,    -1,     4,    43,   219,   331,   331,   344,    -1,
-       4,    43,   219,   331,   331,   342,   348,    -1,     4,    47,
-      99,   337,   337,     4,   331,   331,   331,     4,    -1,     4,
-      47,    99,   337,   337,     4,   331,   331,   331,     4,   344,
-      -1,     4,    47,    99,   337,   337,     4,   331,   331,   331,
-       4,   342,   346,    -1,     4,    47,    99,     5,     5,   342,
-     346,   342,   348,    -1,     4,    50,   448,     5,     5,    -1,
-       4,    57,   219,   331,   344,    -1,     4,    57,   219,   331,
-     342,   348,    -1,     4,    61,     5,    -1,     4,    68,    27,
-     333,   333,    -1,     4,    68,   158,     5,     5,    -1,     4,
-      68,   219,   331,   344,    -1,     4,    68,   219,   331,   342,
-     348,    -1,     4,    68,   259,   342,   346,    -1,     4,    69,
-     127,   333,    -1,     4,    76,    99,   337,   337,     4,   331,
-     331,     4,    -1,     4,    76,    99,   337,   337,     4,   331,
-     331,     4,   344,    -1,     4,    76,    99,   337,   337,     4,
-     331,   331,     4,   342,   346,    -1,     4,    76,    99,     5,
-       5,   342,   346,   342,   348,    -1,     4,    77,    22,   219,
-     331,   331,    -1,     4,    77,    44,   219,   331,   331,    -1,
-       4,    77,    47,    21,   331,   331,    -1,     4,    77,    47,
-     219,   331,   331,    -1,     4,    77,   102,   219,   331,   331,
-      -1,     4,    77,   104,    21,   331,   331,    -1,     4,    77,
-     104,   219,   331,   331,    -1,     4,    77,    76,    21,   331,
-     331,    -1,     4,    77,    76,   219,   331,   331,    -1,     4,
-      77,   209,   285,     4,   331,   331,    -1,     4,    93,    -1,
-       4,    93,    22,     4,    -1,     4,    93,    44,     4,    -1,
-       4,    93,    47,     4,    -1,     4,    93,   102,     4,    -1,
-       4,    93,    50,   448,     5,    -1,     4,    93,   104,     4,
-      -1,     4,    93,    76,     4,    -1,     4,    93,   209,   285,
-       4,    -1,     4,    93,   261,    -1,     4,    93,   261,     5,
-      -1,     4,    93,   261,     4,    -1,     4,    99,    37,     4,
-      -1,     4,   101,   219,   331,   331,   344,    -1,     4,   101,
-     219,   331,   331,   342,   348,    -1,     4,   102,   219,   331,
-     331,   331,     4,   344,    -1,     4,   102,   219,   331,   331,
-     331,     4,   342,   348,    -1,     4,   102,   219,     5,   342,
-     348,    -1,     4,   104,    99,   337,   337,     4,   331,   331,
-     331,     4,    -1,     4,   104,    99,   337,   337,     4,   331,
-     331,   331,     4,   344,    -1,     4,   104,    99,   337,   337,
-       4,   331,   331,   331,     4,   342,   346,    -1,     4,   104,
-      99,     5,     5,   342,   346,   342,   348,    -1,     4,   119,
-       5,    -1,     4,   140,    -1,     4,   140,   197,    -1,     4,
-     162,    27,   333,   333,    -1,     4,   162,   207,   344,   341,
-     341,    -1,     4,   162,   207,   342,   346,   341,   341,    -1,
-       4,   184,   331,   331,    -1,     4,   184,   121,    -1,     4,
-     184,    34,    -1,     4,   184,   269,   344,   331,   331,    -1,
-       4,   184,   269,   342,   346,   341,    -1,     4,   209,   223,
-     331,   331,   344,    -1,     4,   209,   223,   331,   331,   342,
-     348,    -1,     4,   207,   246,     4,    -1,     4,   214,   344,
-     341,   341,   331,     4,    -1,     4,   214,   342,   346,   341,
-     341,   331,     4,   342,   348,    -1,     4,   214,   259,   342,
-     346,    -1,     4,   215,   331,   344,     4,    -1,     4,   215,
-     331,   342,   348,     4,    -1,     4,   215,   259,   342,    -1,
-       4,   216,   467,   333,    -1,     4,   227,    37,    -1,     4,
-     228,   207,   344,   341,   341,    -1,     4,   228,   207,   342,
-     346,   341,   341,    -1,     4,   228,   259,   342,   346,   342,
-     348,    -1,     4,   238,    -1,     4,   238,   197,    -1,     4,
-     261,     5,    -1,     4,   263,     5,    -1,     4,   263,   227,
-     333,    -1,     4,   275,    -1,     4,   277,    -1,     4,   283,
-      27,   333,    -1,     4,   283,   207,   344,   341,   331,   337,
-      -1,     4,   283,   207,   342,   346,   341,   342,   348,   331,
-     337,    -1,     4,   317,     4,    -1,   156,    -1,   156,   331,
-     331,    -1,   164,   462,    -1,   165,   463,    -1,   184,   464,
-      -1,   213,   333,    -1,   216,   467,   333,    -1,   216,   467,
-     333,   331,   331,    -1,   227,    37,   331,   331,    -1,   227,
-     183,   331,   331,     4,    -1,   227,   103,    -1,   232,     5,
-     454,   342,   346,   347,   333,    -1,   232,   262,     5,    -1,
-     238,   471,    -1,   244,   472,    -1,     5,    61,     5,    -1,
-       5,    74,    -1,     5,    93,    -1,     5,    83,    -1,     5,
-     119,     5,    -1,     5,   140,    -1,     5,   140,   197,    -1,
-       5,   184,   331,   331,    -1,     5,   184,   121,    -1,     5,
-     184,    34,    -1,     5,   184,   269,   344,   341,    -1,     5,
-     184,   269,   342,   346,   341,    -1,     5,   216,   467,   333,
-      -1,     5,   238,    -1,     5,   238,   197,    -1,     5,   275,
-      -1,     5,   277,    -1,   261,    99,     5,     5,    -1,   261,
-      93,     5,    -1,   261,    93,    17,    -1,   261,     5,    -1,
-     261,   278,     5,    -1,   203,    -1,   203,   342,   342,    -1,
-     274,    -1,   275,    17,    -1,   277,    17,    -1,   317,     4,
-      -1,   238,    -1,   277,    -1,   140,    -1,   275,    -1,    37,
-     184,    -1,   184,    -1,   103,   184,    -1,    37,    99,    -1,
-      99,    -1,   103,    99,    -1,    37,   227,    -1,   227,    -1,
-     103,   227,    -1,    93,    -1,   263,    -1,    61,    -1,   317,
-      -1,   216,    -1,   119,    -1,   156,    -1,   278,    -1,    -1,
-       4,    -1,    30,   333,    -1,   219,   331,    -1,   152,     4,
-      -1,   198,     4,   331,    -1,    57,   331,   331,   331,   468,
-      -1,    22,   331,   331,   331,   331,     4,   468,    -1,    76,
-     331,   331,   337,   337,     4,   331,   331,     4,   468,    -1,
-     101,   331,   331,   331,   331,   336,   468,    -1,   102,   331,
-     331,   331,   331,   331,     4,   336,   468,    -1,   104,   331,
-     331,   337,   337,     4,   331,   331,   331,     4,   336,   468,
-      -1,    43,   331,   331,   331,   331,   336,   468,    -1,    44,
-     331,   331,   331,   331,   331,     4,   336,   468,    -1,    47,
-     331,   331,   337,   337,     4,   331,   331,   331,     4,   336,
-     468,    -1,   162,   331,   331,   331,   331,   468,    -1,   283,
-     331,   331,   331,   331,   468,    -1,   214,   331,   331,   331,
-     331,   331,   468,    -1,   214,   331,   331,   331,   331,   331,
-       5,     5,   468,    -1,   215,   331,   331,   331,   468,    -1,
-     215,   331,   331,   331,     5,     5,   468,    -1,   228,   331,
-     331,   331,   331,   342,   346,   342,   348,   468,    -1,    57,
-     207,   331,   331,   354,   468,    -1,    43,   207,   331,   331,
-     354,   468,    -1,    96,   207,   331,   331,   354,   468,    -1,
-      79,   207,   331,   331,   354,   468,    -1,   327,   207,   331,
-     331,   354,   468,    -1,    27,   207,   331,   331,   354,   468,
-      -1,    46,   207,   331,   331,   354,   468,    -1,   263,   331,
-     331,   336,   468,    -1,   209,   331,   331,   331,   331,   468,
-      -1,    68,   331,   331,   331,   342,   346,   468,    -1,    69,
-     468,    -1,   262,   451,    -1,     5,   331,   331,    -1,   281,
-       5,   331,   331,    -1,   331,   331,   281,     5,    -1,     5,
-     342,   346,   341,    -1,     4,     4,    -1,    37,   331,   331,
-       4,    -1,   183,   331,   331,     4,    -1,   103,    -1,    98,
-      -1,   319,    -1,    58,    -1,   231,    -1,   230,    -1,   218,
-      -1,   320,    -1,    55,   456,    -1,    61,    -1,   119,    -1,
-     132,   331,   331,    -1,   145,   331,   331,    -1,   145,    17,
-      -1,     4,    21,    -1,     4,    21,   344,    -1,     4,    21,
-     342,   346,    -1,     4,    22,   219,   344,    -1,     4,    22,
-     219,   342,   348,    -1,     4,    44,   219,   344,    -1,     4,
-      44,   219,   342,   348,    -1,     4,    43,   219,   344,    -1,
-       4,    43,   219,   342,   348,    -1,     4,    47,    21,    -1,
-       4,    47,    21,   344,    -1,     4,    47,    21,   342,   346,
-      -1,     4,    47,   219,   344,    -1,     4,    47,   219,   342,
-     348,    -1,     4,    54,   344,    -1,     4,    54,   342,   346,
-     347,    -1,     4,    57,   219,   344,    -1,     4,    57,   219,
-     342,   348,    -1,     4,    61,    -1,     4,    68,    27,    -1,
-       4,    68,   158,    -1,     4,    68,   219,   344,    -1,     4,
-      68,   219,   342,   348,    -1,     4,    68,   259,    -1,     4,
-      69,   127,    -1,     4,    76,    21,    -1,     4,    76,    21,
-     344,    -1,     4,    76,    21,   342,   346,    -1,     4,    76,
-     219,   344,    -1,     4,    76,   219,   342,   348,    -1,     4,
-     101,   219,   344,    -1,     4,   101,   219,   342,   348,    -1,
-       4,   102,   219,   344,    -1,     4,   102,   219,   342,   348,
-      -1,     4,   104,    21,    -1,     4,   104,    21,   344,    -1,
-       4,   104,    21,   342,   346,    -1,     4,   104,   219,   344,
-      -1,     4,   104,   219,   342,   348,    -1,     4,   119,    -1,
-       4,   140,    -1,     4,   162,    27,    -1,     4,   162,   159,
-     342,   348,    -1,     4,   162,   207,   344,    -1,     4,   162,
-     207,   342,   346,   347,    -1,     4,   171,   159,   331,   342,
-     348,    -1,     4,   207,   246,    -1,     4,   214,     5,     5,
-       5,     5,    -1,     4,   214,   207,   344,    -1,     4,   214,
-     207,   342,   346,   347,    -1,     4,   214,   159,   342,   348,
-      -1,     4,   214,   176,    -1,     4,   214,   267,   344,    -1,
-       4,   214,   267,   342,   348,    -1,     4,   214,   259,    -1,
-       4,   215,     5,     5,     5,    -1,     4,   215,   176,    -1,
-       4,   215,   219,   342,   348,    -1,     4,   215,   259,    -1,
-       4,   216,    -1,     4,   216,   467,    -1,     4,   228,   159,
-     342,   348,    -1,     4,   228,   207,   344,    -1,     4,   228,
-     207,   342,   346,   347,    -1,     4,   228,   259,    -1,     4,
-     238,    -1,     4,   261,    -1,     4,   261,     4,    -1,     4,
-     263,    -1,     4,   263,   227,    -1,     4,   273,    -1,     4,
-     283,    27,    -1,     4,   283,   159,   342,   348,    -1,     4,
-     283,   207,   344,    -1,     4,   283,   207,   342,   346,   347,
-      -1,     4,   317,    -1,   140,   457,    -1,   140,   193,    -1,
-     193,    -1,   209,   237,   331,   331,    -1,   213,    -1,   216,
-     467,    -1,   238,   458,    -1,   238,   193,    -1,   244,   459,
-      -1,     5,    61,    -1,     5,   119,    -1,     5,   145,    -1,
-       5,   216,   467,    -1,     5,   261,    -1,     5,   261,   193,
-      -1,   261,    17,    -1,   261,    92,   185,    -1,   317,    -1,
-      30,    -1,   219,    -1,   152,    -1,   198,    -1,    -1,   331,
-     331,    -1,    -1,   331,   331,    -1,    -1,   263,    -1,    -1,
-      -1,   208,    -1,   279,    -1,    52,    -1,   454,   342,   346,
-     347,   333,   469,   475,    -1,   238,   454,   342,   346,   347,
-     333,   469,   475,    -1,   454,     5,    -1,   454,     5,   342,
-     346,    -1,   454,     4,    -1,   454,     4,   342,   346,    -1,
-     113,     5,     5,   452,     4,     5,    -1,   331,   331,    -1,
-     121,    -1,    34,    -1,    37,   331,   331,    -1,   183,   331,
-     331,    -1,   103,    -1,   269,   344,   341,    -1,   269,   342,
-     346,   341,    -1,   465,   466,    -1,   466,    -1,   467,   328,
-     333,    -1,    61,   328,     5,    -1,    86,   328,     4,     4,
-      -1,   317,   328,     4,    -1,   119,   328,     5,    -1,   263,
-     328,     5,    -1,   478,    -1,   479,    -1,   191,    -1,   238,
-      -1,   140,    -1,    85,    -1,   115,    -1,    99,    -1,   184,
-      -1,   227,    -1,    93,    -1,   148,    -1,   252,    -1,   460,
-      -1,   460,   465,    -1,    -1,    -1,   470,   473,    -1,    17,
-      -1,   197,   331,   331,    -1,   270,    -1,   270,   331,   331,
-      -1,   333,    -1,   263,   333,    -1,   473,   474,    -1,   474,
-      -1,   467,   328,   333,    -1,    -1,    -1,   476,   477,    -1,
-     477,   478,    -1,   478,    -1,   261,   328,     5,    -1,    50,
-     328,   448,     5,     5,    -1,    59,    -1,    61,     5,    -1,
-     172,     4,    -1,   268,   331,    -1,   327,    -1,   325,    -1,
-     320,    -1,   191,    -1,   331,   331,   331,   331,    -1,   331,
-     331,    -1,   344,   331,   331,    -1,   342,   346,   341,    -1,
-     269,   483,    -1,    36,   331,   331,    -1,   183,   484,    -1,
-     213,   333,    -1,   331,   331,    -1,   344,   331,   331,    -1,
-     342,   346,   341,    -1,    37,   331,   331,    -1,   331,   331,
-      -1,   103,   331,   331,    -1,   333,    -1,   288,   343,   346,
-      -1,     5,     4,     4,    -1,   278,    -1,    65,   487,    -1,
-     160,     4,    -1,   224,     4,    -1,   233,   331,    -1,    49,
-      -1,   129,    -1,   225,    -1,    84,    -1,   140,   489,    -1,
-     238,   490,    -1,    37,   331,   331,    -1,   183,   331,   331,
-      -1,   103,    -1,   242,   103,    -1,    37,   331,   331,    -1,
-     183,   331,   331,    -1,   103,    -1,   242,   103,    -1,   178,
-      -1,    13,    -1,    56,     5,    -1,   259,   342,    -1,   282,
-       4,     4,     4,    -1,   331,    -1,   331,    91,    -1,   183,
-     494,    -1,   269,   331,    -1,   269,   331,    91,    -1,    37,
-      -1,   331,    -1,   103,    -1,    26,   496,    -1,   113,   497,
-      -1,   110,     5,   355,    -1,    56,     5,   355,    -1,   250,
-       4,   355,    -1,   147,   498,    -1,   260,   499,    -1,   222,
-     500,    -1,   110,     5,   353,    -1,    56,     5,   353,    -1,
-     250,     4,   353,    -1,   110,     5,   353,    -1,    56,     5,
-     353,    -1,   250,     4,   353,    -1,   110,     5,   353,    -1,
-      56,     5,   353,    -1,   250,     4,   353,    -1,   502,     4,
-      -1,    93,    -1,    45,    -1,   125,    -1,   271,    -1,    -1,
-       4,   331,   331,   331,   331,    -1,   192,    -1,   192,     4,
-     331,   331,   331,   331,    -1,   113,   247,   504,    -1,     4,
-      -1,     4,     4,    -1,   331,   331,    -1,   269,   331,   331,
-      -1,   343,   346,   347,    -1,    16,   509,    -1,   223,     4,
-      -1,   221,   508,    -1,    23,   507,    -1,     4,     4,    -1,
-       4,     5,    -1,   263,     4,     5,    -1,     4,     4,    -1,
-       4,     5,    -1,   263,     4,     5,    -1,     4,    -1,     4,
-     343,   346,    -1,     4,     6,   343,    -1,   212,    -1,   331,
-     331,    -1,   331,   331,    12,   331,   331,    -1,   331,   331,
-      12,   344,   331,   331,    -1,   331,   331,    12,   342,   346,
-     341,    -1,   269,   512,    -1,   112,    -1,   112,   331,    -1,
-     331,   331,    -1,   331,   331,    12,   331,   331,    -1,   331,
-     331,    12,   344,   331,   331,    -1,   331,   331,    12,   342,
-     346,   341,    -1
+     337,     0,    -1,    92,   339,    -1,    40,   367,    -1,    38,
+      62,     5,    -1,    55,    -1,    60,    -1,    61,   372,    -1,
+      64,   379,    -1,    65,   381,    -1,    73,   382,    -1,    80,
+     386,    -1,    82,   388,    -1,    91,   340,    -1,   116,   389,
+      -1,   128,   390,    -1,   132,   428,    -1,   135,   430,    -1,
+     140,    -1,   142,   340,    -1,   148,   436,    -1,   167,   439,
+      -1,   171,   455,    -1,   172,   456,    -1,   175,   472,   457,
+      -1,   176,   491,    -1,   188,    62,     5,    -1,   201,   492,
+      -1,   202,   493,    -1,   203,   496,    -1,   216,   497,    -1,
+     228,    -1,   225,   472,   499,    -1,   230,   503,    -1,   232,
+     504,    -1,   237,   506,    -1,   250,    -1,   255,   512,    -1,
+     272,   366,    -1,   283,    -1,   285,   514,    -1,   291,    -1,
+     294,   516,    -1,   295,   517,    -1,   325,   521,    -1,   331,
+     522,    -1,     3,    -1,     4,    -1,   340,    -1,    29,   340,
+      -1,   183,   340,    -1,   205,   340,    -1,   207,   340,    -1,
+     295,   340,    -1,    40,   340,    -1,    72,   340,    -1,    80,
+     340,    -1,   133,   340,    -1,   230,   340,    -1,     4,    -1,
+     328,    -1,   332,    -1,   198,    -1,   279,    -1,   192,    -1,
+     333,    -1,   197,    -1,   111,    -1,    -1,    94,    -1,   117,
+      -1,   240,    -1,   153,    -1,    -1,   231,    35,    -1,   124,
+      35,    -1,   231,    -1,   124,    -1,   231,   272,    -1,   124,
+     272,    -1,    -1,   344,    -1,   338,    -1,     7,    -1,     8,
+      -1,     9,    -1,    10,    -1,    11,    -1,   345,   345,    -1,
+     346,   347,    -1,   347,   347,    -1,   338,   338,    -1,   149,
+      -1,   209,    -1,    97,    -1,    19,    -1,   350,    -1,   295,
+      -1,   296,    -1,   297,    -1,   298,    -1,   299,    -1,   300,
+      -1,   301,    -1,   302,    -1,   303,    -1,   304,    -1,   305,
+      -1,   306,    -1,   307,    -1,   308,    -1,   309,    -1,   310,
+      -1,   311,    -1,   312,    -1,   313,    -1,   314,    -1,   315,
+      -1,   316,    -1,   317,    -1,   318,    -1,   319,    -1,   320,
+      -1,   321,    -1,   322,    -1,    52,    -1,   203,    -1,   165,
+      -1,   169,    -1,   217,    -1,   259,    -1,   260,    -1,    28,
+      -1,   251,    -1,   143,    -1,    -1,   118,    -1,   119,    -1,
+      33,    -1,   120,    -1,   157,    -1,   146,    -1,   126,    -1,
+     264,    -1,   102,    -1,   139,    -1,    -1,    93,    -1,   245,
+      -1,    -1,    93,    -1,    24,    -1,    25,    -1,   338,    -1,
+     179,    -1,   330,    -1,   329,    -1,   286,    -1,    -1,   249,
+      -1,   158,    -1,    -1,    17,    -1,   151,    -1,    -1,   149,
+      -1,   176,    -1,    -1,   193,    -1,   133,    -1,    -1,    58,
+      -1,    44,    -1,    98,    -1,    81,    -1,   334,    -1,    27,
+      -1,    47,    -1,    -1,     4,    -1,   262,    -1,   211,    -1,
+     212,    -1,    -1,    32,    -1,   265,    -1,    -1,    39,    -1,
+     163,    -1,   289,   338,   338,    -1,   142,   340,    -1,   178,
+     502,    -1,   271,     4,    -1,   273,   338,    -1,    12,   368,
+      -1,    67,     5,     5,     5,    -1,    96,     4,    -1,   110,
+     369,    -1,   125,   370,    -1,    49,   252,     4,    -1,   276,
+     371,    -1,   113,     5,    -1,    55,    -1,   338,   338,    -1,
+     338,    -1,   338,   338,    -1,   338,    12,   338,   338,    -1,
+     338,   338,    12,   338,   338,    -1,   276,   338,    -1,   276,
+     338,   338,    -1,   276,   338,    12,   338,   338,    -1,   276,
+     338,   338,    12,   338,   338,    -1,    32,    -1,   265,    -1,
+     114,    -1,   338,   338,    12,    55,     5,     5,     5,    -1,
+     338,   338,     4,   338,   338,    12,    55,     5,     5,     5,
+       5,    -1,   338,   338,    12,   338,   338,     5,     5,     5,
+      -1,   338,   338,     4,   338,   338,    12,   338,   338,     5,
+       5,     5,     5,    -1,   241,   374,    -1,   184,   375,    -1,
+     179,   376,    -1,   286,   373,    -1,   330,   378,    -1,   219,
+     340,    -1,   338,   338,    -1,   170,   338,    -1,   141,   338,
+      -1,   129,    -1,   168,    -1,   338,    -1,   179,    -1,   330,
+      -1,   329,    -1,   286,    -1,   184,   377,    -1,   234,     4,
+      -1,    30,    -1,   239,    -1,   234,    -1,    90,    -1,   156,
+      -1,    74,   338,    -1,   234,     4,    -1,   164,     4,    -1,
+       4,   338,   338,     4,     6,     6,     4,    -1,   230,   338,
+     338,   338,   338,   338,   338,     4,     6,     4,    -1,    37,
+      -1,   185,   380,    -1,   105,    -1,     4,   338,   338,     4,
+       6,     6,     4,    -1,   230,   338,   338,   338,   338,   338,
+     338,     4,     6,     4,    -1,   352,    -1,   169,   338,    -1,
+      31,   383,    -1,    62,     5,    -1,    76,   349,   353,    -1,
+      79,   384,    -1,    87,     4,    -1,    95,    -1,    95,    17,
+      -1,   167,     5,     4,     4,     5,   349,   353,    -1,   206,
+       5,     4,     4,     6,   349,   353,    -1,   237,     5,   349,
+     353,    -1,   324,     4,    -1,   136,    -1,   191,    -1,   237,
+       5,   349,   353,    -1,     5,     4,     4,   385,     4,     4,
+     352,   338,   356,   338,   338,     5,    -1,   215,   479,    -1,
+     255,    -1,    42,    -1,    -1,   338,   338,   338,   338,   349,
+     353,    -1,    55,   348,   349,   353,   338,   338,   349,   355,
+      -1,   272,   387,    -1,    37,   338,   338,    -1,   185,   338,
+     338,    -1,   105,   338,   338,    -1,    -1,   338,   338,   349,
+      -1,    37,   338,   338,     4,    -1,   185,   338,   338,     4,
+      -1,   105,   338,   338,     4,    -1,   351,   338,   338,    -1,
+     349,   353,   348,    -1,   340,    -1,   294,   338,   338,    -1,
+      37,   185,   351,   338,   338,    -1,   185,   351,   338,   338,
+      -1,    37,   185,   349,   348,    -1,   185,   349,   348,    -1,
+     135,   109,     5,    -1,    38,    62,    -1,    40,   391,    -1,
+      61,   393,    -1,    64,   397,    -1,    63,    -1,    65,   399,
+      -1,    73,   401,    -1,    75,   405,    -1,    80,   406,    -1,
+      82,   407,    -1,    84,   408,    -1,    89,   409,    -1,    91,
+      -1,   115,   413,    -1,   132,   418,    -1,   144,     5,     5,
+      -1,   145,    85,     5,     5,   338,   338,   351,    -1,   148,
+     411,    -1,   152,   410,    -1,   179,    -1,   175,   472,   466,
+      -1,   176,   419,    -1,   188,    62,    -1,   201,    -1,   202,
+     420,    -1,   210,   267,   351,   338,   338,     4,     4,     5,
+      -1,   230,   421,    -1,   232,   422,    -1,   255,   423,    -1,
+     272,   424,    -1,   280,    -1,   287,   351,   338,   338,    -1,
+     293,    85,     5,     5,   338,   338,   351,    -1,   295,   425,
+      -1,   331,   427,    -1,    96,    -1,   110,    -1,   125,    -1,
+      49,   252,    -1,    84,    -1,   113,    -1,    67,   392,    -1,
+     166,    -1,    -1,   179,     5,    -1,    99,     5,    -1,   394,
+      -1,   241,    -1,   184,    -1,   179,   395,    -1,   286,   162,
+      -1,   330,   396,    -1,   219,    -1,    -1,   338,    -1,   179,
+      -1,   330,    -1,   329,    -1,   286,    -1,   184,    -1,   234,
+      -1,    74,    -1,   234,    -1,   164,    -1,   162,   398,    -1,
+       4,    -1,     4,   351,   338,   338,    -1,     4,   338,   338,
+     352,   338,    -1,    -1,   162,   400,    -1,   169,    -1,     4,
+     338,   338,   352,   338,    -1,   349,   353,    -1,    31,   402,
+      -1,    61,   403,    -1,    62,    -1,    87,    -1,   162,    -1,
+     195,   162,    -1,   178,    -1,    65,   404,    -1,   255,    -1,
+     324,    -1,    62,    -1,    87,    -1,   324,    -1,    -1,   184,
+      -1,    -1,   169,    -1,   338,   338,   349,   353,   354,    -1,
+     351,   338,   338,   349,   353,   354,    -1,   338,   349,     4,
+      -1,   122,   338,   349,     4,    -1,   276,   338,   349,     4,
+      -1,   349,   353,   354,    -1,    55,   349,   353,   354,   349,
+     355,    -1,   272,   349,    -1,   351,    -1,   349,   353,   354,
+     341,    -1,   263,    -1,   351,    -1,   349,   353,   354,   341,
+      -1,   349,   353,   348,   338,   338,     5,    -1,     4,   349,
+     353,   348,   338,   338,     5,    -1,   351,   338,   338,     4,
+       4,    -1,     5,    -1,    61,    -1,   351,   338,   338,     5,
+      -1,     6,     4,     4,     4,     4,    -1,    84,    -1,   324,
+      -1,   138,    -1,   112,   187,   412,    -1,    -1,     4,    -1,
+     338,   338,    -1,   189,    -1,    55,   349,   353,   354,   341,
+      -1,    77,    -1,    96,   415,    -1,    41,    -1,   109,   351,
+     338,   338,    -1,   112,   187,   416,    -1,   137,   414,    -1,
+     138,    -1,   196,   187,    -1,   252,    -1,   252,   349,   353,
+     355,   341,    -1,   253,   417,    -1,   324,    -1,     4,    -1,
+       4,   159,     5,    -1,   295,     4,    -1,    -1,     4,    -1,
+     342,    -1,   342,   351,   338,   338,    -1,   342,     4,    -1,
+      -1,     4,    -1,    -1,   200,    -1,    62,    -1,   174,    -1,
+     275,    -1,   219,    -1,    57,    -1,   266,    -1,   289,    -1,
+     341,    -1,   125,    -1,   224,    -1,   289,    -1,   142,    -1,
+     178,    -1,   271,    -1,    -1,    16,   426,    -1,   187,   350,
+      -1,    -1,   214,    -1,   341,    -1,    79,   349,   353,   354,
+     429,     5,    -1,    95,    -1,    20,    -1,   222,    -1,    19,
+      -1,    40,   431,    -1,    73,   432,    -1,    80,    -1,    90,
+      -1,    91,    -1,    97,    -1,   115,   433,    -1,   132,    -1,
+     148,    -1,   156,    -1,   175,   434,    -1,   209,    -1,   255,
+      -1,   266,   349,    -1,   295,   435,    -1,    68,     5,    -1,
+      -1,    31,    -1,    -1,    40,    -1,    83,    -1,   183,    -1,
+     142,    -1,   243,    -1,   206,    -1,   281,    -1,   349,    -1,
+     107,   349,    -1,    54,   349,    -1,    18,    -1,   190,     4,
+       4,    -1,   108,    -1,   177,     5,    -1,    84,   438,    -1,
+     244,   112,   187,   437,    -1,   244,     6,     4,     4,     4,
+       4,    -1,   285,    -1,   295,   338,   338,   338,   338,   338,
+     338,   338,   338,     4,    -1,     5,    -1,     5,     4,    -1,
+       4,     4,    52,    -1,     4,     4,   349,    -1,   184,   340,
+      -1,    26,   440,    -1,   115,   442,    -1,   151,   454,    -1,
+     208,     5,     5,    -1,     5,    14,     5,   359,    -1,     5,
+      15,     5,   359,    -1,     5,    57,     5,   359,    -1,     5,
+     181,   359,    -1,     5,   182,   359,    -1,     5,   247,   357,
+       4,   359,    -1,     5,   256,     4,   359,    -1,     5,   257,
+       4,   359,    -1,     5,   288,     5,   359,    -1,   230,    83,
+     441,    -1,     5,    14,     5,    -1,     5,    15,     5,    -1,
+       5,    57,     5,    -1,     5,   181,    -1,     5,   182,    -1,
+       5,   247,   357,     4,    -1,     5,   256,     4,    -1,     5,
+     257,     4,    -1,     5,   288,     5,    -1,     5,    14,     5,
+     359,    -1,     5,    15,     5,   359,    -1,     5,    57,     5,
+     359,    -1,     5,   181,   358,   359,    -1,     5,     5,   254,
+     358,   359,    -1,     5,   182,   358,   359,    -1,     5,   247,
+     357,     4,   358,   359,    -1,     5,   261,   357,     4,     4,
+     358,   359,    -1,     5,   256,     4,   359,    -1,     5,   257,
+       4,   359,    -1,     5,   288,     5,   358,   359,    -1,   253,
+     443,    -1,   109,    83,   444,    -1,   183,   445,    -1,   230,
+     451,    -1,     5,    14,     5,    -1,     5,    15,     5,    -1,
+       5,    57,     5,    -1,     5,   181,   358,    -1,     5,     5,
+     254,   358,    -1,     5,   182,   358,    -1,     5,   247,   357,
+       4,   358,    -1,     5,   261,   357,     4,     4,   358,    -1,
+       5,   256,     4,    -1,     5,   257,     4,    -1,     5,   288,
+       5,   358,    -1,     5,    14,     5,    -1,     5,    15,     5,
+      -1,     5,    57,     5,    -1,     5,   181,   358,    -1,     5,
+     182,   358,    -1,     5,   247,   357,     4,   358,    -1,     5,
+     256,     4,    -1,     5,   257,     4,    -1,     5,   288,     5,
+     358,    -1,   149,   155,   446,    -1,   155,   447,    -1,   149,
+     448,    -1,   449,    -1,   149,   323,   450,    -1,     5,    14,
+       5,   359,    -1,     5,    15,     5,   359,    -1,     5,    57,
+       5,   359,    -1,     5,   181,   358,   359,    -1,     5,   182,
+     358,   359,    -1,     5,   247,   357,     4,   358,   359,    -1,
+       5,   256,     4,   359,    -1,     5,   257,     4,   359,    -1,
+       5,   288,     5,   358,   359,    -1,     5,    14,     5,   359,
+      -1,     5,    15,     5,   359,    -1,     5,    57,     5,   359,
+      -1,     5,   181,   358,   359,    -1,     5,     5,   254,   358,
+     359,    -1,     5,   182,   358,   359,    -1,     5,   247,   357,
+       4,   358,   359,    -1,     5,   261,   357,     4,     4,   358,
+     359,    -1,     5,   256,     4,   359,    -1,     5,   257,     4,
+     359,    -1,     5,   288,     5,   358,   359,    -1,   350,     5,
+      14,     5,   359,    -1,   350,     5,    15,     5,   359,    -1,
+     350,     5,    57,     5,   359,    -1,   350,     5,   181,   358,
+     359,    -1,   350,     5,   182,   358,   359,    -1,   350,     5,
+     247,   357,     4,   358,   359,    -1,   350,     5,   256,     4,
+     359,    -1,   350,     5,   257,     4,   359,    -1,   350,     5,
+     288,     5,   358,   359,    -1,   350,     5,    14,     5,   359,
+      -1,   350,     5,    15,     5,   359,    -1,   350,     5,    57,
+       5,   359,    -1,   350,     5,   181,   358,   359,    -1,   350,
+       5,     5,   254,   358,   359,    -1,   350,     5,   182,   358,
+     359,    -1,   350,     5,   247,   357,     4,   358,   359,    -1,
+     350,     5,   261,   357,     4,     4,   358,   359,    -1,   350,
+       5,   256,     4,   359,    -1,   350,     5,   257,     4,   359,
+      -1,   350,     5,   288,     5,   358,   359,    -1,     5,    14,
+       5,    -1,     5,    15,     5,    -1,     5,    57,     5,    -1,
+       5,   181,   358,    -1,     5,   182,   358,    -1,     5,   247,
+     357,     4,   358,    -1,     5,   256,     4,    -1,     5,   257,
+       4,    -1,     5,   288,     5,   358,    -1,    83,   452,    -1,
+     149,   453,    -1,     5,    14,     5,    -1,     5,    15,     5,
+      -1,     5,    57,     5,    -1,     5,   181,   358,    -1,     5,
+       5,   254,   358,    -1,     5,   182,   358,    -1,     5,   247,
+     357,     4,   358,    -1,     5,   261,   357,     4,     4,   358,
+      -1,     5,   256,     4,    -1,     5,   257,     4,    -1,     5,
+     288,     5,   358,    -1,     5,    14,     5,    -1,     5,    15,
+       5,    -1,     5,    57,     5,    -1,     5,   181,   358,    -1,
+       5,   182,   358,    -1,     5,   247,   357,     4,   358,    -1,
+       5,   256,     4,    -1,     5,   257,     4,    -1,     5,   288,
+       5,   358,    -1,    89,     4,     4,     4,     4,     4,    -1,
+     179,     4,     4,     4,     4,     4,    -1,   105,    -1,   218,
+      -1,   340,    -1,   130,   340,    -1,    84,   340,    -1,    62,
+       5,    -1,     5,     4,     4,    -1,   285,   338,   338,    -1,
+     331,   338,    -1,    56,   460,    -1,    62,     5,    -1,    76,
+      -1,    69,   465,     5,    -1,    69,   465,   288,     5,    -1,
+      71,    95,    -1,    -1,    79,   458,   461,    -1,    85,    -1,
+      95,    -1,    95,    17,    -1,   101,   464,    -1,   121,     5,
+      -1,   142,    17,    -1,   142,   199,   338,   338,    -1,   142,
+     277,   338,   338,    -1,     4,    20,   363,   340,    -1,     4,
+      20,   204,   364,    -1,     4,    20,   266,   349,   353,    -1,
+       4,    21,   344,    -1,     4,    21,   344,   351,    -1,     4,
+      21,   344,   349,   353,    -1,     4,    22,   224,   338,   338,
+       4,   351,    -1,     4,    22,   224,   338,   338,     4,   349,
+     355,    -1,     4,    22,   224,     5,   349,   355,    -1,     4,
+      45,   224,   338,   338,   338,     4,   351,    -1,     4,    45,
+     224,   338,   338,   338,     4,   349,   355,    -1,     4,    45,
+     224,     5,   349,   355,    -1,     4,    44,   224,   338,   338,
+     351,    -1,     4,    44,   224,   338,   338,   349,   355,    -1,
+       4,    48,   101,   344,   344,     4,   338,   338,   338,     4,
+      -1,     4,    48,   101,   344,   344,     4,   338,   338,   338,
+       4,   351,    -1,     4,    48,   101,   344,   344,     4,   338,
+     338,   338,     4,   349,   353,    -1,     4,    48,   101,     5,
+       5,   349,   353,   349,   355,    -1,     4,    51,   459,     5,
+       5,    -1,     4,    58,   224,   338,   351,    -1,     4,    58,
+     224,   338,   349,   355,    -1,     4,    62,     5,    -1,     4,
+      70,    27,   340,   340,    -1,     4,    70,   160,     5,     5,
+      -1,     4,    70,   224,   338,   351,    -1,     4,    70,   224,
+     338,   349,   355,    -1,     4,    70,   266,   349,   353,    -1,
+       4,    71,   129,   340,    -1,     4,    78,   101,   344,   344,
+       4,   338,   338,     4,    -1,     4,    78,   101,   344,   344,
+       4,   338,   338,     4,   351,    -1,     4,    78,   101,   344,
+     344,     4,   338,   338,     4,   349,   353,    -1,     4,    78,
+     101,     5,     5,   349,   353,   349,   355,    -1,     4,    79,
+      22,   224,   338,   338,    -1,     4,    79,    45,   224,   338,
+     338,    -1,     4,    79,    48,    21,   338,   338,    -1,     4,
+      79,    48,   224,   338,   338,    -1,     4,    79,   104,   224,
+     338,   338,    -1,     4,    79,   106,    21,   338,   338,    -1,
+       4,    79,   106,   224,   338,   338,    -1,     4,    79,    78,
+      21,   338,   338,    -1,     4,    79,    78,   224,   338,   338,
+      -1,     4,    79,   215,   292,     4,   338,   338,    -1,     4,
+      95,    -1,     4,    95,    22,     4,    -1,     4,    95,    45,
+       4,    -1,     4,    95,    48,     4,    -1,     4,    95,   104,
+       4,    -1,     4,    95,    51,   459,     5,    -1,     4,    95,
+     106,     4,    -1,     4,    95,    78,     4,    -1,     4,    95,
+     215,   292,     4,    -1,     4,    95,   268,    -1,     4,    95,
+     268,     5,    -1,     4,    95,   268,     4,    -1,     4,   101,
+      37,     4,    -1,     4,   103,   224,   338,   338,   351,    -1,
+       4,   103,   224,   338,   338,   349,   355,    -1,     4,   104,
+     224,   338,   338,   338,     4,   351,    -1,     4,   104,   224,
+     338,   338,   338,     4,   349,   355,    -1,     4,   104,   224,
+       5,   349,   355,    -1,     4,   106,   101,   344,   344,     4,
+     338,   338,   338,     4,    -1,     4,   106,   101,   344,   344,
+       4,   338,   338,   338,     4,   351,    -1,     4,   106,   101,
+     344,   344,     4,   338,   338,   338,     4,   349,   353,    -1,
+       4,   106,   101,     5,     5,   349,   353,   349,   355,    -1,
+       4,   121,     5,    -1,     4,   142,    -1,     4,   142,   199,
+      -1,     4,   164,    27,   340,   340,    -1,     4,   164,   213,
+     351,   348,   348,    -1,     4,   164,   213,   349,   353,   348,
+     348,    -1,     4,   186,   338,   338,    -1,     4,   186,   123,
+      -1,     4,   186,    34,    -1,     4,   186,   276,   351,   338,
+     338,    -1,     4,   186,   276,   349,   353,   348,    -1,     4,
+     215,   228,   338,   338,   351,    -1,     4,   215,   228,   338,
+     338,   349,   355,    -1,     4,   213,   246,   361,    -1,     4,
+     213,   252,     4,    -1,     4,   220,   351,   348,   348,   338,
+      -1,     4,   220,   349,   353,   348,   348,   338,   349,   355,
+      -1,     4,   221,   478,   340,    -1,     4,   232,    37,    -1,
+       4,   233,   213,   351,   348,   348,    -1,     4,   233,   213,
+     349,   353,   348,   348,    -1,     4,   233,   266,   349,   353,
+     349,   355,    -1,     4,   243,    -1,     4,   243,   199,    -1,
+       4,   268,     5,    -1,     4,   270,     5,    -1,     4,   270,
+     232,   340,    -1,     4,   282,    -1,     4,   284,    -1,     4,
+     290,    27,   340,    -1,     4,   290,   213,   351,   348,   338,
+     344,    -1,     4,   290,   213,   349,   353,   348,   349,   355,
+     338,   344,    -1,     4,   324,     4,    -1,   158,    -1,   158,
+     338,   338,    -1,   166,   473,    -1,   167,   474,    -1,   186,
+     475,    -1,   219,   340,    -1,   221,   478,   340,    -1,   221,
+     478,   340,   338,   338,    -1,   232,    37,   338,   338,    -1,
+     232,   185,   338,   338,     4,    -1,   232,   105,    -1,   237,
+       5,   465,   349,   353,   354,   340,    -1,   237,   269,     5,
+      -1,   243,   482,    -1,   250,   483,    -1,     5,    62,     5,
+      -1,     5,    76,    -1,     5,    95,    -1,     5,    85,    -1,
+       5,   121,     5,    -1,     5,   142,    -1,     5,   142,   199,
+      -1,     5,   186,   338,   338,    -1,     5,   186,   123,    -1,
+       5,   186,    34,    -1,     5,   186,   276,   351,   348,    -1,
+       5,   186,   276,   349,   353,   348,    -1,     5,   221,   478,
+     340,    -1,     5,   243,    -1,     5,   243,   199,    -1,     5,
+     282,    -1,     5,   284,    -1,   268,   101,     5,     5,    -1,
+     268,    95,     5,    -1,   268,    95,    17,    -1,   268,     5,
+      -1,   268,   285,     5,    -1,   206,    -1,   206,   349,   349,
+      -1,   281,    -1,   282,    17,    -1,   284,    17,    -1,   324,
+       4,    -1,   243,    -1,   284,    -1,   142,    -1,   282,    -1,
+      37,   186,    -1,   186,    -1,   105,   186,    -1,    37,   101,
+      -1,   101,    -1,   105,   101,    -1,    37,   232,    -1,   232,
+      -1,   105,   232,    -1,    95,    -1,   270,    -1,    62,    -1,
+     324,    -1,   221,    -1,   121,    -1,   158,    -1,   285,    -1,
+      -1,     4,    -1,    30,   340,    -1,   224,   338,    -1,   154,
+       4,    -1,   200,     4,   338,    -1,    58,   338,   338,   338,
+     479,    -1,   103,   338,   338,   338,   338,   343,   479,    -1,
+      44,   338,   338,   338,   338,   343,   479,    -1,   215,   338,
+     338,   338,   338,   479,    -1,   164,   338,   338,   338,   338,
+     479,    -1,   290,   338,   338,   338,   338,   479,    -1,   270,
+     338,   338,   343,   479,    -1,    58,   213,   338,   338,   362,
+     479,    -1,    44,   213,   338,   338,   362,   479,    -1,    98,
+     213,   338,   338,   362,   479,    -1,    81,   213,   338,   338,
+     362,   479,    -1,   334,   213,   338,   338,   362,   479,    -1,
+      27,   213,   338,   338,   362,   479,    -1,    47,   213,   338,
+     338,   362,   479,    -1,   233,   338,   338,   338,   338,   349,
+     353,   349,   355,   479,    -1,    70,   338,   338,   338,   349,
+     353,   479,    -1,   220,   338,   338,   338,   338,   338,   479,
+      -1,    22,   338,   338,   338,   338,     4,   479,    -1,   104,
+     338,   338,   338,   338,   338,     4,   343,   479,    -1,    45,
+     338,   338,   338,   338,   338,     4,   343,   479,    -1,    78,
+     338,   338,   344,   344,     4,   338,   338,     4,   479,    -1,
+     106,   338,   338,   344,   344,     4,   338,   338,   338,     4,
+     343,   479,    -1,    48,   338,   338,   344,   344,     4,   338,
+     338,   338,     4,   343,   479,    -1,    71,   479,    -1,   269,
+     462,    -1,     5,   338,   338,    -1,   288,     5,   338,   338,
+      -1,   338,   338,   288,     5,    -1,     5,   349,   353,   348,
+      -1,     4,     4,    -1,    37,   338,   338,     4,    -1,   185,
+     338,   338,     4,    -1,   105,    -1,   100,    -1,   326,    -1,
+      59,    -1,   236,    -1,   235,    -1,   223,    -1,   327,    -1,
+      56,   467,    -1,    62,    -1,   121,    -1,   134,   338,   338,
+      -1,   147,   338,   338,    -1,     4,    20,   211,     5,     5,
+       5,     5,    -1,     4,    20,   212,     5,     5,    -1,     4,
+      20,   204,    -1,     4,    20,   266,    -1,   147,    17,    -1,
+       4,    21,    -1,     4,    21,   351,    -1,     4,    21,   349,
+     353,    -1,     4,    22,   224,   351,    -1,     4,    22,   224,
+     349,   355,    -1,     4,    45,   224,   351,    -1,     4,    45,
+     224,   349,   355,    -1,     4,    44,   224,   351,    -1,     4,
+      44,   224,   349,   355,    -1,     4,    48,    21,    -1,     4,
+      48,    21,   351,    -1,     4,    48,    21,   349,   353,    -1,
+       4,    48,   224,   351,    -1,     4,    48,   224,   349,   355,
+      -1,     4,    55,   351,    -1,     4,    55,   349,   353,   354,
+      -1,     4,    58,   224,   351,    -1,     4,    58,   224,   349,
+     355,    -1,     4,    62,    -1,     4,    70,    27,    -1,     4,
+      70,   160,    -1,     4,    70,   224,   351,    -1,     4,    70,
+     224,   349,   355,    -1,     4,    70,   266,    -1,     4,    71,
+     129,    -1,     4,    78,    21,    -1,     4,    78,    21,   351,
+      -1,     4,    78,    21,   349,   353,    -1,     4,    78,   224,
+     351,    -1,     4,    78,   224,   349,   355,    -1,     4,   103,
+     224,   351,    -1,     4,   103,   224,   349,   355,    -1,     4,
+     104,   224,   351,    -1,     4,   104,   224,   349,   355,    -1,
+       4,   106,    21,    -1,     4,   106,    21,   351,    -1,     4,
+     106,    21,   349,   353,    -1,     4,   106,   224,   351,    -1,
+       4,   106,   224,   349,   355,    -1,     4,   121,    -1,     4,
+     142,    -1,     4,   164,    27,    -1,     4,   164,   161,   349,
+     355,    -1,     4,   164,   213,   351,    -1,     4,   164,   213,
+     349,   353,   354,    -1,     4,   173,   161,   338,   349,   355,
+      -1,     4,   213,   246,    -1,     4,   213,   252,    -1,     4,
+     220,   213,   351,    -1,     4,   220,   213,   349,   353,   354,
+      -1,     4,   220,   161,   349,   355,    -1,     4,   220,   274,
+     351,    -1,     4,   220,   274,   349,   355,    -1,     4,   221,
+      -1,     4,   221,   478,    -1,     4,   233,   161,   349,   355,
+      -1,     4,   233,   213,   351,    -1,     4,   233,   213,   349,
+     353,   354,    -1,     4,   233,   266,    -1,     4,   243,    -1,
+       4,   268,    -1,     4,   268,     4,    -1,     4,   270,    -1,
+       4,   270,   232,    -1,     4,   280,    -1,     4,   290,    27,
+      -1,     4,   290,   161,   349,   355,    -1,     4,   290,   213,
+     351,    -1,     4,   290,   213,   349,   353,   354,    -1,     4,
+     324,    -1,   142,   468,    -1,   142,   195,    -1,   195,    -1,
+     215,   242,   338,   338,    -1,   219,    -1,   221,   478,    -1,
+     243,   469,    -1,   243,   195,    -1,   250,   470,    -1,     5,
+      62,    -1,     5,   121,    -1,     5,   147,    -1,     5,   221,
+     478,    -1,     5,   268,    -1,     5,   268,   195,    -1,   268,
+      17,    -1,   268,    94,   187,    -1,   324,    -1,    30,    -1,
+     224,    -1,   154,    -1,   200,    -1,    -1,   338,   338,    -1,
+      -1,   338,   338,    -1,    -1,   270,    -1,    -1,    -1,   214,
+      -1,   286,    -1,    53,    -1,   465,   349,   353,   354,   340,
+     480,   486,    -1,   243,   465,   349,   353,   354,   340,   480,
+     486,    -1,   465,     5,    -1,   465,     5,   349,   353,    -1,
+     465,     4,    -1,   465,     4,   349,   353,    -1,   115,     5,
+       5,   463,     4,     5,    -1,   338,   338,    -1,   123,    -1,
+      34,    -1,    37,   338,   338,    -1,   185,   338,   338,    -1,
+     105,    -1,   276,   351,   348,    -1,   276,   349,   353,   348,
+      -1,   476,   477,    -1,   477,    -1,   478,   335,   340,    -1,
+      62,   335,     5,    -1,    88,   335,     4,     4,    -1,   324,
+     335,     4,    -1,   121,   335,     5,    -1,   270,   335,     5,
+      -1,   489,    -1,   490,    -1,   193,    -1,   243,    -1,   142,
+      -1,    87,    -1,   117,    -1,   101,    -1,   186,    -1,   232,
+      -1,    95,    -1,   150,    -1,   258,    -1,   471,    -1,   471,
+     476,    -1,    -1,    -1,   481,   484,    -1,    17,    -1,   199,
+     338,   338,    -1,   277,    -1,   277,   338,   338,    -1,   340,
+      -1,   270,   340,    -1,   484,   485,    -1,   485,    -1,   478,
+     335,   340,    -1,    -1,    -1,   487,   488,    -1,   488,   489,
+      -1,   489,    -1,   268,   335,     5,    -1,    51,   335,   459,
+       5,     5,    -1,    60,    -1,    62,     5,    -1,   174,     4,
+      -1,   275,   338,    -1,   334,    -1,   332,    -1,   327,    -1,
+     193,    -1,   338,   338,   338,   338,    -1,   338,   338,    -1,
+     351,   338,   338,    -1,   349,   353,   348,    -1,   276,   494,
+      -1,    36,   338,   338,    -1,   185,   495,    -1,   219,   340,
+      -1,   338,   338,    -1,   351,   338,   338,    -1,   349,   353,
+     348,    -1,    37,   338,   338,    -1,   338,   338,    -1,   105,
+     338,   338,    -1,   340,    -1,   295,   350,   353,    -1,     5,
+       4,     4,    -1,   285,    -1,    66,   498,    -1,   162,     4,
+      -1,   229,     4,    -1,   238,   338,    -1,    50,    -1,   131,
+      -1,   230,    -1,    86,    -1,   142,   500,    -1,   243,   501,
+      -1,    37,   338,   338,    -1,   185,   338,   338,    -1,   105,
+      -1,   248,   105,    -1,    37,   338,   338,    -1,   185,   338,
+     338,    -1,   105,    -1,   248,   105,    -1,   180,    -1,    13,
+      -1,    57,     5,    -1,   266,   349,    -1,   289,     4,     4,
+       4,    -1,   338,    -1,   338,    93,    -1,   185,   505,    -1,
+     276,   338,    -1,   276,   338,    93,    -1,    37,    -1,   338,
+      -1,   105,    -1,    26,   507,    -1,   115,   508,    -1,   208,
+       5,    -1,   112,     5,   365,    -1,    57,     5,   365,    -1,
+     256,     4,   365,    -1,   149,   509,    -1,   267,   510,    -1,
+     227,   511,    -1,   112,     5,   360,    -1,    57,     5,   360,
+      -1,   256,     4,   360,    -1,   112,     5,   360,    -1,    57,
+       5,   360,    -1,   256,     4,   360,    -1,   112,     5,   360,
+      -1,    57,     5,   360,    -1,   256,     4,   360,    -1,   513,
+       4,    -1,    95,    -1,    46,    -1,   127,    -1,   278,    -1,
+      -1,     4,   338,   338,   338,   338,    -1,   194,    -1,   194,
+       4,   338,   338,   338,   338,    -1,   115,   253,   515,    -1,
+       4,    -1,     4,     4,    -1,   338,   338,    -1,   276,   338,
+     338,    -1,   350,   353,   354,    -1,    16,   520,    -1,   228,
+       4,    -1,   226,   519,    -1,    23,   518,    -1,     4,     4,
+      -1,     4,     5,    -1,   270,     4,     5,    -1,     4,     4,
+      -1,     4,     5,    -1,   270,     4,     5,    -1,     4,    -1,
+       4,   350,   353,    -1,     4,     6,   350,    -1,   218,    -1,
+     338,   338,    -1,   338,   338,    12,   338,   338,    -1,   338,
+     338,    12,   351,   338,   338,    -1,   338,   338,    12,   349,
+     353,   348,    -1,   276,   523,    -1,   114,    -1,   114,   338,
+      -1,   338,   338,    -1,   338,   338,    12,   338,   338,    -1,
+     338,   338,    12,   351,   338,   338,    -1,   338,   338,    12,
+     349,   353,   348,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   427,   427,   429,   430,   431,   432,   433,   434,   435,
-     436,   437,   438,   439,   440,   441,   442,   443,   444,   445,
+       0,   437,   437,   439,   440,   441,   442,   443,   444,   445,
      446,   447,   448,   449,   450,   451,   452,   453,   454,   455,
      456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
-     466,   467,   468,   469,   470,   471,   474,   475,   478,   479,
-     480,   481,   482,   483,   484,   485,   486,   487,   488,   491,
-     493,   494,   495,   496,   498,   499,   500,   501,   504,   505,
-     506,   507,   508,   511,   512,   513,   514,   515,   516,   517,
-     520,   521,   524,   525,   526,   529,   532,   535,   538,   550,
-     557,   564,   572,   573,   574,   575,   576,   579,   580,   581,
-     582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
+     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   477,   478,   479,   480,   481,   484,   485,   488,   489,
+     490,   491,   492,   493,   494,   495,   496,   497,   498,   501,
+     503,   504,   505,   506,   508,   509,   510,   511,   514,   515,
+     516,   517,   518,   521,   522,   523,   524,   525,   526,   527,
+     530,   531,   534,   535,   536,   539,   542,   545,   548,   560,
+     567,   574,   582,   583,   584,   585,   586,   589,   590,   591,
      592,   593,   594,   595,   596,   597,   598,   599,   600,   601,
-     602,   603,   604,   605,   606,   609,   610,   613,   614,   615,
-     616,   617,   618,   619,   620,   623,   624,   625,   626,   627,
-     628,   629,   630,   631,   632,   633,   636,   637,   638,   641,
-     642,   643,   644,   647,   648,   649,   650,   651,   654,   655,
-     656,   659,   660,   661,   664,   665,   666,   669,   670,   671,
-     674,   675,   678,   679,   680,   683,   684,   685,   686,   687,
-     691,   692,   693,   694,   695,   696,   697,   698,   701,   702,
-     705,   706,   707,   709,   711,   712,   713,   715,   719,   720,
-     723,   724,   726,   729,   731,   737,   738,   739,   740,   741,
-     742,   745,   746,   747,   750,   751,   754,   755,   756,   757,
-     758,   761,   762,   765,   766,   767,   768,   769,   772,   773,
-     774,   777,   780,   782,   783,   784,   787,   790,   794,   795,
-     798,   799,   800,   802,   803,   804,   805,   806,   808,   810,
-     812,   815,   816,   817,   821,   823,   828,   829,   832,   833,
-     836,   839,   840,   841,   842,   845,   846,   847,   848,   849,
-     852,   854,   856,   857,   859,   861,   863,   865,   869,   872,
-     873,   874,   875,   876,   877,   878,   879,   880,   881,   882,
-     883,   884,   885,   886,   887,   888,   890,   891,   892,   893,
-     894,   895,   896,   897,   898,   900,   901,   902,   903,   904,
-     905,   907,   909,   910,   913,   914,   915,   916,   917,   918,
-     919,   920,   923,   924,   925,   928,   929,   930,   931,   932,
-     933,   934,   937,   938,   939,   940,   941,   942,   945,   946,
-     949,   950,   951,   954,   957,   958,   960,   964,   965,   966,
-     969,   973,   975,   976,   977,   978,   979,   980,   981,   982,
-     983,   984,   987,   988,   989,   992,   993,   996,   997,  1000,
-    1003,  1009,  1011,  1013,  1017,  1019,  1022,  1025,  1026,  1029,
-    1032,  1033,  1038,  1041,  1044,  1049,  1050,  1051,  1055,  1056,
-    1057,  1058,  1059,  1062,  1063,  1064,  1067,  1068,  1071,  1072,
-    1073,  1074,  1076,  1077,  1078,  1079,  1080,  1081,  1084,  1085,
-    1088,  1089,  1090,  1093,  1094,  1097,  1099,  1102,  1106,  1107,
-    1110,  1111,  1114,  1115,  1116,  1119,  1122,  1123,  1124,  1127,
-    1130,  1131,  1134,  1135,  1136,  1137,  1140,  1141,  1142,  1145,
-    1146,  1149,  1152,  1155,  1158,  1159,  1162,  1163,  1164,  1165,
-    1166,  1167,  1168,  1169,  1170,  1171,  1172,  1173,  1174,  1175,
-    1176,  1179,  1180,  1183,  1184,  1185,  1186,  1189,  1190,  1191,
-    1192,  1195,  1196,  1197,  1198,  1201,  1202,  1203,  1204,  1205,
-    1206,  1208,  1209,  1214,  1215,  1218,  1220,  1222,  1225,  1226,
-    1227,  1230,  1232,  1234,  1236,  1238,  1240,  1243,  1245,  1247,
-    1249,  1252,  1253,  1254,  1255,  1256,  1257,  1259,  1260,  1261,
-    1264,  1266,  1268,  1270,  1273,  1276,  1279,  1282,  1285,  1287,
-    1289,  1292,  1293,  1294,  1295,  1298,  1300,  1302,  1304,  1306,
-    1308,  1310,  1312,  1314,  1316,  1318,  1322,  1324,  1326,  1328,
-    1330,  1332,  1335,  1337,  1339,  1343,  1344,  1345,  1346,  1347,
-    1350,  1353,  1356,  1359,  1362,  1365,  1369,  1372,  1375,  1380,
-    1383,  1386,  1389,  1392,  1395,  1398,  1402,  1406,  1409,  1412,
-    1417,  1420,  1423,  1426,  1429,  1432,  1436,  1439,  1442,  1447,
-    1450,  1453,  1456,  1459,  1462,  1465,  1469,  1473,  1476,  1479,
-    1484,  1486,  1488,  1490,  1492,  1494,  1497,  1499,  1501,  1504,
-    1505,  1508,  1509,  1510,  1511,  1513,  1515,  1517,  1520,  1523,
-    1524,  1525,  1529,  1530,  1531,  1532,  1534,  1536,  1539,  1540,
-    1541,  1545,  1546,  1547,  1550,  1557,  1558,  1559,  1560,  1561,
-    1562,  1563,  1566,  1567,  1568,  1569,  1571,  1573,  1574,  1574,
-    1575,  1576,  1577,  1578,  1579,  1581,  1582,  1584,  1587,  1588,
-    1589,  1592,  1594,  1597,  1600,  1603,  1607,  1610,  1612,  1616,
-    1619,  1623,  1628,  1633,  1636,  1638,  1641,  1643,  1645,  1647,
-    1649,  1651,  1654,  1656,  1658,  1660,  1664,  1669,  1671,  1673,
-    1675,  1677,  1679,  1681,  1683,  1685,  1687,  1690,  1691,  1693,
-    1695,  1696,  1698,  1700,  1701,  1702,  1704,  1705,  1706,  1708,
-    1710,  1712,  1716,  1720,  1724,  1728,  1731,  1735,  1740,  1746,
-    1747,  1748,  1750,  1751,  1753,  1757,  1759,  1760,  1761,  1763,
-    1766,  1768,  1772,  1774,  1777,  1782,  1785,  1787,  1789,  1792,
-    1794,  1796,  1799,  1802,  1806,  1807,  1808,  1809,  1810,  1811,
-    1812,  1814,  1815,  1817,  1822,  1824,  1825,  1827,  1828,  1829,
-    1830,  1831,  1832,  1834,  1836,  1838,  1839,  1842,  1843,  1845,
-    1847,  1848,  1849,  1850,  1851,  1852,  1853,  1854,  1855,  1856,
-    1857,  1859,  1861,  1863,  1864,  1865,  1866,  1868,  1869,  1870,
-    1871,  1872,  1874,  1875,  1877,  1878,  1879,  1880,  1883,  1884,
-    1885,  1886,  1887,  1888,  1889,  1890,  1891,  1892,  1893,  1894,
-    1895,  1896,  1897,  1898,  1899,  1900,  1901,  1902,  1903,  1906,
-    1907,  1908,  1909,  1910,  1911,  1918,  1925,  1932,  1942,  1951,
-    1961,  1974,  1983,  1992,  2005,  2013,  2021,  2031,  2042,  2050,
-    2059,  2069,  2074,  2079,  2084,  2089,  2094,  2099,  2105,  2113,
-    2121,  2132,  2137,  2140,  2142,  2144,  2149,  2153,  2156,  2158,
-    2160,  2163,  2164,  2165,  2166,  2167,  2168,  2169,  2172,  2173,
-    2174,  2175,  2176,  2177,  2178,  2179,  2180,  2182,  2184,  2186,
-    2188,  2190,  2192,  2194,  2195,  2196,  2198,  2200,  2202,  2204,
-    2207,  2209,  2211,  2212,  2213,  2214,  2216,  2218,  2219,  2220,
-    2221,  2222,  2224,  2226,  2228,  2230,  2232,  2234,  2237,  2238,
-    2239,  2241,  2243,  2245,  2246,  2247,  2248,  2250,  2252,  2255,
-    2258,  2259,  2261,  2263,  2266,  2269,  2270,  2272,  2274,  2275,
-    2277,  2278,  2281,  2282,  2283,  2284,  2286,  2288,  2291,  2292,
-    2293,  2294,  2295,  2296,  2297,  2298,  2299,  2301,  2303,  2306,
-    2307,  2308,  2309,  2310,  2312,  2313,  2314,  2315,  2317,  2319,
-    2320,  2321,  2322,  2323,  2324,  2326,  2327,  2329,  2332,  2333,
-    2334,  2335,  2338,  2339,  2342,  2343,  2346,  2347,  2350,  2363,
-    2364,  2365,  2366,  2369,  2374,  2381,  2383,  2386,  2388,  2391,
-    2395,  2396,  2397,  2398,  2399,  2400,  2401,  2403,  2407,  2408,
-    2411,  2412,  2413,  2414,  2415,  2416,  2417,  2418,  2421,  2422,
-    2423,  2424,  2425,  2426,  2427,  2428,  2429,  2430,  2431,  2434,
-    2435,  2438,  2439,  2439,  2442,  2443,  2444,  2445,  2448,  2449,
-    2452,  2453,  2456,  2460,  2461,  2461,  2464,  2465,  2468,  2471,
-    2475,  2476,  2477,  2478,  2481,  2482,  2483,  2484,  2487,  2489,
-    2490,  2495,  2497,  2498,  2499,  2500,  2503,  2504,  2509,  2513,
-    2514,  2515,  2518,  2519,  2521,  2522,  2525,  2527,  2528,  2529,
-    2532,  2533,  2534,  2535,  2538,  2539,  2542,  2544,  2546,  2547,
-    2550,  2552,  2553,  2554,  2557,  2558,  2561,  2562,  2563,  2566,
-    2567,  2568,  2569,  2570,  2573,  2574,  2575,  2578,  2579,  2582,
-    2584,  2586,  2590,  2591,  2592,  2595,  2596,  2597,  2600,  2601,
-    2602,  2605,  2607,  2609,  2613,  2614,  2617,  2618,  2619,  2622,
-    2623,  2625,  2626,  2628,  2631,  2632,  2635,  2636,  2639,  2641,
-    2642,  2643,  2644,  2647,  2648,  2649,  2652,  2653,  2654,  2657,
-    2658,  2663,  2667,  2674,  2675,  2677,  2682,  2685,  2688,  2689,
-    2690,  2691,  2693,  2698
+     602,   603,   604,   605,   606,   607,   608,   609,   610,   611,
+     612,   613,   614,   615,   616,   619,   620,   623,   624,   625,
+     626,   627,   628,   629,   630,   633,   634,   635,   636,   637,
+     638,   639,   640,   641,   642,   643,   646,   647,   648,   651,
+     652,   653,   654,   657,   658,   659,   660,   661,   664,   665,
+     666,   669,   670,   671,   674,   675,   676,   679,   680,   681,
+     684,   685,   686,   687,   688,   689,   690,   691,   694,   695,
+     698,   699,   700,   703,   704,   705,   708,   709,   710,   713,
+     714,   715,   716,   717,   721,   722,   723,   724,   725,   726,
+     727,   728,   731,   732,   735,   736,   737,   739,   741,   742,
+     743,   745,   749,   750,   753,   754,   756,   759,   761,   767,
+     768,   769,   770,   771,   772,   775,   776,   777,   780,   781,
+     784,   785,   786,   787,   788,   791,   792,   795,   796,   797,
+     798,   799,   802,   803,   804,   807,   810,   812,   813,   814,
+     817,   820,   824,   825,   828,   829,   830,   832,   833,   834,
+     835,   836,   838,   840,   842,   845,   846,   847,   851,   853,
+     858,   859,   862,   863,   866,   869,   870,   871,   872,   875,
+     876,   877,   878,   879,   882,   884,   886,   887,   889,   891,
+     893,   895,   899,   902,   903,   904,   905,   906,   907,   908,
+     909,   910,   911,   912,   913,   914,   915,   916,   917,   918,
+     920,   921,   922,   923,   924,   925,   926,   927,   928,   930,
+     931,   932,   933,   934,   935,   937,   939,   940,   943,   944,
+     945,   946,   947,   948,   949,   950,   953,   954,   955,   958,
+     959,   960,   961,   962,   963,   964,   967,   968,   969,   970,
+     971,   972,   975,   976,   979,   980,   981,   984,   987,   988,
+     990,   994,   995,   996,   999,  1003,  1005,  1006,  1007,  1008,
+    1009,  1010,  1011,  1012,  1013,  1014,  1017,  1018,  1019,  1022,
+    1023,  1026,  1027,  1030,  1033,  1039,  1041,  1043,  1047,  1049,
+    1052,  1055,  1056,  1059,  1062,  1063,  1068,  1071,  1074,  1079,
+    1080,  1081,  1085,  1086,  1087,  1088,  1089,  1092,  1093,  1094,
+    1097,  1098,  1101,  1102,  1103,  1104,  1106,  1107,  1108,  1109,
+    1110,  1111,  1114,  1115,  1118,  1119,  1120,  1123,  1124,  1127,
+    1129,  1132,  1136,  1137,  1140,  1141,  1144,  1145,  1146,  1149,
+    1152,  1153,  1154,  1157,  1160,  1161,  1164,  1165,  1166,  1167,
+    1170,  1171,  1172,  1175,  1176,  1179,  1182,  1185,  1188,  1189,
+    1192,  1193,  1194,  1195,  1196,  1197,  1198,  1199,  1200,  1201,
+    1202,  1203,  1204,  1205,  1206,  1207,  1210,  1213,  1214,  1217,
+    1218,  1219,  1220,  1223,  1224,  1225,  1226,  1229,  1230,  1231,
+    1232,  1235,  1236,  1237,  1238,  1239,  1240,  1242,  1243,  1248,
+    1249,  1252,  1254,  1256,  1259,  1260,  1261,  1262,  1265,  1267,
+    1269,  1271,  1273,  1275,  1278,  1280,  1282,  1284,  1287,  1288,
+    1289,  1290,  1291,  1292,  1294,  1295,  1296,  1299,  1301,  1303,
+    1305,  1308,  1311,  1314,  1317,  1320,  1322,  1324,  1327,  1328,
+    1329,  1330,  1333,  1335,  1337,  1339,  1341,  1343,  1345,  1347,
+    1349,  1351,  1353,  1357,  1359,  1361,  1363,  1365,  1367,  1370,
+    1372,  1374,  1378,  1379,  1380,  1381,  1382,  1385,  1388,  1391,
+    1394,  1397,  1400,  1404,  1407,  1410,  1415,  1418,  1421,  1424,
+    1427,  1430,  1433,  1437,  1441,  1444,  1447,  1452,  1455,  1458,
+    1461,  1464,  1467,  1471,  1474,  1477,  1482,  1485,  1488,  1491,
+    1494,  1497,  1500,  1504,  1508,  1511,  1514,  1519,  1521,  1523,
+    1525,  1527,  1529,  1532,  1534,  1536,  1539,  1540,  1543,  1544,
+    1545,  1546,  1548,  1550,  1552,  1555,  1558,  1559,  1560,  1564,
+    1565,  1566,  1567,  1569,  1571,  1574,  1575,  1576,  1580,  1581,
+    1582,  1585,  1592,  1593,  1594,  1595,  1596,  1597,  1598,  1601,
+    1602,  1603,  1604,  1606,  1608,  1609,  1609,  1610,  1611,  1612,
+    1613,  1614,  1616,  1617,  1619,  1622,  1624,  1626,  1629,  1630,
+    1631,  1634,  1636,  1639,  1642,  1645,  1649,  1652,  1654,  1657,
+    1660,  1664,  1669,  1674,  1676,  1678,  1680,  1681,  1683,  1685,
+    1687,  1689,  1691,  1692,  1694,  1696,  1700,  1705,  1707,  1709,
+    1711,  1713,  1715,  1717,  1719,  1721,  1723,  1726,  1727,  1729,
+    1731,  1732,  1734,  1736,  1737,  1738,  1740,  1741,  1742,  1744,
+    1745,  1747,  1750,  1754,  1758,  1761,  1764,  1768,  1773,  1779,
+    1780,  1781,  1783,  1784,  1786,  1790,  1792,  1793,  1794,  1796,
+    1799,  1801,  1804,  1806,  1808,  1811,  1816,  1819,  1820,  1823,
+    1826,  1830,  1831,  1833,  1834,  1835,  1837,  1838,  1840,  1841,
+    1843,  1848,  1850,  1851,  1853,  1854,  1855,  1856,  1857,  1858,
+    1860,  1862,  1864,  1865,  1868,  1869,  1871,  1873,  1874,  1875,
+    1876,  1877,  1878,  1879,  1880,  1881,  1882,  1883,  1885,  1887,
+    1889,  1890,  1891,  1892,  1894,  1895,  1896,  1897,  1898,  1900,
+    1901,  1903,  1904,  1905,  1906,  1909,  1910,  1911,  1912,  1913,
+    1914,  1915,  1916,  1917,  1918,  1919,  1920,  1921,  1922,  1923,
+    1924,  1925,  1926,  1927,  1928,  1929,  1932,  1933,  1934,  1935,
+    1936,  1937,  1944,  1951,  1960,  1969,  1976,  1984,  1992,  1999,
+    2004,  2009,  2014,  2019,  2024,  2029,  2035,  2044,  2054,  2064,
+    2071,  2081,  2091,  2100,  2112,  2125,  2130,  2133,  2135,  2137,
+    2142,  2146,  2149,  2151,  2153,  2156,  2157,  2158,  2159,  2160,
+    2161,  2162,  2165,  2166,  2167,  2168,  2169,  2171,  2173,  2175,
+    2176,  2178,  2179,  2180,  2181,  2183,  2185,  2188,  2190,  2192,
+    2194,  2196,  2197,  2198,  2200,  2202,  2205,  2207,  2210,  2212,
+    2214,  2215,  2216,  2217,  2219,  2221,  2222,  2223,  2224,  2225,
+    2227,  2229,  2231,  2233,  2235,  2237,  2240,  2241,  2242,  2244,
+    2246,  2248,  2249,  2250,  2251,  2253,  2255,  2258,  2262,  2263,
+    2264,  2266,  2269,  2272,  2274,  2276,  2277,  2278,  2280,  2282,
+    2285,  2286,  2288,  2289,  2290,  2291,  2292,  2294,  2295,  2297,
+    2299,  2302,  2303,  2304,  2305,  2306,  2308,  2309,  2310,  2311,
+    2313,  2315,  2316,  2317,  2318,  2319,  2320,  2322,  2323,  2325,
+    2328,  2329,  2330,  2331,  2334,  2335,  2338,  2339,  2342,  2343,
+    2346,  2359,  2360,  2361,  2362,  2365,  2370,  2377,  2379,  2382,
+    2384,  2387,  2391,  2392,  2393,  2394,  2395,  2396,  2397,  2399,
+    2403,  2404,  2407,  2408,  2409,  2410,  2411,  2412,  2413,  2414,
+    2417,  2418,  2419,  2420,  2421,  2422,  2423,  2424,  2425,  2426,
+    2427,  2430,  2431,  2434,  2435,  2435,  2438,  2439,  2440,  2441,
+    2444,  2445,  2448,  2449,  2452,  2456,  2457,  2457,  2460,  2461,
+    2464,  2467,  2471,  2472,  2473,  2474,  2477,  2478,  2479,  2480,
+    2483,  2485,  2486,  2491,  2493,  2494,  2495,  2496,  2499,  2500,
+    2505,  2509,  2510,  2511,  2514,  2515,  2517,  2518,  2521,  2523,
+    2524,  2525,  2528,  2529,  2530,  2531,  2534,  2535,  2538,  2540,
+    2542,  2543,  2546,  2548,  2549,  2550,  2553,  2554,  2557,  2558,
+    2559,  2562,  2563,  2564,  2565,  2566,  2569,  2570,  2571,  2574,
+    2575,  2576,  2579,  2581,  2583,  2587,  2588,  2589,  2592,  2593,
+    2594,  2597,  2598,  2599,  2602,  2604,  2606,  2610,  2611,  2614,
+    2615,  2616,  2619,  2620,  2622,  2623,  2625,  2628,  2629,  2632,
+    2633,  2636,  2638,  2639,  2640,  2641,  2644,  2645,  2646,  2649,
+    2650,  2651,  2654,  2655,  2660,  2664,  2671,  2672,  2674,  2679,
+    2682,  2685,  2686,  2687,  2688,  2690,  2695
 };
 #endif
 
@@ -1802,11 +1819,11 @@ static const char *const yytname[] =
   "ANALYSIS_", "ANGLE_", "ANNULUS_", "APPEND_", "ARCMIN_", "ARCSEC_",
   "ARRAY_", "ARROW_", "ASINH_", "AST_", "AUTO_", "AUX_", "AVERAGE_",
   "B1950_", "BACK_", "BASE_", "BBOX_", "BEGIN_", "BG_", "BIGENDIAN_",
-  "BIN_", "BITPIX_", "BLOCK_", "BOX_", "BOXANNULUS_", "BOXCAR_",
+  "BIN_", "BITPIX_", "BLOCK_", "BLT_", "BOX_", "BOXANNULUS_", "BOXCAR_",
   "BOXCIRCLE_", "BPANDA_", "BUFFER_", "BW_", "CALLBACK_", "CANVAS_",
   "CATALOG_", "CELESTRIAL_", "CENTER_", "CENTROID_", "CHANNEL_", "CIRCLE_",
   "CIAO_", "CLEAR_", "CLIP_", "COLOR_", "COLORBAR_", "COLORMAP_",
-  "COLORSCALE_", "COLORSPACE_", "COLS_", "COMMAND_", "COMPASS_",
+  "COLORSCALE_", "COLORSPACE_", "COLS_", "COLUMN_", "COMMAND_", "COMPASS_",
   "COMPOSITE_", "COMPRESS_", "CONTOUR_", "CONTRAST_", "COORDINATES_",
   "COPY_", "COUNT_", "CPANDA_", "CREATE_", "CROP_", "CROSS_", "CROSSHAIR_",
   "CUBE_", "CURSOR_", "CUT_", "CMYK_", "DASH_", "DASHLIST_", "DATA_",
@@ -1827,47 +1844,49 @@ static const char *const yytname[] =
   "MIP_", "MMAP_", "MMAPINCR_", "MOSAIC_", "MODE_", "MOTION_", "MOVE_",
   "NAME_", "NAN_", "NAXES_", "NEW_", "NEXT_", "NO_", "NONE_", "NOW_",
   "NUMBER_", "OBJECT_", "OFF_", "ON_", "ONLY_", "OPTION_", "ORIENT_",
-  "PAN_", "PANNER_", "PARSER_", "PASTE_", "PERF_", "PHYSICAL_", "PIXEL_",
-  "POINT_", "POINTER_", "POLYGON_", "POSTSCRIPT_", "POW_", "PRINT_",
-  "PRESERVE_", "PROJECTION_", "CIRCLE3D_", "PROPERTY_", "PUBLICATION_",
-  "PROS_", "RADIUS_", "REGION_", "REPLACE_", "RESAMPLE_", "RESET_",
-  "RESOLUTION_", "RGB_", "ROOT_", "ROTATE_", "RULER_", "SAMPLE_",
-  "SAOIMAGE_", "SAOTNG_", "SAVE_", "SCALE_", "SCAN_", "SCIENTIFIC_",
-  "SCOPE_", "SEGMENT_", "SELECT_", "SET_", "SEXAGESIMAL_", "SHARED_",
-  "SHIFT_", "SHMID_", "SHOW_", "SINH_", "SIZE_", "SLICE_", "SMMAP_",
-  "SMOOTH_", "SOCKET_", "SOCKETGZ_", "SOURCE_", "SQRT_", "SQUARED_",
-  "SSHARED_", "STATUS_", "SUPERGALACTIC_", "SUM_", "SYSTEM_", "TABLE_",
-  "TAG_", "TEMPLATE_", "TEXT_", "THREADS_", "THREED_", "THRESHOLD_",
-  "THICK_", "TRANSPARENCY_", "TO_", "TOGGLE_", "TOPHAT_", "TRUE_", "TYPE_",
-  "UNDO_", "UNHIGHLITE_", "UNLOAD_", "UNSELECT_", "UPDATE_", "USER_",
-  "VALUE_", "VAR_", "VIEW_", "VECTOR_", "VERSION_", "VERTEX_", "VERTICAL_",
-  "WARP_", "WCS_", "WCSA_", "WCSB_", "WCSC_", "WCSD_", "WCSE_", "WCSF_",
-  "WCSG_", "WCSH_", "WCSI_", "WCSJ_", "WCSK_", "WCSL_", "WCSM_", "WCSN_",
-  "WCSO_", "WCSP_", "WCSQ_", "WCSR_", "WCSS_", "WCST_", "WCSU_", "WCSV_",
-  "WCSW_", "WCSX_", "WCSY_", "WCSZ_", "WCS0_", "WFPC2_", "WIDTH_",
-  "WIN32_", "XML_", "XY_", "YES_", "ZMAX_", "ZSCALE_", "ZOOM_", "'Y'",
-  "'N'", "'X'", "'='", "$accept", "command", "numeric", "debug", "yesno",
-  "precision", "fileNameType", "optangle", "angle", "sexagesimal", "hms",
-  "dms", "coord", "coordSystem", "wcsSystem", "internalSystem",
-  "scaleType", "skyFrame", "skyFormat", "skyDist", "contourClipMode",
-  "shmType", "incrLoad", "layerType", "compressType", "pointSize",
-  "endian", "threed", "bin", "binAbout", "binFactor", "binFunction",
-  "binTo", "clip", "clipUser", "clipScope", "clipMode", "clipMinMax",
-  "clipMinMaxMode", "clipZScale", "colormap", "colormapMotion",
-  "colorscale", "contour", "contourAux", "contourCreate", "contourmethod",
-  "crop", "crop3d", "crosshair", "fitsy", "get", "getBin", "getBinCols",
-  "getClip", "getClipLimits", "getClipMinMax", "getClipZScale",
-  "getColorMap", "getColorMapLevel", "getColorScale", "getColorScaleLevel",
-  "getContour", "getContourAux", "getContourClip", "getContourColorScale",
-  "getCoord", "getCrop", "getCrosshair", "getCursor", "getData", "getInfo",
-  "getiis", "getIISFileName", "getFits", "getFitsHeader", "getFitsDepth",
-  "getFitsFileName", "getFitsSlice", "getGrid", "getMask", "getPan",
-  "getRGB", "getRotate", "getSmooth", "getThreed", "getWCS", "getWCSAlign",
-  "getZoom", "grid", "gridType", "has", "hasContour", "hasFits",
-  "hasMarker", "hasWCS", "iis", "iisSetFileName", "iiscursor", "load",
-  "loadArr", "loadArrRGBCube", "loadFits", "loadFitsSlice",
-  "loadFitsExtCube", "loadFitsMosaic", "loadFitsMosaicImageIRAF",
-  "loadFitsMosaicIRAF", "loadFitsMosaicImageWCS", "loadFitsMosaicWCS",
+  "PAN_", "PANNER_", "PARAM_", "PARSER_", "PASTE_", "PERF_", "PHOTO_",
+  "PHYSICAL_", "PIXEL_", "PLOT2D_", "PLOT3D_", "POINT_", "POINTER_",
+  "POLYGON_", "POSTSCRIPT_", "POW_", "PRINT_", "PRESERVE_", "PROJECTION_",
+  "PROPERTY_", "PUBLICATION_", "PROS_", "RADIUS_", "REGION_", "REPLACE_",
+  "RESAMPLE_", "RESET_", "RESOLUTION_", "RGB_", "ROOT_", "ROTATE_",
+  "RULER_", "SAMPLE_", "SAOIMAGE_", "SAOTNG_", "SAVE_", "SCALE_", "SCAN_",
+  "SCIENTIFIC_", "SCOPE_", "SEGMENT_", "SELECT_", "SET_", "SEXAGESIMAL_",
+  "SHAPE_", "SHARED_", "SHIFT_", "SHMID_", "SHOW_", "SINH_", "SIZE_",
+  "SLICE_", "SMMAP_", "SMOOTH_", "SOCKET_", "SOCKETGZ_", "SOURCE_",
+  "SQRT_", "SQUARED_", "SSHARED_", "STATS_", "STATUS_", "SUPERGALACTIC_",
+  "SUM_", "SYSTEM_", "TABLE_", "TAG_", "TEMPLATE_", "TEXT_", "THREADS_",
+  "THREED_", "THRESHOLD_", "THICK_", "TRANSPARENCY_", "TO_", "TOGGLE_",
+  "TOPHAT_", "TRUE_", "TYPE_", "UNDO_", "UNHIGHLITE_", "UNLOAD_",
+  "UNSELECT_", "UPDATE_", "USER_", "VALUE_", "VAR_", "VIEW_", "VECTOR_",
+  "VERSION_", "VERTEX_", "VERTICAL_", "WARP_", "WCS_", "WCSA_", "WCSB_",
+  "WCSC_", "WCSD_", "WCSE_", "WCSF_", "WCSG_", "WCSH_", "WCSI_", "WCSJ_",
+  "WCSK_", "WCSL_", "WCSM_", "WCSN_", "WCSO_", "WCSP_", "WCSQ_", "WCSR_",
+  "WCSS_", "WCST_", "WCSU_", "WCSV_", "WCSW_", "WCSX_", "WCSY_", "WCSZ_",
+  "WCS0_", "WFPC2_", "WIDTH_", "WIN32_", "XML_", "XY_", "YES_", "ZMAX_",
+  "ZSCALE_", "ZOOM_", "'Y'", "'N'", "'X'", "'='", "$accept", "command",
+  "numeric", "debug", "yesno", "precision", "fileNameType", "optangle",
+  "angle", "sexagesimal", "hms", "dms", "coord", "coordSystem",
+  "wcsSystem", "internalSystem", "scaleType", "skyFrame", "skyFormat",
+  "skyDist", "contourClipMode", "shmType", "incrLoad", "layerType",
+  "compressType", "pointShape", "pointSize", "analysisMethod",
+  "analysisParam", "endian", "threed", "bin", "binAbout", "binFactor",
+  "binFunction", "binTo", "clip", "clipUser", "clipScope", "clipMode",
+  "clipMinMax", "clipMinMaxMode", "clipZScale", "colormap",
+  "colormapMotion", "colorscale", "contour", "contourAux", "contourCreate",
+  "contourmethod", "crop", "crop3d", "crosshair", "fitsy", "get", "getBin",
+  "getBinCols", "getClip", "getClipLimits", "getClipMinMax",
+  "getClipZScale", "getColorMap", "getColorMapLevel", "getColorScale",
+  "getColorScaleLevel", "getContour", "getContourAux", "getContourClip",
+  "getContourColorScale", "getCoord", "getCrop", "getCrosshair",
+  "getCursor", "getData", "getInfo", "getiis", "getIISFileName", "getFits",
+  "getFitsHeader", "getFitsDepth", "getFitsFileName", "getFitsSlice",
+  "getGrid", "getMask", "getPan", "getRGB", "getRotate", "getSmooth",
+  "getThreed", "getWCS", "getWCSAlign", "getZoom", "grid", "gridType",
+  "has", "hasBin", "hasContour", "hasFits", "hasMarker", "hasWCS", "iis",
+  "iisSetFileName", "iiscursor", "load", "loadArr", "loadArrRGBCube",
+  "loadFits", "loadFitsSlice", "loadFitsExtCube", "loadFitsMosaic",
+  "loadFitsMosaicImageIRAF", "loadFitsMosaicIRAF",
+  "loadFitsMosaicImageWCS", "loadFitsMosaicWCS",
   "loadFitsMosaicImageWFPC2", "loadFitsRGB", "loadFitsRGBCube",
   "loadFitsRGBImage", "loadIncr", "macosx", "magnifier", "marker", "@1",
   "markerCallBack", "markerCentroid", "markerCreate",
@@ -1924,128 +1943,130 @@ static const yytype_uint16 yytoknum[] =
      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
      565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
-     575,   576,   577,   578,   579,    89,    78,    88,    61
+     575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
+     585,   586,    89,    78,    88,    61
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   329,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
-     330,   330,   330,   330,   330,   330,   331,   331,   332,   332,
-     332,   332,   332,   332,   332,   332,   332,   332,   332,   333,
-     333,   333,   333,   333,   333,   333,   333,   333,   334,   334,
-     334,   334,   334,   335,   335,   335,   335,   335,   335,   335,
-     336,   336,   337,   337,   337,   338,   339,   340,   341,   341,
-     341,   341,   342,   342,   342,   342,   342,   343,   343,   343,
-     343,   343,   343,   343,   343,   343,   343,   343,   343,   343,
-     343,   343,   343,   343,   343,   343,   343,   343,   343,   343,
-     343,   343,   343,   343,   343,   344,   344,   345,   345,   345,
-     345,   345,   345,   345,   345,   346,   346,   346,   346,   346,
-     346,   346,   346,   346,   346,   346,   347,   347,   347,   348,
-     348,   348,   348,   349,   349,   349,   349,   349,   350,   350,
-     350,   351,   351,   351,   352,   352,   352,   353,   353,   353,
-     354,   354,   355,   355,   355,   356,   356,   356,   356,   356,
-     357,   357,   357,   357,   357,   357,   357,   357,   358,   358,
-     359,   359,   359,   359,   359,   359,   359,   359,   360,   360,
-     361,   361,   361,   361,   361,   362,   362,   362,   362,   362,
-     362,   363,   363,   363,   364,   364,   365,   365,   365,   365,
-     365,   366,   366,   367,   367,   367,   367,   367,   368,   368,
-     368,   369,   369,   369,   369,   369,   370,   370,   371,   371,
-     372,   372,   372,   372,   372,   372,   372,   372,   372,   372,
-     372,   373,   373,   373,   374,   374,   375,   375,   376,   376,
-     376,   376,   376,   376,   376,   377,   377,   377,   377,   377,
-     378,   378,   378,   378,   378,   378,   378,   378,   379,   380,
-     380,   380,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   380,   381,   381,   381,   381,   381,   381,
-     381,   381,   382,   382,   382,   383,   383,   383,   383,   383,
-     383,   383,   384,   384,   384,   384,   384,   384,   385,   385,
-     386,   386,   386,   387,   388,   388,   388,   389,   389,   389,
-     390,   391,   391,   391,   391,   391,   391,   391,   391,   391,
-     391,   391,   392,   392,   392,   393,   393,   394,   394,   395,
-     395,   395,   395,   395,   396,   396,   396,   397,   397,   397,
-     398,   398,   399,   399,   399,   400,   400,   400,   401,   401,
-     401,   401,   401,   402,   402,   402,   403,   403,   403,   403,
-     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
-     404,   404,   404,   405,   405,   406,   406,   406,   407,   407,
-     408,   408,   409,   409,   409,   410,   411,   411,   411,   412,
-     413,   413,   414,   414,   414,   414,   415,   415,   415,   416,
-     416,   417,   418,   418,   419,   419,   420,   420,   420,   420,
-     420,   420,   420,   420,   420,   420,   420,   420,   420,   420,
-     420,   421,   421,   422,   422,   422,   422,   423,   423,   423,
-     423,   424,   424,   424,   424,   425,   425,   425,   425,   425,
-     425,   425,   425,   426,   426,   427,   427,   427,   428,   428,
-     428,   429,   429,   429,   429,   429,   429,   429,   429,   429,
-     429,   430,   430,   430,   430,   430,   430,   430,   430,   430,
-     431,   431,   431,   431,   431,   431,   431,   431,   431,   431,
-     431,   431,   431,   431,   431,   432,   432,   432,   432,   432,
-     432,   432,   432,   432,   432,   432,   433,   433,   433,   433,
-     433,   433,   433,   433,   433,   434,   434,   434,   434,   434,
-     435,   435,   435,   435,   435,   435,   435,   435,   435,   436,
-     436,   436,   436,   436,   436,   436,   436,   436,   436,   436,
-     437,   437,   437,   437,   437,   437,   437,   437,   437,   438,
-     438,   438,   438,   438,   438,   438,   438,   438,   438,   438,
-     439,   439,   439,   439,   439,   439,   439,   439,   439,   440,
-     440,   441,   441,   441,   441,   441,   441,   441,   441,   441,
-     441,   441,   442,   442,   442,   442,   442,   442,   442,   442,
-     442,   443,   443,   443,   444,   445,   445,   445,   445,   445,
-     445,   445,   446,   446,   446,   446,   446,   446,   447,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   446,   446,
-     446,   446,   446,   446,   446,   446,   446,   446,   448,   448,
-     448,   448,   448,   448,   448,   448,   448,   448,   448,   448,
-     448,   448,   448,   448,   448,   448,   448,   448,   448,   449,
-     449,   449,   449,   449,   449,   450,   450,   450,   450,   450,
-     450,   450,   450,   450,   450,   450,   450,   450,   450,   450,
-     450,   450,   450,   450,   450,   450,   450,   450,   450,   450,
-     450,   450,   450,   451,   451,   451,   451,   452,   453,   453,
-     453,   454,   454,   454,   454,   454,   454,   454,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   455,   455,
-     455,   455,   455,   455,   455,   455,   455,   455,   456,   456,
-     456,   456,   457,   457,   458,   458,   459,   459,   460,   461,
-     461,   461,   461,   462,   462,   463,   463,   463,   463,   463,
-     464,   464,   464,   464,   464,   464,   464,   464,   465,   465,
-     466,   466,   466,   466,   466,   466,   466,   466,   467,   467,
-     467,   467,   467,   467,   467,   467,   467,   467,   467,   468,
-     468,   469,   470,   469,   471,   471,   471,   471,   472,   472,
-     473,   473,   474,   475,   476,   475,   477,   477,   478,   479,
-     480,   480,   480,   480,   481,   481,   481,   481,   482,   482,
-     482,   482,   482,   482,   482,   482,   483,   483,   483,   484,
-     484,   484,   485,   485,   485,   485,   486,   486,   486,   486,
-     487,   487,   487,   487,   488,   488,   489,   489,   489,   489,
-     490,   490,   490,   490,   491,   491,   492,   492,   492,   493,
-     493,   493,   493,   493,   494,   494,   494,   495,   495,   496,
-     496,   496,   497,   497,   497,   498,   498,   498,   499,   499,
-     499,   500,   500,   500,   501,   501,   502,   502,   502,   503,
-     503,   503,   503,   503,   504,   504,   505,   505,   506,   506,
-     506,   506,   506,   507,   507,   507,   508,   508,   508,   509,
-     509,   509,   510,   511,   511,   511,   511,   511,   512,   512,
-     512,   512,   512,   512
+       0,   336,   337,   337,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   338,   338,   339,   339,
+     339,   339,   339,   339,   339,   339,   339,   339,   339,   340,
+     340,   340,   340,   340,   340,   340,   340,   340,   341,   341,
+     341,   341,   341,   342,   342,   342,   342,   342,   342,   342,
+     343,   343,   344,   344,   344,   345,   346,   347,   348,   348,
+     348,   348,   349,   349,   349,   349,   349,   350,   350,   350,
+     350,   350,   350,   350,   350,   350,   350,   350,   350,   350,
+     350,   350,   350,   350,   350,   350,   350,   350,   350,   350,
+     350,   350,   350,   350,   350,   351,   351,   352,   352,   352,
+     352,   352,   352,   352,   352,   353,   353,   353,   353,   353,
+     353,   353,   353,   353,   353,   353,   354,   354,   354,   355,
+     355,   355,   355,   356,   356,   356,   356,   356,   357,   357,
+     357,   358,   358,   358,   359,   359,   359,   360,   360,   360,
+     361,   361,   361,   361,   361,   361,   361,   361,   362,   362,
+     363,   363,   363,   364,   364,   364,   365,   365,   365,   366,
+     366,   366,   366,   366,   367,   367,   367,   367,   367,   367,
+     367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
+     369,   369,   370,   370,   371,   371,   371,   371,   371,   372,
+     372,   372,   372,   372,   372,   373,   373,   373,   374,   374,
+     375,   375,   375,   375,   375,   376,   376,   377,   377,   377,
+     377,   377,   378,   378,   378,   379,   379,   379,   379,   379,
+     380,   380,   381,   381,   382,   382,   382,   382,   382,   382,
+     382,   382,   382,   382,   382,   383,   383,   383,   384,   384,
+     385,   385,   386,   386,   386,   386,   386,   386,   386,   387,
+     387,   387,   387,   387,   388,   388,   388,   388,   388,   388,
+     388,   388,   389,   390,   390,   390,   390,   390,   390,   390,
+     390,   390,   390,   390,   390,   390,   390,   390,   390,   390,
+     390,   390,   390,   390,   390,   390,   390,   390,   390,   390,
+     390,   390,   390,   390,   390,   390,   390,   390,   391,   391,
+     391,   391,   391,   391,   391,   391,   392,   392,   392,   393,
+     393,   393,   393,   393,   393,   393,   394,   394,   394,   394,
+     394,   394,   395,   395,   396,   396,   396,   397,   398,   398,
+     398,   399,   399,   399,   400,   401,   401,   401,   401,   401,
+     401,   401,   401,   401,   401,   401,   402,   402,   402,   403,
+     403,   404,   404,   405,   405,   405,   405,   405,   406,   406,
+     406,   407,   407,   407,   408,   408,   409,   409,   409,   410,
+     410,   410,   411,   411,   411,   411,   411,   412,   412,   412,
+     413,   413,   413,   413,   413,   413,   413,   413,   413,   413,
+     413,   413,   413,   413,   414,   414,   414,   415,   415,   416,
+     416,   416,   417,   417,   418,   418,   419,   419,   419,   420,
+     421,   421,   421,   422,   423,   423,   424,   424,   424,   424,
+     425,   425,   425,   426,   426,   427,   428,   428,   429,   429,
+     430,   430,   430,   430,   430,   430,   430,   430,   430,   430,
+     430,   430,   430,   430,   430,   430,   431,   432,   432,   433,
+     433,   433,   433,   434,   434,   434,   434,   435,   435,   435,
+     435,   436,   436,   436,   436,   436,   436,   436,   436,   437,
+     437,   438,   438,   438,   439,   439,   439,   439,   440,   440,
+     440,   440,   440,   440,   440,   440,   440,   440,   441,   441,
+     441,   441,   441,   441,   441,   441,   441,   442,   442,   442,
+     442,   442,   442,   442,   442,   442,   442,   442,   442,   442,
+     442,   442,   443,   443,   443,   443,   443,   443,   443,   443,
+     443,   443,   443,   444,   444,   444,   444,   444,   444,   444,
+     444,   444,   445,   445,   445,   445,   445,   446,   446,   446,
+     446,   446,   446,   446,   446,   446,   447,   447,   447,   447,
+     447,   447,   447,   447,   447,   447,   447,   448,   448,   448,
+     448,   448,   448,   448,   448,   448,   449,   449,   449,   449,
+     449,   449,   449,   449,   449,   449,   449,   450,   450,   450,
+     450,   450,   450,   450,   450,   450,   451,   451,   452,   452,
+     452,   452,   452,   452,   452,   452,   452,   452,   452,   453,
+     453,   453,   453,   453,   453,   453,   453,   453,   454,   454,
+     454,   455,   456,   456,   456,   456,   456,   456,   456,   457,
+     457,   457,   457,   457,   457,   458,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   459,   459,   459,   459,   459,
+     459,   459,   459,   459,   459,   459,   459,   459,   459,   459,
+     459,   459,   459,   459,   459,   459,   460,   460,   460,   460,
+     460,   460,   461,   461,   461,   461,   461,   461,   461,   461,
+     461,   461,   461,   461,   461,   461,   461,   461,   461,   461,
+     461,   461,   461,   461,   461,   461,   461,   462,   462,   462,
+     462,   463,   464,   464,   464,   465,   465,   465,   465,   465,
+     465,   465,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
+     467,   467,   467,   467,   468,   468,   469,   469,   470,   470,
+     471,   472,   472,   472,   472,   473,   473,   474,   474,   474,
+     474,   474,   475,   475,   475,   475,   475,   475,   475,   475,
+     476,   476,   477,   477,   477,   477,   477,   477,   477,   477,
+     478,   478,   478,   478,   478,   478,   478,   478,   478,   478,
+     478,   479,   479,   480,   481,   480,   482,   482,   482,   482,
+     483,   483,   484,   484,   485,   486,   487,   486,   488,   488,
+     489,   490,   491,   491,   491,   491,   492,   492,   492,   492,
+     493,   493,   493,   493,   493,   493,   493,   493,   494,   494,
+     494,   495,   495,   495,   496,   496,   496,   496,   497,   497,
+     497,   497,   498,   498,   498,   498,   499,   499,   500,   500,
+     500,   500,   501,   501,   501,   501,   502,   502,   503,   503,
+     503,   504,   504,   504,   504,   504,   505,   505,   505,   506,
+     506,   506,   507,   507,   507,   508,   508,   508,   509,   509,
+     509,   510,   510,   510,   511,   511,   511,   512,   512,   513,
+     513,   513,   514,   514,   514,   514,   514,   515,   515,   516,
+     516,   517,   517,   517,   517,   517,   518,   518,   518,   519,
+     519,   519,   520,   520,   520,   521,   522,   522,   522,   522,
+     522,   523,   523,   523,   523,   523,   523
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2068,54 +2089,56 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     0,     1,     1,     0,
        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
        1,     0,     1,     1,     0,     1,     1,     0,     1,     1,
-       0,     1,     0,     1,     1,     3,     2,     2,     2,     2,
-       2,     4,     2,     2,     2,     3,     2,     2,     1,     2,
-       1,     2,     4,     5,     2,     3,     5,     6,     1,     1,
-       1,     7,    11,     8,    12,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     1,     1,     1,     1,     1,     1,
-       1,     2,     2,     1,     1,     1,     1,     1,     2,     2,
-       2,     7,    10,     1,     2,     1,     7,    10,     1,     2,
-       2,     2,     3,     2,     2,     1,     2,     7,     7,     4,
-       2,     1,     1,     4,    12,     2,     1,     1,     0,     6,
-       8,     2,     3,     3,     3,     0,     3,     4,     4,     4,
-       3,     3,     1,     3,     5,     4,     4,     3,     3,     2,
-       2,     2,     2,     1,     2,     2,     2,     2,     2,     2,
-       2,     1,     2,     2,     3,     7,     2,     2,     1,     3,
-       2,     2,     1,     2,     8,     2,     2,     2,     2,     1,
-       4,     7,     2,     2,     1,     1,     1,     2,     1,     1,
-       2,     1,     0,     2,     2,     1,     1,     1,     2,     2,
-       2,     1,     0,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     1,     4,     5,     0,     2,     1,
-       5,     2,     2,     2,     1,     1,     1,     2,     1,     2,
-       1,     1,     1,     1,     1,     0,     1,     0,     1,     5,
-       6,     3,     4,     4,     3,     6,     2,     1,     4,     1,
-       1,     4,     6,     7,     5,     1,     1,     4,     5,     1,
-       1,     1,     3,     0,     1,     2,     1,     5,     1,     2,
-       1,     4,     3,     2,     1,     2,     1,     5,     2,     1,
-       1,     3,     2,     0,     1,     1,     4,     2,     0,     1,
-       0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     2,     2,     0,
-       1,     1,     6,     1,     1,     1,     1,     2,     1,     1,
-       1,     1,     2,     1,     1,     1,     2,     1,     1,     2,
-       2,     0,     1,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     1,     3,     1,     2,     2,     4,
-       6,     1,    10,     1,     2,     3,     3,     2,     2,     2,
-       2,     4,     4,     4,     3,     3,     5,     4,     4,     4,
-       3,     3,     3,     3,     2,     2,     4,     3,     3,     3,
-       4,     4,     4,     4,     5,     4,     6,     7,     4,     4,
-       5,     2,     3,     2,     2,     3,     3,     3,     3,     4,
-       3,     5,     6,     3,     3,     4,     3,     3,     3,     3,
-       3,     5,     3,     3,     4,     3,     2,     2,     1,     3,
-       4,     4,     4,     4,     4,     6,     4,     4,     5,     4,
-       4,     4,     4,     5,     4,     6,     7,     4,     4,     5,
-       5,     5,     5,     5,     5,     7,     5,     5,     6,     5,
-       5,     5,     5,     6,     5,     7,     8,     5,     5,     6,
-       3,     3,     3,     3,     3,     5,     3,     3,     4,     2,
-       2,     3,     3,     3,     3,     4,     3,     5,     6,     3,
-       3,     4,     3,     3,     3,     3,     3,     5,     3,     3,
-       4,     6,     6,     1,     1,     1,     2,     2,     2,     3,
-       3,     2,     2,     2,     1,     3,     4,     2,     0,     3,
-       1,     1,     2,     2,     2,     2,     4,     4,     3,     4,
+       0,     1,     1,     1,     1,     1,     1,     1,     0,     1,
+       1,     1,     1,     0,     1,     1,     0,     1,     1,     3,
+       2,     2,     2,     2,     2,     4,     2,     2,     2,     3,
+       2,     2,     1,     2,     1,     2,     4,     5,     2,     3,
+       5,     6,     1,     1,     1,     7,    11,     8,    12,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     1,     1,
+       1,     1,     1,     1,     1,     2,     2,     1,     1,     1,
+       1,     1,     2,     2,     2,     7,    10,     1,     2,     1,
+       7,    10,     1,     2,     2,     2,     3,     2,     2,     1,
+       2,     7,     7,     4,     2,     1,     1,     4,    12,     2,
+       1,     1,     0,     6,     8,     2,     3,     3,     3,     0,
+       3,     4,     4,     4,     3,     3,     1,     3,     5,     4,
+       4,     3,     3,     2,     2,     2,     2,     1,     2,     2,
+       2,     2,     2,     2,     2,     1,     2,     2,     3,     7,
+       2,     2,     1,     3,     2,     2,     1,     2,     8,     2,
+       2,     2,     2,     1,     4,     7,     2,     2,     1,     1,
+       1,     2,     1,     1,     2,     1,     0,     2,     2,     1,
+       1,     1,     2,     2,     2,     1,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     2,     1,     4,
+       5,     0,     2,     1,     5,     2,     2,     2,     1,     1,
+       1,     2,     1,     2,     1,     1,     1,     1,     1,     0,
+       1,     0,     1,     5,     6,     3,     4,     4,     3,     6,
+       2,     1,     4,     1,     1,     4,     6,     7,     5,     1,
+       1,     4,     5,     1,     1,     1,     3,     0,     1,     2,
+       1,     5,     1,     2,     1,     4,     3,     2,     1,     2,
+       1,     5,     2,     1,     1,     3,     2,     0,     1,     1,
+       4,     2,     0,     1,     0,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       0,     2,     2,     0,     1,     1,     6,     1,     1,     1,
+       1,     2,     2,     1,     1,     1,     1,     2,     1,     1,
+       1,     2,     1,     1,     2,     2,     2,     0,     1,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       1,     3,     1,     2,     2,     4,     6,     1,    10,     1,
+       2,     3,     3,     2,     2,     2,     2,     3,     4,     4,
+       4,     3,     3,     5,     4,     4,     4,     3,     3,     3,
+       3,     2,     2,     4,     3,     3,     3,     4,     4,     4,
+       4,     5,     4,     6,     7,     4,     4,     5,     2,     3,
+       2,     2,     3,     3,     3,     3,     4,     3,     5,     6,
+       3,     3,     4,     3,     3,     3,     3,     3,     5,     3,
+       3,     4,     3,     2,     2,     1,     3,     4,     4,     4,
+       4,     4,     6,     4,     4,     5,     4,     4,     4,     4,
+       5,     4,     6,     7,     4,     4,     5,     5,     5,     5,
+       5,     5,     7,     5,     5,     6,     5,     5,     5,     5,
+       6,     5,     7,     8,     5,     5,     6,     3,     3,     3,
+       3,     3,     5,     3,     3,     4,     2,     2,     3,     3,
+       3,     3,     4,     3,     5,     6,     3,     3,     4,     3,
+       3,     3,     3,     3,     5,     3,     3,     4,     6,     6,
+       1,     1,     1,     2,     2,     2,     3,     3,     2,     2,
+       2,     1,     3,     4,     2,     0,     3,     1,     1,     2,
+       2,     2,     2,     4,     4,     4,     4,     5,     3,     4,
        5,     7,     8,     6,     8,     9,     6,     6,     7,    10,
       11,    12,     9,     5,     5,     6,     3,     5,     5,     5,
        6,     5,     4,     9,    10,    11,     9,     6,     6,     6,
@@ -2123,49 +2146,48 @@ static const yytype_uint8 yyr2[] =
        4,     4,     5,     4,     4,     5,     3,     4,     4,     4,
        6,     7,     8,     9,     6,    10,    11,    12,     9,     3,
        2,     3,     5,     6,     7,     4,     3,     3,     6,     6,
-       6,     7,     4,     7,    10,     5,     5,     6,     4,     4,
-       3,     6,     7,     7,     2,     3,     3,     3,     4,     2,
-       2,     4,     7,    10,     3,     1,     3,     2,     2,     2,
-       2,     3,     5,     4,     5,     2,     7,     3,     2,     2,
-       3,     2,     2,     2,     3,     2,     3,     4,     3,     3,
-       5,     6,     4,     2,     3,     2,     2,     4,     3,     3,
-       2,     3,     1,     3,     1,     2,     2,     2,     1,     1,
-       1,     1,     2,     1,     2,     2,     1,     2,     2,     1,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       1,     2,     2,     2,     3,     5,     7,    10,     7,     9,
-      12,     7,     9,    12,     6,     6,     7,     9,     5,     7,
-      10,     6,     6,     6,     6,     6,     6,     6,     5,     6,
-       7,     2,     2,     3,     4,     4,     4,     2,     4,     4,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
-       1,     3,     3,     2,     2,     3,     4,     4,     5,     4,
-       5,     4,     5,     3,     4,     5,     4,     5,     3,     5,
-       4,     5,     2,     3,     3,     4,     5,     3,     3,     3,
-       4,     5,     4,     5,     4,     5,     4,     5,     3,     4,
-       5,     4,     5,     2,     2,     3,     5,     4,     6,     6,
-       3,     6,     4,     6,     5,     3,     4,     5,     3,     5,
-       3,     5,     3,     2,     3,     5,     4,     6,     3,     2,
-       2,     3,     2,     3,     2,     3,     5,     4,     6,     2,
-       2,     2,     1,     4,     1,     2,     2,     2,     2,     2,
-       2,     2,     3,     2,     3,     2,     3,     1,     1,     1,
-       1,     1,     0,     2,     0,     2,     0,     1,     0,     0,
-       1,     1,     1,     7,     8,     2,     4,     2,     4,     6,
-       2,     1,     1,     3,     3,     1,     3,     4,     2,     1,
-       3,     3,     4,     3,     3,     3,     1,     1,     1,     1,
+       6,     7,     4,     4,     6,     9,     4,     3,     6,     7,
+       7,     2,     3,     3,     3,     4,     2,     2,     4,     7,
+      10,     3,     1,     3,     2,     2,     2,     2,     3,     5,
+       4,     5,     2,     7,     3,     2,     2,     3,     2,     2,
+       2,     3,     2,     3,     4,     3,     3,     5,     6,     4,
+       2,     3,     2,     2,     4,     3,     3,     2,     3,     1,
+       3,     1,     2,     2,     2,     1,     1,     1,     1,     2,
+       1,     2,     2,     1,     2,     2,     1,     2,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     1,     2,     2,
+       2,     3,     5,     7,     7,     6,     6,     6,     5,     6,
+       6,     6,     6,     6,     6,     6,    10,     7,     7,     7,
+       9,     9,    10,    12,    12,     2,     2,     3,     4,     4,
+       4,     2,     4,     4,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     1,     1,     3,     3,     7,     5,     3,
+       3,     2,     2,     3,     4,     4,     5,     4,     5,     4,
+       5,     3,     4,     5,     4,     5,     3,     5,     4,     5,
+       2,     3,     3,     4,     5,     3,     3,     3,     4,     5,
+       4,     5,     4,     5,     4,     5,     3,     4,     5,     4,
+       5,     2,     2,     3,     5,     4,     6,     6,     3,     3,
+       4,     6,     5,     4,     5,     2,     3,     5,     4,     6,
+       3,     2,     2,     3,     2,     3,     2,     3,     5,     4,
+       6,     2,     2,     2,     1,     4,     1,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     3,     2,     3,     1,
+       1,     1,     1,     1,     0,     2,     0,     2,     0,     1,
+       0,     0,     1,     1,     1,     7,     8,     2,     4,     2,
+       4,     6,     2,     1,     1,     3,     3,     1,     3,     4,
+       2,     1,     3,     3,     4,     3,     3,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     0,     0,     2,     1,     3,     1,     3,     1,     2,
-       2,     1,     3,     0,     0,     2,     2,     1,     3,     5,
-       1,     2,     2,     2,     1,     1,     1,     1,     4,     2,
-       3,     3,     2,     3,     2,     2,     2,     3,     3,     3,
-       2,     3,     1,     3,     3,     1,     2,     2,     2,     2,
-       1,     1,     1,     1,     2,     2,     3,     3,     1,     2,
-       3,     3,     1,     2,     1,     1,     2,     2,     4,     1,
-       2,     2,     2,     3,     1,     1,     1,     2,     2,     3,
-       3,     3,     2,     2,     2,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     2,     1,     1,     1,     1,     0,
-       5,     1,     6,     3,     1,     2,     2,     3,     3,     2,
-       2,     2,     2,     2,     2,     3,     2,     2,     3,     1,
-       3,     3,     1,     2,     5,     6,     6,     2,     1,     2,
-       2,     5,     6,     6
+       1,     1,     2,     0,     0,     2,     1,     3,     1,     3,
+       1,     2,     2,     1,     3,     0,     0,     2,     2,     1,
+       3,     5,     1,     2,     2,     2,     1,     1,     1,     1,
+       4,     2,     3,     3,     2,     3,     2,     2,     2,     3,
+       3,     3,     2,     3,     1,     3,     3,     1,     2,     2,
+       2,     2,     1,     1,     1,     1,     2,     2,     3,     3,
+       1,     2,     3,     3,     1,     2,     1,     1,     2,     2,
+       4,     1,     2,     2,     2,     3,     1,     1,     1,     2,
+       2,     2,     3,     3,     3,     2,     2,     2,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     2,     1,     1,
+       1,     1,     0,     5,     1,     6,     3,     1,     2,     2,
+       3,     3,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     3,     1,     3,     3,     1,     2,     5,     6,     6,
+       2,     1,     2,     2,     5,     6,     6
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -2173,283 +2195,283 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,     0,     0,     5,     6,     0,     0,     0,     0,   258,
+       0,     0,     0,     5,     6,     0,     0,     0,     0,   272,
        0,     0,     0,     0,     0,     0,     0,    18,     0,     0,
-       0,     0,     0,   969,     0,     0,     0,     0,     0,     0,
-     969,    31,     0,     0,     0,    36,     0,     0,    39,  1109,
+       0,     0,     0,   981,     0,     0,     0,     0,     0,     0,
+     981,    31,     0,     0,     0,    36,     0,     0,    39,  1122,
       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     3,     0,     0,     0,     0,
-       0,     0,     7,     0,   233,   235,     0,     0,     8,   132,
-     134,   127,   128,   129,   133,   130,   131,   238,     9,     0,
-       0,     0,     0,     0,   245,     0,     0,     0,     0,    10,
-      46,    47,     0,     0,     0,     0,   265,     0,    11,    59,
+       0,     0,     7,     0,   247,   249,     0,     0,     8,   132,
+     134,   127,   128,   129,   133,   130,   131,   252,     9,     0,
+       0,     0,     0,     0,   259,     0,     0,     0,     0,    10,
+      46,    47,     0,     0,     0,     0,   279,     0,    11,    59,
       95,     0,   125,    94,    67,    92,     0,    64,    66,    62,
      126,    93,    63,     0,    97,    98,    99,   100,   101,   102,
      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
      113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,    60,    61,    65,   272,   135,    96,     0,    12,
+     123,   124,    60,    61,    65,   286,   135,    96,     0,    12,
       13,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     2,    48,     0,    14,     0,     0,   332,   283,     0,
-     347,     0,     0,     0,     0,     0,     0,   291,     0,   420,
-       0,     0,     0,     0,   969,     0,   298,     0,   302,     0,
-       0,     0,    68,     0,     0,   309,     0,     0,   436,    68,
-      15,     0,   443,    16,   446,   461,   448,   449,   450,   451,
-     463,   453,   454,   455,     0,   457,   458,     0,     0,    17,
-      19,     0,   476,     0,     0,     0,   481,     0,    20,     0,
-       0,     0,    21,   624,    22,     0,     0,     0,     0,     0,
-       0,   625,    23,   972,   970,   971,     0,  1030,     0,     0,
-       0,    25,     0,  1037,  1036,  1035,  1034,    27,     0,     0,
-       0,     0,     0,   135,     0,    28,     0,  1055,     0,  1052,
-      29,     0,     0,     0,     0,    30,     0,     0,     0,     0,
-      33,     0,     0,  1079,    34,     0,     0,    35,  1106,  1105,
-    1107,  1108,    37,     0,     0,     0,     0,     0,     0,    38,
-       0,     0,  1111,    40,     0,     0,    42,     0,     0,     0,
-       0,   135,    43,  1132,    44,     0,     0,    45,     1,     4,
-     188,     0,   180,     0,     0,   182,     0,   190,   183,   187,
-     198,   199,   184,   200,     0,   186,     0,     0,   207,   217,
-     220,   219,   218,   216,   206,   210,   214,   215,   205,     0,
-       0,     0,   208,     0,     0,     0,   209,     0,     0,     0,
-     234,     0,   239,   251,   252,     0,   240,   241,   135,     0,
-     968,   243,   244,   246,     0,     0,     0,   250,     0,    85,
-      86,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   261,     0,     0,     0,     0,     0,   138,
-     144,   136,   137,   139,   142,   145,   141,   140,   143,     0,
-       0,    49,    54,    55,    56,    57,    50,    51,    52,    58,
-      53,     0,   279,     0,   322,   318,   314,   315,   319,   316,
-     321,   280,   334,   327,   331,   326,   337,   336,   335,   333,
-     281,   325,     0,   282,     0,   349,   284,     0,   365,   354,
-     367,   355,   356,   358,     0,   360,   361,   135,   285,     0,
-       0,     0,     0,   286,     0,     0,   135,   287,   379,   135,
-     377,   288,   135,   380,   289,     0,   135,     0,   290,   400,
-       0,   398,   413,     0,     0,     0,   404,   396,     0,   406,
-     418,   409,   292,   421,   293,     0,     0,     0,   389,     0,
-     391,   390,   296,   385,   386,     0,   297,     0,   422,   423,
-     424,   300,   301,   425,   303,     0,   426,   427,   428,   305,
-      69,    70,    72,    71,   429,   306,   430,   431,   307,   433,
-     434,   435,   432,   308,     0,     0,   439,     0,   312,   441,
-     313,   135,   462,   447,   464,   465,   466,   452,   467,   469,
-     468,   470,   456,   459,   474,     0,     0,   471,   460,     0,
-       0,   478,   477,     0,     0,     0,     0,     0,     0,   488,
-       0,     0,     0,     0,     0,   489,     0,   623,     0,   490,
-       0,   628,   627,   626,     0,   631,     0,     0,   809,     0,
-       0,     0,   634,   638,   640,   641,     0,     0,     0,   745,
-       0,     0,     0,   782,     0,     0,     0,     0,     0,     0,
-       0,   784,     0,     0,     0,    24,  1031,  1032,  1033,    26,
-       0,     0,     0,     0,  1044,  1045,     0,   135,     0,  1042,
-    1039,     0,     0,     0,   135,  1060,  1063,  1061,  1062,  1056,
-    1057,  1058,  1059,     0,     0,    32,  1076,  1077,     0,  1084,
-    1086,  1085,  1081,  1082,  1080,     0,     0,     0,  1087,     0,
-       0,     0,  1088,  1104,   176,  1075,  1074,   177,   178,   179,
-       0,     0,     0,     0,     0,  1116,  1129,  1119,     0,     0,
-    1122,     0,     0,  1121,  1120,   146,  1138,     0,  1137,  1133,
-     189,   185,     0,   194,     0,   191,     0,   223,   226,   227,
-     225,   224,   221,   222,   213,   212,   211,   228,   230,   229,
-       0,     0,     0,     0,     0,   242,     0,  1009,   255,     0,
-       0,   135,   262,    91,    88,    89,    90,   135,   264,   263,
-       0,     0,     0,     0,     0,     0,     0,   277,     0,   273,
-     271,   270,   278,   317,     0,     0,   320,   338,   339,   328,
-     329,   340,   342,   341,   330,   344,   343,     0,   348,   362,
-     363,   364,   352,   366,   353,   368,   359,   357,   351,     0,
-       0,     0,     0,     0,   135,   376,   146,   146,   146,   135,
-       0,     0,   135,   414,   399,     0,    73,   410,     0,   403,
-     405,   135,   419,   408,   294,     0,     0,   393,     0,     0,
-       0,     0,   859,   860,     0,   962,     0,   942,     0,   944,
-       0,   964,   966,     0,   957,   299,     0,     0,     0,   440,
-     437,   438,   146,   473,   472,     0,   487,   475,     0,     0,
-       0,     0,     0,     0,   164,   164,   158,     0,     0,     0,
-       0,     0,     0,     0,     0,   161,   161,   158,     0,     0,
-     158,     0,     0,     0,     0,     0,   523,   548,     0,     0,
-     524,     0,   521,     0,     0,   629,   630,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   687,
-       0,     0,     0,     0,     0,   710,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   734,     0,     0,   739,   740,
-       0,     0,     0,   761,   763,   762,     0,   765,     0,     0,
-     773,   775,   776,   810,     0,     0,     0,     0,   632,   633,
-     853,   851,   856,   855,   854,   852,   857,     0,   637,     0,
-     642,     0,   850,     0,   643,   644,   645,     0,     0,     0,
-       0,     0,   747,     0,     0,   748,   982,     0,   985,   981,
-       0,     0,     0,   749,     0,   750,  1001,  1006,  1003,  1002,
-    1000,  1007,  1004,   998,  1005,   999,  1008,     0,     0,   755,
-       0,     0,     0,  1014,     0,  1016,   758,     0,  1018,   759,
-     780,     0,     0,     0,   785,   786,   787,  1043,     0,     0,
-    1050,  1046,     0,     0,     0,  1041,  1040,  1054,  1053,     0,
-    1068,     0,     0,  1064,     0,  1072,     0,     0,  1065,     0,
-    1083,   172,   172,   172,     0,     0,     0,  1092,     0,     0,
-       0,  1094,     0,     0,     0,  1093,   175,     0,  1114,  1113,
-       0,  1117,     0,   135,  1123,  1124,     0,  1126,  1127,     0,
-     147,   148,  1118,  1139,  1140,     0,   181,     0,   195,     0,
-       0,     0,     0,     0,     0,     0,     0,   135,     0,     0,
-       0,     0,     0,     0,     0,     0,  1010,   989,     0,   996,
-     997,     0,     0,   249,     0,     0,     0,     0,   266,     0,
-     276,     0,   275,   324,   323,     0,     0,     0,     0,     0,
-     135,   371,     0,   146,   374,    68,    68,     0,     0,     0,
-     146,     0,    77,    76,   415,   402,     0,   412,   149,     0,
-       0,    47,     0,   392,     0,   864,     0,     0,     0,     0,
-       0,     0,   882,     0,     0,     0,     0,     0,     0,   903,
-     904,     0,     0,     0,     0,     0,   923,     0,   929,   930,
-     932,   934,     0,   939,   949,   950,   951,     0,   953,   958,
-     960,   961,   959,   858,     0,   941,     0,   940,   863,     0,
-       0,   945,   947,     0,   946,   967,   948,   955,     0,     0,
-     310,     0,     0,   485,   486,     0,   483,   479,     0,   164,
-     164,   164,   165,   166,   494,   495,   160,   159,     0,   164,
-     164,   164,     0,   500,   161,   164,   164,   164,   162,   163,
-     164,   164,     0,   164,   164,     0,   161,     0,   522,     0,
-       0,     0,   547,     0,   546,     0,     0,   599,     0,   600,
-       0,     0,     0,     0,   161,   161,   158,     0,     0,   158,
-       0,     0,     0,    83,    84,    82,   648,     0,     0,     0,
-       0,     0,   803,   801,   796,     0,   806,   790,   807,   793,
-     805,   799,   788,   802,   791,   789,   808,   804,     0,     0,
-     666,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     2,    48,     0,    14,     0,     0,   346,   297,     0,
+     361,     0,     0,     0,     0,     0,     0,   305,     0,   434,
+       0,     0,     0,     0,   981,     0,   312,     0,   316,     0,
+       0,     0,    68,     0,     0,   323,     0,     0,   450,    68,
+      15,     0,   457,    16,   460,     0,   477,   463,   464,   465,
+     466,   479,   468,   469,   470,     0,   472,   473,     0,     0,
+      17,    19,     0,   492,     0,     0,     0,   497,     0,    20,
+       0,     0,     0,     0,    21,   641,    22,     0,     0,     0,
+       0,     0,     0,   642,    23,   984,   982,   983,     0,  1042,
+       0,     0,     0,    25,     0,  1049,  1048,  1047,  1046,    27,
+       0,     0,     0,     0,     0,   135,     0,    28,     0,  1067,
+       0,  1064,    29,     0,     0,     0,     0,    30,     0,     0,
+       0,     0,    33,     0,     0,  1091,    34,     0,     0,     0,
+      35,  1119,  1118,  1120,  1121,    37,     0,     0,     0,     0,
+       0,     0,    38,     0,     0,  1124,    40,     0,     0,    42,
+       0,     0,     0,     0,   135,    43,  1145,    44,     0,     0,
+      45,     1,     4,   202,     0,   194,     0,     0,   196,     0,
+     204,   197,   201,   212,   213,   198,   214,     0,   200,     0,
+       0,   221,   231,   234,   233,   232,   230,   220,   224,   228,
+     229,   219,     0,     0,     0,   222,     0,     0,     0,   223,
+       0,     0,     0,   248,     0,   253,   265,   266,     0,   254,
+     255,   135,     0,   980,   257,   258,   260,     0,     0,     0,
+     264,     0,    85,    86,    87,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   275,     0,     0,     0,
+       0,     0,   138,   144,   136,   137,   139,   142,   145,   141,
+     140,   143,     0,     0,    49,    54,    55,    56,    57,    50,
+      51,    52,    58,    53,     0,   293,     0,   336,   332,   328,
+     329,   333,   330,   335,   294,   348,   341,   345,   340,   351,
+     350,   349,   347,   295,   339,     0,   296,     0,   363,   298,
+       0,   379,   368,   381,   369,   370,   372,     0,   374,   375,
+     135,   299,     0,     0,     0,     0,   300,     0,     0,   135,
+     301,   393,   135,   391,   302,   135,   394,   303,     0,   135,
+       0,   304,   414,     0,   412,   427,     0,     0,     0,   418,
+     410,     0,   420,   432,   423,   306,   435,   307,     0,     0,
+       0,   403,     0,   405,   404,   310,   399,   400,     0,   311,
+       0,   436,   437,   438,   314,   315,   439,   317,     0,   440,
+     441,   442,   319,    69,    70,    72,    71,   443,   320,   444,
+     445,   321,   447,   448,   449,   446,   322,     0,     0,   453,
+       0,   326,   455,   327,   135,     0,   461,   478,   462,   480,
+     481,   482,   467,   483,   485,   484,   486,   471,   474,   490,
+       0,     0,   487,   475,     0,     0,   494,   493,     0,     0,
+       0,     0,     0,     0,   504,     0,     0,     0,     0,     0,
+     505,     0,   640,     0,   506,     0,     0,   645,   644,   643,
+       0,   648,     0,     0,   826,     0,     0,     0,   651,   655,
+     657,   658,     0,     0,     0,   762,     0,     0,     0,   799,
+       0,     0,     0,     0,     0,     0,     0,   801,     0,     0,
+       0,    24,  1043,  1044,  1045,    26,     0,     0,     0,     0,
+    1056,  1057,     0,   135,     0,  1054,  1051,     0,     0,     0,
+     135,  1072,  1075,  1073,  1074,  1068,  1069,  1070,  1071,     0,
+       0,    32,  1088,  1089,     0,  1096,  1098,  1097,  1093,  1094,
+    1092,     0,     0,     0,  1099,     0,     0,     0,  1100,  1101,
+    1117,   190,  1087,  1086,   191,   192,   193,     0,     0,     0,
+       0,     0,  1129,  1142,  1132,     0,     0,  1135,     0,     0,
+    1134,  1133,   146,  1151,     0,  1150,  1146,   203,   199,     0,
+     208,     0,   205,     0,   237,   240,   241,   239,   238,   235,
+     236,   227,   226,   225,   242,   244,   243,     0,     0,     0,
+       0,     0,   256,     0,  1021,   269,     0,     0,   135,   276,
+      91,    88,    89,    90,   135,   278,   277,     0,     0,     0,
+       0,     0,     0,     0,   291,     0,   287,   285,   284,   292,
+     331,     0,     0,   334,   352,   353,   342,   343,   354,   356,
+     355,   344,   358,   357,     0,   362,   376,   377,   378,   366,
+     380,   367,   382,   373,   371,   365,     0,     0,     0,     0,
+       0,   135,   390,   146,   146,   146,   135,     0,     0,   135,
+     428,   413,     0,    73,   424,     0,   417,   419,   135,   433,
+     422,   308,     0,     0,   407,     0,     0,     0,     0,   873,
+     874,     0,   974,     0,   954,     0,   956,     0,   976,   978,
+       0,   969,   313,     0,     0,     0,   454,   451,   452,   146,
+     476,   489,   488,     0,   503,   491,     0,     0,     0,     0,
+       0,     0,   164,   164,   158,     0,     0,     0,     0,     0,
+       0,     0,     0,   161,   161,   158,     0,     0,   158,     0,
+       0,     0,     0,     0,   540,   565,     0,     0,   541,     0,
+     538,     0,     0,   507,   646,   647,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   707,
+       0,     0,     0,     0,     0,   730,     0,     0,     0,     0,
+       0,     0,     0,     0,   751,     0,     0,   756,   757,     0,
+       0,     0,   778,   780,   779,     0,   782,     0,     0,   790,
+     792,   793,   827,     0,     0,     0,     0,   649,   650,   867,
+     865,   870,   869,   868,   866,   871,     0,   654,     0,   659,
+       0,   864,     0,   660,   661,   662,     0,     0,     0,     0,
+       0,   764,     0,     0,   765,   994,     0,   997,   993,     0,
+       0,     0,   766,     0,   767,  1013,  1018,  1015,  1014,  1012,
+    1019,  1016,  1010,  1017,  1011,  1020,     0,     0,   772,     0,
+       0,     0,  1026,     0,  1028,   775,     0,  1030,   776,   797,
+       0,     0,     0,   802,   803,   804,  1055,     0,     0,  1062,
+    1058,     0,     0,     0,  1053,  1052,  1066,  1065,     0,  1080,
+       0,     0,  1076,     0,  1084,     0,     0,  1077,     0,  1095,
+     186,   186,   186,     0,     0,     0,  1105,     0,     0,     0,
+    1107,     0,     0,     0,  1106,   189,     0,  1127,  1126,     0,
+    1130,     0,   135,  1136,  1137,     0,  1139,  1140,     0,   147,
+     148,  1131,  1152,  1153,     0,   195,     0,   209,     0,     0,
+       0,     0,     0,     0,     0,     0,   135,     0,     0,     0,
+       0,     0,     0,     0,     0,  1022,  1001,     0,  1008,  1009,
+       0,     0,   263,     0,     0,     0,     0,   280,     0,   290,
+       0,   289,   338,   337,     0,     0,     0,     0,     0,   135,
+     385,     0,   146,   388,    68,    68,     0,     0,     0,   146,
+       0,    77,    76,   429,   416,     0,   426,   149,     0,     0,
+      47,     0,   406,     0,     0,   882,     0,     0,     0,     0,
+       0,     0,   900,     0,     0,     0,     0,     0,     0,   921,
+     922,     0,     0,     0,     0,   935,     0,   941,   942,   944,
+     946,     0,   951,   961,   962,   963,     0,   965,   970,   972,
+     973,   971,   872,     0,   953,     0,   952,   881,     0,     0,
+     957,   959,     0,   958,   979,   960,   967,     0,     0,   324,
+       0,     0,   501,   502,     0,   499,   495,     0,   164,   164,
+     164,   165,   166,   511,   512,   160,   159,     0,   164,   164,
+     164,     0,   517,   161,   164,   164,   164,   162,   163,   164,
+     164,     0,   164,   164,     0,   161,     0,   539,     0,     0,
+       0,   564,     0,   563,     0,     0,   616,     0,   617,     0,
+       0,     0,     0,   161,   161,   158,     0,     0,   158,     0,
+       0,     0,   183,   181,   182,   180,     0,     0,    83,    84,
+      82,   668,     0,     0,     0,     0,     0,   820,   818,   813,
+       0,   823,   807,   824,   810,   822,   816,   805,   819,   808,
+     806,   825,   821,     0,     0,   686,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   696,     0,     0,     0,     0,   709,   711,     0,
-       0,   717,   716,     0,     0,     0,     0,     0,   135,     0,
-       0,     0,     0,   730,     0,     0,   735,   736,   737,     0,
-       0,     0,   744,   760,   764,   766,   769,   768,     0,     0,
-       0,   774,   811,   813,     0,   812,   635,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   968,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   716,     0,     0,
+       0,     0,   729,   731,     0,     0,   737,   736,     0,     0,
+     170,     0,     0,   135,     0,     0,   747,     0,     0,   752,
+     753,   754,     0,     0,     0,   761,   777,   781,   783,   786,
+     785,     0,     0,     0,   791,   828,   830,     0,   829,   652,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   980,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   639,     0,     0,     0,     0,   746,     0,   135,
-       0,   977,   975,     0,     0,   135,     0,   980,   783,   751,
-       0,     0,     0,   757,     0,     0,  1019,   778,   779,     0,
-     781,  1049,  1051,  1048,  1047,  1038,     0,     0,  1069,     0,
-       0,  1073,  1078,   173,   174,  1090,  1089,  1091,   167,   167,
-     167,   167,   167,   167,   167,   167,   167,     0,  1115,     0,
-    1131,  1130,  1125,  1128,     0,     0,   135,     0,     0,     0,
-     192,     0,     0,     0,     0,     0,     0,     0,     0,   253,
-     257,   256,     0,     0,     0,     0,     0,     0,     0,     0,
-     988,     0,     0,     0,     0,   267,   269,   268,   135,   274,
-       0,     0,     0,   372,   373,   146,   135,     0,   378,   381,
-       0,     0,     0,    68,   401,    75,    79,    74,    78,   417,
-       0,   411,   151,   152,   150,    68,     0,     0,   395,   387,
-     135,   865,     0,     0,     0,   873,     0,   135,   878,     0,
-     883,   884,     0,   887,   888,   889,     0,     0,     0,   898,
-       0,   905,     0,     0,     0,   910,     0,     0,   915,     0,
-     918,     0,     0,   920,     0,   922,   924,     0,     0,   928,
-     931,   933,   935,     0,     0,   952,   954,   861,   963,   862,
-       0,   965,   956,     0,     0,   444,   445,     0,     0,   484,
-       0,   491,   492,   493,   164,   497,   498,   499,     0,     0,
-       0,   504,   505,   158,     0,     0,     0,   164,   510,   511,
-     512,   513,   515,   161,   518,   519,     0,   164,     0,     0,
-       0,   161,   161,   158,     0,     0,     0,     0,   545,     0,
-     549,     0,     0,     0,     0,     0,   161,   161,   158,     0,
+       0,     0,     0,     0,   656,     0,     0,     0,     0,   763,
+       0,   135,     0,   989,   987,     0,     0,   135,     0,   992,
+     800,   768,     0,     0,     0,   774,     0,     0,  1031,   795,
+     796,     0,   798,  1061,  1063,  1060,  1059,  1050,     0,     0,
+    1081,     0,     0,  1085,  1090,   187,   188,  1103,  1102,  1104,
+     167,   167,   167,   167,   167,   167,   167,   167,   167,     0,
+    1128,     0,  1144,  1143,  1138,  1141,     0,     0,   135,     0,
+       0,     0,   206,     0,     0,     0,     0,     0,     0,     0,
+       0,   267,   271,   270,     0,     0,     0,     0,     0,     0,
+       0,     0,  1000,     0,     0,     0,     0,   281,   283,   282,
+     135,   288,     0,     0,     0,   386,   387,   146,   135,     0,
+     392,   395,     0,     0,     0,    68,   415,    75,    79,    74,
+      78,   431,     0,   425,   151,   152,   150,    68,     0,     0,
+     409,   401,   879,     0,     0,   880,   135,   883,     0,     0,
+       0,   891,     0,   135,   896,     0,   901,   902,     0,   905,
+     906,   907,     0,     0,     0,   916,     0,   923,     0,     0,
+       0,   928,   929,     0,     0,     0,   936,     0,     0,   940,
+     943,   945,   947,     0,     0,   964,   966,   875,   975,   876,
+       0,   977,   968,     0,     0,   458,   459,     0,     0,   500,
+       0,   508,   509,   510,   164,   514,   515,   516,     0,     0,
+       0,   521,   522,   158,     0,     0,     0,   164,   527,   528,
+     529,   530,   532,   161,   535,   536,     0,   164,     0,     0,
+       0,   161,   161,   158,     0,     0,     0,     0,   562,     0,
+     566,     0,     0,     0,     0,     0,   161,   161,   158,     0,
        0,   158,     0,     0,     0,     0,     0,   161,   161,   158,
        0,     0,   158,     0,     0,     0,     0,     0,   161,   161,
      158,     0,     0,   158,     0,     0,     0,     0,   161,   161,
-     158,     0,     0,     0,   161,   525,   526,   527,   528,   530,
-       0,   533,   534,     0,   161,     0,     0,   135,   649,     0,
-       0,     0,     0,     0,     0,     0,   795,   792,   798,   797,
-     794,   800,     0,     0,     0,     0,     0,   135,   672,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   688,   689,   690,     0,   694,   691,   693,     0,   698,
-     697,   699,     0,     0,     0,     0,     0,     0,   135,     0,
-     135,     0,   715,   722,     0,   135,     0,     0,   728,   149,
-       0,   729,   135,     0,   135,   738,   741,   135,     0,   135,
-       0,   767,   772,   814,   636,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   841,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     842,     0,     0,     0,     0,     0,   646,   647,   135,   146,
-       0,   135,   135,   983,   984,     0,   986,     0,   753,     0,
-     135,  1015,  1017,   777,  1066,  1067,  1070,  1071,   169,   168,
-    1096,  1095,  1097,  1102,  1101,  1103,  1099,  1098,  1100,  1110,
-       0,     0,   135,     0,  1134,     0,     0,   196,     0,   193,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   991,
-       0,   994,  1028,   995,   993,   990,   135,   135,     0,   259,
-     128,     0,   345,     0,   369,   146,   149,     0,     0,   384,
-     397,     0,   407,     0,   388,   866,   149,   867,   149,   871,
-     149,   869,   135,   874,   149,   876,   146,   149,   880,   149,
-     885,   135,   890,   149,   892,   149,   894,   149,   896,   135,
-     899,   149,   901,   149,   135,   907,     0,     0,   149,   135,
-     912,   149,   916,     0,   149,   149,   135,   926,   149,   135,
-     937,   943,     0,     0,   442,   480,     0,   496,   501,   502,
-     503,     0,   507,   508,   509,   514,   164,   161,   520,   536,
-     537,   538,   539,   540,     0,   542,   543,   161,     0,     0,
-       0,   161,   161,   158,     0,     0,     0,     0,     0,     0,
-     161,   161,   158,     0,     0,     0,     0,     0,     0,   161,
-     161,   158,     0,     0,     0,   161,   164,   164,   164,   164,
-     164,     0,   164,   164,     0,   161,   161,   164,   164,   164,
-     164,   164,     0,   164,   164,     0,   161,   161,   601,   602,
-     603,   604,   606,     0,   609,   610,     0,   161,   612,   613,
-     614,   615,   616,     0,   618,   619,   161,   529,   161,     0,
-     535,     0,     0,   650,   149,     0,     0,   149,     0,     0,
-       0,   663,   149,   664,   667,   668,   149,   669,   671,     0,
+     158,     0,     0,     0,   161,   542,   543,   544,   545,   547,
+       0,   550,   551,     0,   161,     0,     0,   184,   185,   666,
+     135,   665,   135,   669,     0,     0,     0,     0,     0,     0,
+       0,   812,   809,   815,   814,   811,   817,     0,     0,     0,
+       0,     0,   135,   692,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   708,   709,   710,     0,
+     714,   711,   713,     0,   718,   717,   719,     0,     0,     0,
+       0,     0,     0,   135,     0,   135,     0,   735,   176,   172,
+     177,   171,   174,   173,   175,   742,   743,     0,     0,     0,
+     746,   135,     0,   135,   755,   758,   135,     0,   135,     0,
+     784,   789,   831,   653,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   855,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   856,     0,
+       0,     0,     0,     0,   663,   664,   135,   146,     0,   135,
+     135,   995,   996,     0,   998,     0,   770,     0,   135,  1027,
+    1029,   794,  1078,  1079,  1082,  1083,   169,   168,  1109,  1108,
+    1110,  1115,  1114,  1116,  1112,  1111,  1113,  1123,     0,     0,
+     135,     0,  1147,     0,     0,   210,     0,   207,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1003,     0,  1006,
+    1040,  1007,  1005,  1002,   135,   135,     0,   273,   128,     0,
+     359,     0,   383,   146,   149,     0,     0,   398,   411,     0,
+     421,     0,   402,     0,     0,   884,   149,   885,   149,   889,
+     149,   887,   135,   892,   149,   894,   146,   149,   898,   149,
+     903,   135,   908,   149,   910,   149,   912,   149,   914,   135,
+     917,   149,   919,   149,   135,   925,     0,   149,   135,   930,
+     149,   933,   149,   135,   938,   149,   135,   949,   955,     0,
+       0,   456,   496,     0,   513,   518,   519,   520,     0,   524,
+     525,   526,   531,   164,   161,   537,   553,   554,   555,   556,
+     557,     0,   559,   560,   161,     0,     0,     0,   161,   161,
+     158,     0,     0,     0,     0,     0,     0,   161,   161,   158,
+       0,     0,     0,     0,     0,     0,   161,   161,   158,     0,
+       0,     0,   161,   164,   164,   164,   164,   164,     0,   164,
+     164,     0,   161,   161,   164,   164,   164,   164,   164,     0,
+     164,   164,     0,   161,   161,   618,   619,   620,   621,   623,
+       0,   626,   627,     0,   161,   629,   630,   631,   632,   633,
+       0,   635,   636,   161,   546,   161,     0,   552,     0,     0,
+     667,   670,   149,     0,     0,   149,     0,     0,     0,   683,
+     149,   684,   687,   688,   149,   689,   691,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   712,
+     715,     0,   149,     0,     0,     0,   732,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   692,   695,     0,   149,     0,     0,     0,   712,     0,
-       0,     0,     0,     0,   725,     0,     0,     0,   726,     0,
-       0,     0,     0,     0,     0,   770,     0,     0,     0,     0,
+     787,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   135,     0,
-       0,    80,     0,     0,   848,   849,   146,     0,     0,     0,
-     978,   976,   987,   752,   754,   146,  1112,  1141,     0,     0,
-    1136,  1135,   197,     0,     0,     0,   231,     0,     0,     0,
-       0,     0,   992,   247,   248,   149,   346,   350,   370,   375,
-       0,   382,   416,   295,   868,   872,   870,   875,   877,   879,
-     881,   886,   891,   893,   895,   897,   900,   902,   906,   146,
-     149,     0,   914,   146,   917,   919,   921,   925,   146,   936,
-     146,     0,   311,     0,   506,   516,   164,   161,   544,   164,
-     164,   164,   164,   164,     0,   164,   164,   161,   590,   591,
-     592,   593,   594,     0,   596,   597,   161,   164,   164,   164,
-     164,   164,     0,   164,   164,   161,   164,   559,   560,   561,
-     562,   564,   161,   567,   568,     0,   164,   164,   579,   580,
-     581,   582,   584,   161,   587,   588,     0,   164,   605,   161,
-       0,   611,   161,   620,   531,   161,   621,   622,   653,     0,
-     149,   657,   656,     0,   135,     0,   665,   670,   135,     0,
-     677,   678,   679,   680,   684,   685,   681,   682,   683,     0,
-     149,   700,   704,     0,   135,     0,     0,   713,   719,   718,
-     149,   720,     0,     0,   727,     0,   731,   149,     0,     0,
-     771,     0,   170,   170,     0,     0,   170,     0,   170,   968,
-       0,     0,   170,   170,     0,     0,     0,     0,     0,     0,
-     968,     0,   843,     0,     0,     0,   968,    81,     0,   170,
-       0,  1012,   847,     0,     0,  1143,  1142,     0,     0,   201,
-       0,   236,     0,     0,     0,  1029,   260,   383,   908,   909,
-     911,   913,   927,   938,   304,     0,   517,   541,   550,   551,
-     552,   553,   554,   161,   556,   557,   164,   161,   598,   570,
-     571,   572,   573,   574,   161,   576,   577,   164,   563,   164,
-     161,   569,   583,   164,   161,   589,   607,   161,   617,   532,
-     149,   651,   658,     0,     0,     0,     0,     0,   686,   701,
-       0,     0,     0,   714,   721,     0,   723,   732,   733,   149,
-     742,     0,   171,   968,   968,    80,     0,   968,     0,   968,
-     815,   135,     0,   968,   968,    80,     0,     0,   968,   968,
-       0,     0,   828,     0,   846,   844,   845,   838,   968,   968,
-    1012,  1023,     0,   979,   756,     0,     0,   203,     0,     0,
-       0,     0,   164,   558,   595,   164,   578,   565,   164,   585,
-     164,   608,   652,   149,   654,   149,     0,   149,     0,   149,
-     702,   149,     0,     0,     0,   968,   836,   832,   968,     0,
-     837,     0,   831,   968,     0,   834,   833,   968,     0,     0,
-     824,   839,   968,   968,   135,   825,   835,  1023,   973,     0,
-       0,  1013,  1021,     0,     0,     0,   232,   154,   157,   156,
-     155,   153,     0,   482,   555,   575,   566,   586,   655,   662,
-       0,   676,   673,   703,   708,     0,   149,     0,   816,   821,
-      80,     0,   840,     0,   818,    80,     0,     0,   826,   829,
-       0,   974,  1025,  1027,     0,  1020,     0,     0,   237,     0,
-     659,   135,   674,   705,   724,   743,   968,     0,     0,   968,
-       0,   968,   149,  1026,  1022,   202,     0,     0,   135,   660,
-     675,   135,   706,   822,     0,   968,   819,     0,   827,   968,
-     204,   254,   661,   707,    80,   817,    80,   830,   968,   968,
-     823,   820
+       0,     0,   135,     0,     0,    80,     0,     0,   862,   863,
+     146,     0,     0,     0,   990,   988,   999,   769,   771,   146,
+    1125,  1154,     0,     0,  1149,  1148,   211,     0,     0,     0,
+     245,     0,     0,     0,     0,     0,  1004,   261,   262,   149,
+     360,   364,   384,   389,     0,   396,   430,   309,     0,   878,
+     886,   890,   888,   893,   895,   897,   899,   904,   909,   911,
+     913,   915,   918,   920,   924,   146,   149,   932,   146,   934,
+     937,   146,   948,   146,     0,   325,     0,   523,   533,   164,
+     161,   561,   164,   164,   164,   164,   164,     0,   164,   164,
+     161,   607,   608,   609,   610,   611,     0,   613,   614,   161,
+     164,   164,   164,   164,   164,     0,   164,   164,   161,   164,
+     576,   577,   578,   579,   581,   161,   584,   585,     0,   164,
+     164,   596,   597,   598,   599,   601,   161,   604,   605,     0,
+     164,   622,   161,     0,   628,   161,   637,   548,   161,   638,
+     639,   673,     0,   149,   677,   676,     0,   135,     0,   685,
+     690,   135,     0,   697,   698,   699,   700,   704,   705,   701,
+     702,   703,     0,   149,   720,   724,     0,   135,     0,     0,
+     733,   739,   738,   149,   740,     0,   744,     0,   748,   149,
+       0,     0,   788,     0,   178,   178,     0,     0,   178,     0,
+     178,   980,     0,     0,   178,   178,     0,     0,     0,     0,
+       0,     0,     0,   857,     0,     0,     0,   980,    81,     0,
+     178,     0,  1024,   861,     0,     0,  1156,  1155,     0,     0,
+     215,     0,   250,     0,     0,     0,  1041,   274,   397,     0,
+     926,   927,   931,   939,   950,   318,     0,   534,   558,   567,
+     568,   569,   570,   571,   161,   573,   574,   164,   161,   615,
+     587,   588,   589,   590,   591,   161,   593,   594,   164,   580,
+     164,   161,   586,   600,   164,   161,   606,   624,   161,   634,
+     549,   149,   671,   678,     0,     0,     0,     0,     0,   706,
+     721,     0,     0,     0,   734,   741,     0,   749,   750,   149,
+     759,     0,   179,   980,   980,    80,     0,   980,     0,   980,
+     832,   135,     0,   980,   980,    80,     0,     0,   980,   980,
+       0,     0,   860,   858,   859,   838,   980,   980,  1024,  1035,
+       0,   991,   773,     0,     0,   217,     0,     0,     0,   877,
+       0,   164,   575,   612,   164,   595,   582,   164,   602,   164,
+     625,   672,   149,   674,   149,     0,   149,     0,   149,   722,
+     149,     0,   149,     0,   980,   844,   840,   980,     0,   845,
+       0,   839,   980,     0,   842,   841,   980,     0,     0,   836,
+     835,   980,   135,   837,   843,  1035,   985,     0,     0,  1025,
+    1033,     0,     0,     0,   246,   154,   157,   156,   155,   153,
+       0,   498,   572,   592,   583,   603,   675,   682,     0,   696,
+     693,   723,   728,     0,   745,     0,   849,   834,    80,     0,
+     847,     0,   833,    80,     0,   848,     0,   986,  1037,  1039,
+       0,  1032,     0,     0,   251,     0,   679,   135,   694,   725,
+     760,   980,     0,     0,   980,     0,   149,  1038,  1034,   216,
+       0,     0,   135,   680,   695,   135,   726,   851,     0,   980,
+     850,     0,   980,   218,   268,   681,   727,    80,   852,    80,
+     846,   980,   980,   854,   853
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    45,   382,   161,   145,   524,  1104,  2256,  2257,   383,
-     384,   385,   386,   146,   147,   148,    77,   409,  1042,  1475,
-    2442,  1188,  1200,  1184,  1770,  2343,  1395,   299,    55,   322,
-     328,   332,   335,    62,   352,   348,   344,   338,   702,   356,
-      68,   360,    78,    89,   366,   371,  1432,    98,   393,   149,
-     164,   200,   431,   746,   440,   441,   749,   754,   443,   756,
-     446,   758,   458,   762,   764,   766,   463,   467,   471,   474,
-     478,   506,   502,  1113,   492,   789,   784,  1105,   793,   494,
-     511,   514,   519,   525,   528,   533,   538,   820,   540,   203,
-    1537,   219,   543,   547,   552,   558,   228,  1177,   561,   232,
-     569,  1193,   575,   862,  1208,   856,  1578,  1214,  1212,   857,
-    1580,   860,  1217,  1219,   579,   234,   242,   615,   929,  1258,
-     918,  1352,  1740,  2059,   934,   927,   815,  1153,  1157,  1164,
-    1166,   717,   246,   942,   945,   953,  1066,  1067,  1068,   718,
-    2371,  2372,   976,   979,  2431,  2432,  2428,  2429,  2472,  1069,
-    1070,   251,   257,   265,   629,   624,   270,   275,   639,   645,
-    1003,  1008,   667,   280,   284,   652,   287,   658,   662,  1017,
-    1025,  1021,   292,   293,   303,  1029,   306,   312,   680,   683,
-     677,   314,   317,   688
+      -1,    45,   385,   161,   145,   527,  1113,  2267,  2268,   386,
+     387,   388,   389,   146,   147,   148,    77,   412,  1051,  1487,
+    2450,  1197,  1209,  1193,  1788,  1715,  2353,  1247,  1649,  1407,
+     302,    55,   325,   331,   335,   338,    62,   355,   351,   347,
+     341,   709,   359,    68,   363,    78,    89,   369,   374,  1444,
+      98,   396,   149,   164,   200,   434,   753,   443,   444,   756,
+     761,   446,   763,   449,   765,   461,   769,   771,   773,   466,
+     470,   474,   477,   481,   509,   505,  1122,   495,   796,   791,
+    1114,   800,   497,   514,   517,   522,   528,   531,   536,   541,
+     827,   543,   203,  1547,   220,   546,   548,   552,   557,   563,
+     229,  1186,   566,   234,   574,  1202,   580,   870,  1217,   864,
+    1588,  1223,  1221,   865,  1590,   868,  1226,  1228,   584,   236,
+     244,   621,   938,  1273,   927,  1364,  1758,  2073,   943,   936,
+     822,  1162,  1166,  1173,  1175,   724,   248,   951,   954,   962,
+    1075,  1076,  1077,   725,  2379,  2380,   985,   988,  2439,  2440,
+    2436,  2437,  2478,  1078,  1079,   253,   259,   267,   635,   630,
+     272,   277,   645,   651,  1012,  1017,   674,   282,   286,   658,
+     290,   664,   668,  1026,  1034,  1030,   295,   296,   306,  1038,
+     309,   315,   687,   690,   684,   317,   320,   695
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -2457,267 +2479,267 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -2314
 static const yytype_int16 yypact[] =
 {
-    5026,   107,    41, -2314, -2314,   704,   506,   397,   -17,    27,
-    3730,    71,   892,    22,  5179,    48,   937, -2314,    71,   606,
-     717,   -59,    42,   129,   166,   114,   436,  3012,   169,   609,
-     129, -2314,   -31,    30,    56, -2314,    89,   815, -2314,   542,
-   -2314,    52,  3836,     8,   105,   449,   472,   533,   234,   481,
-     497,   115,   508,    29,   459, -2314,   -68,    68,    71,     0,
-     577,   571, -2314,   479, -2314, -2314,    37,   479, -2314, -2314,
-   -2314, -2314,   479, -2314, -2314, -2314, -2314, -2314, -2314,   -11,
-     523,  4711,   228,   518,   514,   539,   560,   574,   580, -2314,
-   -2314, -2314,   479,  1098,   479,   479,   820,   479, -2314, -2314,
-   -2314,   405, -2314, -2314, -2314, -2314,  4489, -2314, -2314, -2314,
-   -2314, -2314, -2314,   479, -2314, -2314, -2314, -2314, -2314, -2314,
+    4958,    95,   436, -2314, -2314,   686,   338,   694,    94,   424,
+    2276,    29,   510,    76,  5005,    66,  1228, -2314,    29,   456,
+     641,   -76,     5,    -7,   308,   131,   737,  3637,    32,   623,
+      -7, -2314,   105,    49,   347, -2314,    52,   559, -2314,   376,
+   -2314,    17,  1662,    19,    58,   128,   204,   145,   -56,   384,
+     448,    74,   476,    -6,   104, -2314,   -12,    37,    29,    26,
+     739,   600, -2314,   820, -2314, -2314,    30,   820, -2314, -2314,
+   -2314, -2314,   820, -2314, -2314, -2314, -2314, -2314, -2314,   634,
+     478,  4673,   220,   492,   493,   529,   540,   552,   565, -2314,
+   -2314, -2314,   820,  1129,   820,   820,   939,   820, -2314, -2314,
+   -2314,   400, -2314, -2314, -2314, -2314,  2471, -2314, -2314, -2314,
+   -2314, -2314, -2314,   820, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314,  1316, -2314,   479, -2314,
-   -2314,    71,    71,    71,    71,    71,    71,    71,    71,    71,
-      71, -2314, -2314,   489, -2314,   561,  1101,    23, -2314,   476,
-     -23,  4133,    70,  4540,  4103,  4489,  3804, -2314,   413,   483,
-     641,   610,     2,   525,   129,   131, -2314,   634, -2314,   519,
-     475,   111,   713,     3,   478, -2314,    18,   631,    -6,   713,
-   -2314,  4711, -2314, -2314, -2314,   718, -2314, -2314, -2314, -2314,
-     684, -2314, -2314, -2314,   617, -2314, -2314,  4711,  3677, -2314,
-   -2314,    61, -2314,   757,   766,   134, -2314,   479, -2314,   101,
-      10,    69, -2314, -2314, -2314,   779,   781,    71,    71,   479,
-     479, -2314, -2314, -2314, -2314, -2314,  1682, -2314,   787,   807,
-     479, -2314,   814, -2314, -2314, -2314, -2314, -2314,   479,   983,
-      71,  2264,   479,  1316,   479, -2314,   827, -2314,  3877, -2314,
-   -2314,   584,   832,   835,   479, -2314,   278,   836,  4711,   839,
-   -2314,  1025,   479,   760, -2314,   214,   682, -2314, -2314, -2314,
-   -2314, -2314, -2314,   850,    71,    86,   858,   479,   479, -2314,
-     479,   633,   879, -2314,   479,   479, -2314,   886,    19,    46,
-     894,  1316, -2314, -2314, -2314,   635,   479, -2314, -2314, -2314,
-   -2314,   479, -2314,   905,   906, -2314,   479,   885, -2314, -2314,
-   -2314, -2314, -2314, -2314,   479, -2314,   553,   912, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,   479,
-     479,   479, -2314,   479,   916,   927, -2314,   479,   479,   479,
-   -2314,   479, -2314, -2314, -2314,   931, -2314, -2314,  1316,   935,
-   -2314, -2314, -2314, -2314,   946,   948,  4711, -2314,   479, -2314,
-   -2314, -2314,   479,   945,   949,   949,  4711,   479,   479,   479,
-     479,   479,   479, -2314,   479,  4489,  1098,   479,   479, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,  1098,
-     479, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-   -2314,   958, -2314,   725,   589, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314,   -46, -2314, -2314, -2314,   809, -2314,   615, -2314,
-   -2314, -2314,   968, -2314,   972, -2314, -2314,   -49,   799, -2314,
-     821, -2314, -2314, -2314,   822, -2314, -2314,  1316, -2314,   479,
-     479,  3374,   479, -2314,  4711,  4711,  1316, -2314, -2314,  1316,
-   -2314, -2314,  1316, -2314, -2314,  4711,  1316,   479, -2314, -2314,
-    4711, -2314,   985,    18,   811,     5, -2314, -2314,   813,  4711,
-     990, -2314, -2314, -2314, -2314,   994,   997,  1003, -2314,   825,
-   -2314, -2314, -2314, -2314, -2314,   479, -2314,   454, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314,    18, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314,   469, -2314,   820, -2314,
+   -2314,    29,    29,    29,    29,    29,    29,    29,    29,    29,
+      29, -2314, -2314,   507, -2314,   580,  1141,   179, -2314,   533,
+     613,  4220,    98,  4611,  4556,  2471,  3958, -2314,   435,   505,
+     720,   629,     8,   551,    -7,     3, -2314,   669, -2314,   544,
+     511,   134,   553,   -49,   655, -2314,    14,   667,    48,   553,
+   -2314,  4673, -2314, -2314, -2314,   701,   755, -2314, -2314, -2314,
+   -2314,   845, -2314, -2314, -2314,   305, -2314, -2314,  4673,  4135,
+   -2314, -2314,    80, -2314,   785,   796,   466, -2314,   820, -2314,
+      38,   468,   502,   803, -2314, -2314, -2314,   814,   826,    29,
+      29,   820,   820, -2314, -2314, -2314, -2314, -2314,  2946, -2314,
+     836,   849,   820, -2314,   842, -2314, -2314, -2314, -2314, -2314,
+     820,   523,    29,  3766,   820,   469,   820, -2314,   858, -2314,
+    2556, -2314, -2314,    23,   862,   870,   820, -2314,   -28,   884,
+    4673,   900, -2314,   817,   820,   804, -2314,   403,   550,   909,
+   -2314, -2314, -2314, -2314, -2314, -2314,   919,    29,   108,   928,
+     820,   820, -2314,   820,   706,   965, -2314,   820,   820, -2314,
+     967,    13,    56,   969,   469, -2314, -2314, -2314,   126,   820,
+   -2314, -2314, -2314, -2314,   820, -2314,   994,  1000, -2314,   820,
+     598, -2314, -2314, -2314, -2314, -2314, -2314,   820, -2314,   645,
+    1003, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314,   820,   820,   820, -2314,   820,  1011,  1019, -2314,
+     820,   820,   820, -2314,   820, -2314, -2314, -2314,  1021, -2314,
+   -2314,   469,  1025, -2314, -2314, -2314, -2314,  1030,  1036,  4673,
+   -2314,   820, -2314, -2314, -2314,   820,  1037,  1042,  1042,  4673,
+     820,   820,   820,   820,   820,   820, -2314,   820,  2471,  1129,
+     820,   820, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314,  1129,   820, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314,  1043, -2314,   802,     1, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314,   329, -2314, -2314, -2314,   895,
+   -2314,   664, -2314, -2314, -2314,  1055, -2314,  1057, -2314, -2314,
+      35,   879, -2314,   896, -2314, -2314, -2314,   905, -2314, -2314,
+     469, -2314,   820,   820,  3897,   820, -2314,  4673,  4673,   469,
+   -2314, -2314,   469, -2314, -2314,   469, -2314, -2314,  4673,   469,
+     820, -2314, -2314,  4673, -2314,  1064,    14,   885,     9, -2314,
+   -2314,   901,  4673,  1079, -2314, -2314, -2314, -2314,  1084,  1089,
+    1093, -2314,   916, -2314, -2314, -2314, -2314, -2314,   820, -2314,
+     182, -2314, -2314, -2314, -2314, -2314, -2314, -2314,    14, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314,   479,  1006,   805,  3877, -2314, -2314,
-   -2314,  1316, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314,  4711,  4711, -2314, -2314,  1010,
-      71, -2314, -2314,  1012,  1013,   837,   479,   192,   943, -2314,
-     503,   950,  4660,   416,  1030, -2314,  1026, -2314,  1033, -2314,
-    1035, -2314, -2314, -2314,   479, -2314,  4430,  1362,   426,  1046,
-     337,   959, -2314, -2314, -2314,  1038,   409,  1056,    20,   479,
-     296,   371,    25,  4711,    71,  1665,   517,     1,   154,    90,
-      -3, -2314,  1049,  1054,  1059, -2314, -2314, -2314, -2314, -2314,
-     479,   479,   479,   479, -2314, -2314,   479,  1316,   479, -2314,
-     479,  1098,   479,  1076,  1316, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314,   386,   389, -2314, -2314, -2314,  1080, -2314,
-   -2314, -2314, -2314,  1002, -2314,  1090,  1094,  1081, -2314,   422,
-     429,   446, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-     479,   479,  1102,   479,   479, -2314,  3234, -2314,   625,  1115,
-   -2314,   644,  1126, -2314, -2314,   -14,   479,   479, -2314,  1122,
-   -2314, -2314,  1134,   915,   479,  1128,   138, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314, -2314,   820,  1099,   892,
+    2556, -2314, -2314, -2314,   469,  1102, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-    1137,   479,   479,   479,  4711, -2314,  1140,  2563, -2314,  1142,
-    1144,  1316, -2314, -2314, -2314, -2314, -2314,  1316, -2314, -2314,
-     479,   479,   479,  4711,   479,  1098,   479, -2314,   479, -2314,
-   -2314, -2314, -2314, -2314,  1150,  1151, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314,   496, -2314,   479, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,  4711,
-    4711,  4711,  1153,   479,  1316, -2314,   -14,   -14,   -14,  1316,
-    1098,   479,  1316, -2314, -2314,   479,   -25,   970,  1154, -2314,
-   -2314,  1316, -2314, -2314, -2314,  1156,  1159,   764,   479,  5006,
-     342,   372, -2314, -2314,   479,   501,   868, -2314,   928, -2314,
-    1665,   547,   903,   427, -2314, -2314,   479,   479,  1163, -2314,
-   -2314, -2314,   -14, -2314, -2314,  4571, -2314, -2314,  1170,  1172,
-     479,  1176,  1179,  1180,   -27,   -27,   -54,  1184,  1185,  1187,
-    1188,   942,  1192,  1195,  1196,   448,   448,   -54,  1198,  1201,
-     -54,  1202,  1205,  5180,  1206,  1209, -2314, -2314,  1210,  1211,
-   -2314,   694, -2314,  1215,  1216, -2314, -2314,  1041,   987,  1004,
-    1008,  1133,   442,  1014,  1238,   158,  1118,  1145,   530,   803,
-    1212,  1027,  1028,  1149,  1246,  1058,    51,    36,  1007,  1029,
-    4460,    63,  1665,  1219,   -97,  1061,  1254,    74, -2314, -2314,
-     215,  1257,  1261, -2314, -2314, -2314,  1262,  1074,    88,  1665,
-    1075, -2314, -2314, -2314,    71,  1269,  1270,   479, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314,    -4, -2314,   791,
-   -2314,   479, -2314,   479, -2314, -2314, -2314,   479,   479,   479,
-     337,  4711, -2314,  1273,   812, -2314, -2314,   479, -2314, -2314,
-     479,  4489,   479, -2314,  4711, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314,    71,   479, -2314,
-     479,   337,  1274, -2314,   479,   479, -2314,    71, -2314, -2314,
-   -2314,   455,  1276,  1277, -2314, -2314, -2314, -2314,   479,   479,
-   -2314, -2314,  1098,   479,   479, -2314, -2314, -2314, -2314,   479,
-   -2314,   479,  1181, -2314,   479, -2314,   479,  1183, -2314,  1284,
-   -2314,   368,   368,   368,  1285,  1286,  1290, -2314,  1291,  1292,
-    1294, -2314,  1296,  1299,  1295, -2314, -2314,   479,  1302, -2314,
-     479, -2314,  3877,  1316, -2314, -2314,  1303, -2314, -2314,  1304,
-   -2314, -2314, -2314, -2314,  1283,  2264, -2314,   479,  1300,   479,
-     479,   479,   795,  1301,  1307,   479,   479,  1316,   112,   961,
-     986,   988,   989,   992,   999,  1001,  2563, -2314,  1015, -2314,
-   -2314,  1308,  1312, -2314,   479,  1326,  1338,  1344, -2314,  4711,
-   -2314,   479, -2314, -2314, -2314,   479,   479,   479,  1346,  1347,
-    1316, -2314,  4711,   -14, -2314,   713,   713,  1098,   479,  1348,
-     -14,   479,    58,   110,   470, -2314,  1351, -2314,   749,   479,
-    1349,  1357,   479, -2314,  1353,  4489,  1148,  1152,  1157,    92,
-    4489,  1160, -2314,   252,  1232,    94,  1165,  1166,   139, -2314,
-   -2314,    53,  1204,  1124,    17,   179,  1665,   -64, -2314,  1364,
-    1155, -2314,   466, -2314, -2314, -2314, -2314,  1665,  1193, -2314,
-   -2314, -2314, -2314, -2314,   479, -2314,   479, -2314, -2314,   479,
-     479, -2314, -2314,   479, -2314, -2314, -2314, -2314,  1203,   479,
-   -2314,   479,    91, -2314, -2314,  1365,  1385, -2314,   479,   -27,
-     -27,   -27, -2314, -2314, -2314, -2314, -2314, -2314,  1386,   -27,
-     -27,   -27,   225, -2314,   448,   -27,   -27,   -27, -2314, -2314,
-     -27,   -27,  1387,   -27,   -27,  1389,   448,   425, -2314,  1367,
-    1391,  1392, -2314,   696, -2314,   723,   953, -2314,  1019, -2314,
-    1146,  1394,  1396,  1397,   448,   448,   -54,  1399,  1403,   -54,
-    1409,  1413,  1417, -2314, -2314, -2314,  4489,   910,   479,  1055,
-    1108,   619, -2314, -2314, -2314,   679, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,  1419,   479,
-   -2314,    71,  1420,   479,  4711,    71,  1117,  1207,  1208,   190,
-     202,  1220,   226,  1158,  1418,  1426,  1427,   442,  1434,  1440,
-    1442,  1162,   864,  1444,   479,  1065,  1168, -2314, -2314,    71,
-    4489, -2314, -2314,  4489,   479,  1450,   479,  4711,  1316,  1098,
-    4711,  4489,    71, -2314,  4489,  4711, -2314, -2314, -2314,    71,
-      71,  4489, -2314, -2314, -2314, -2314, -2314, -2314,  4489,   479,
-      71, -2314, -2314, -2314,   479, -2314, -2314,  1451,   479,  1250,
-     193,   479,  1251,   479,   199,   479, -2314,   479,  1252,  1256,
-     479,   479,   479,   479,   479,   479,   479,   479,    16,   479,
-     479,  1259, -2314,   479,   479,   479,   479, -2314,  4711,  1316,
-    1457,  4711,  4711,   479,   479,  1316,  1098, -2314, -2314,   479,
-     479,   479,  4711, -2314,   479,   479, -2314, -2314, -2314,  1464,
-   -2314, -2314, -2314, -2314, -2314, -2314,   479,   479, -2314,   479,
-     479, -2314, -2314, -2314, -2314, -2314, -2314, -2314,   -26,   -26,
-     -26,   -26,   -26,   -26,   -26,   -26,   -26,   479, -2314,   479,
-   -2314, -2314, -2314, -2314,  2264,   479,  1316,   479,   479,   479,
-   -2314,   479,   479,  1465,   479,  1466,  1470,   479,   479, -2314,
-   -2314, -2314,  1473,   442,  1474,  1476,  1477,  1478,  1479,  1483,
-   -2314,    71,  4711,  4711,   479, -2314, -2314, -2314,  1316, -2314,
-     399,   479,   399, -2314, -2314,   -14,  1316,  4711, -2314, -2314,
-     479,   479,  1484,   713, -2314, -2314, -2314, -2314, -2314, -2314,
-     479, -2314, -2314, -2314, -2314,   713,   479,  1485, -2314, -2314,
-    1316, -2314,  4489,  4489,  4489,  4489,  4489,  1316, -2314,  4489,
-   -2314, -2314,  4489, -2314, -2314,  4489,  4489,  4489,  4489,  4489,
-    4489, -2314,  4711,  4489,   479, -2314,  1486,  4711, -2314,  4489,
-   -2314,  4489,  1487, -2314,  4711, -2314, -2314,  4711,  4489, -2314,
-   -2314, -2314, -2314,  4711,  4489, -2314, -2314, -2314, -2314, -2314,
-     479, -2314, -2314,  1489,   479, -2314, -2314,  1492,  1490, -2314,
-     479, -2314, -2314, -2314,   -27, -2314, -2314, -2314,  1493,  1496,
-    1498, -2314, -2314,   -54,  1500,  1501,  1502,   -27, -2314, -2314,
-   -2314, -2314, -2314,   448, -2314, -2314,  1504,   -27,  1505,  1506,
-    1507,   448,   448,   -54,  1509,  1510,  1511,  1042, -2314,  1123,
-   -2314,  1249,  1258,  1512,  1513,  1514,   448,   448,   -54,  1516,
-    1518,   -54,  1519,  1267,  1521,  1522,  1523,   448,   448,   -54,
-    1528,  1529,   -54,  1530,  1275,  1531,  1532,  1533,   448,   448,
-     -54,  1536,  1541,   -54,  1542,  1543,  1545,  1546,   448,   448,
-     -54,  1548,  1549,  1550,   448, -2314, -2314, -2314, -2314, -2314,
-    1554, -2314, -2314,  1555,   448,  1556,  1557,  1316, -2314,  4711,
-     479,   479,  4711,   479,  1559,  1041, -2314, -2314, -2314, -2314,
-   -2314, -2314,  1560,  4489,    71,  1561,  4489,  1316, -2314,  1562,
-    1041,   479,   479,   479,   479,   479,   479,   479,   479,   479,
-    1558, -2314, -2314, -2314,  1566, -2314, -2314, -2314,  1568, -2314,
-   -2314, -2314,   479,  4711,   479,  1569,  1041,    71,  1316,  1098,
-    1316,   479, -2314, -2314,   479,  1316,  1098,  1098, -2314,   749,
-    1572, -2314,  1316,  1098,  1316, -2314, -2314,  1316,  1098,  1316,
-    1098, -2314, -2314, -2314, -2314,   479,   479,   479,   479,   479,
-     479,   479,   479,   479,   479, -2314,   479,   479,   479,   479,
-     479,   479,   479,   479,   479,   479,   479,  3374,  1570,   479,
-   -2314,   479,   479,   479,  1573,  1575, -2314, -2314,  1316,   -14,
-    1576,  1316,  1316, -2314, -2314,  1098, -2314,   479, -2314,  1577,
-    1316, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+    4673,  4673, -2314, -2314,  1107,    29, -2314, -2314,  1109,  1110,
+     935,   820,   248,  1053, -2314,   579,  1054,  4181,    36,  1140,
+   -2314,  1151, -2314,  1154, -2314,  1156,  1160, -2314, -2314, -2314,
+     820, -2314,  4525,  1020,   438,  1163,   576,  1080, -2314, -2314,
+   -2314,  1157,    54,  1171,   119,   820,   331,   418,   164,  4673,
+      29,  1078,   470,    20,   157,     7,    11, -2314,  1164,  1167,
+    1182, -2314, -2314, -2314, -2314, -2314,   820,   820,   820,   820,
+   -2314, -2314,   820,   469,   820, -2314,   820,  1129,   820,  1183,
+     469, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,   358,
+     412, -2314, -2314, -2314,  1187, -2314, -2314, -2314, -2314,  1103,
+   -2314,  1194,  1195,  1197, -2314,   410,   430,   441, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314, -2314,   820,   820,  1200,
+     820,   820, -2314,  1833, -2314,   133,  1203, -2314,   846,  1219,
+   -2314, -2314,    -3,   820,   820, -2314,  1212, -2314, -2314,  1221,
+     889,   820,  1215,   661, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314, -2314,  1225,   820,   820,
+     820,  4673, -2314,  1227,  3013, -2314,  1229,  1231,   469, -2314,
+   -2314, -2314, -2314, -2314,   469, -2314, -2314,   820,   820,   820,
+    4673,   820,  1129,   820, -2314,   820, -2314, -2314, -2314, -2314,
+   -2314,  1233,  1234, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314,   434, -2314,   820, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314,  4673,  4673,  4673,  1232,
+     820,   469, -2314,    -3,    -3,    -3,   469,  1129,   820,   469,
+   -2314, -2314,   820,   -21,  1083,  1246, -2314, -2314,   469, -2314,
+   -2314, -2314,  1250,  1252,   874,   820,  3463,   458,   494, -2314,
+   -2314,   820,   485,   945, -2314,   990, -2314,  1078,   555,   988,
+      96, -2314, -2314,   820,   820,  1254, -2314, -2314, -2314,    -3,
+   -2314, -2314, -2314,  4639, -2314, -2314,  1257,  1262,   820,  1265,
+    1268,  1269,   321,   321,   286,  1258,  1272,  1274,  1275,  1027,
+    1277,  1278,  1279,    57,    57,   286,  1281,  1282,   286,  1288,
+    1289,  5007,  1290,  1291, -2314, -2314,  1292,  1293, -2314,   599,
+   -2314,  1295,  1301, -2314, -2314, -2314,   773,  1245,  1082,  1085,
+    1087,  1211,   379,  1090,  1308,     4,  1186,  1216,   851,   668,
+    1283,  1092,  1098,  1223,  1321,  1128,   223,    46,   -86,  1101,
+    2471,  1078,  1294,   -90,  1131,  1328,    70, -2314, -2314,   246,
+    1336,  1337, -2314, -2314, -2314,  1349,  1162,    65,  1078,  1165,
+   -2314, -2314, -2314,    29,  1351,  1358,   820, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314,    18, -2314,  2272, -2314,
+     820, -2314,   820, -2314, -2314, -2314,   820,   820,   820,   576,
+    4673, -2314,  1360,   959, -2314, -2314,   820, -2314, -2314,   820,
+    2471,   820, -2314,  4673, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314,    29,   820, -2314,   820,
+     576,  1363, -2314,   820,   820, -2314,    29, -2314, -2314, -2314,
+     461,  1364,  1365, -2314, -2314, -2314, -2314,   820,   820, -2314,
+   -2314,  1129,   820,   820, -2314, -2314, -2314, -2314,   820, -2314,
+     820,  1266, -2314,   820, -2314,   820,  1270, -2314,  1359, -2314,
+      78,    78,    78,  1375,  1376,  1378, -2314,  1380,  1383,  1379,
+   -2314,  1389,  1390,  1393, -2314, -2314,   820,  1394, -2314,   820,
+   -2314,  2556,   469, -2314, -2314,  1397, -2314, -2314,  1400, -2314,
+   -2314, -2314, -2314,  1387,  3766, -2314,   820,  1395,   820,   820,
+     820,   891,  1407,  1402,   820,   820,   469,    99,  1081,  1088,
+    1091,  1094,  1097,  1100,  1104,  3013, -2314,  1105, -2314, -2314,
+    1409,  1427, -2314,   820,  1411,  1430,  1432, -2314,  4673, -2314,
+     820, -2314, -2314, -2314,   820,   820,   820,  1434,  1437,   469,
+   -2314,  4673,    -3, -2314,   553,   553,  1129,   820,  1438,    -3,
+     820,   -27,   -23,    53, -2314,  1439, -2314,   102,   820,  1441,
+    1443,   820, -2314,  1444,   -60,  2471,  1222,  1226,  1235,    34,
+    2471,  1236, -2314,   209,  1322,    61,  1237,  1241,   163, -2314,
+   -2314,   419,  1296,   273,   -82,  1078,   491, -2314,  1448,  1224,
+   -2314,   437, -2314, -2314, -2314, -2314,  1078,  1263, -2314, -2314,
+   -2314, -2314, -2314,   820, -2314,   820, -2314, -2314,   820,   820,
+   -2314, -2314,   820, -2314, -2314, -2314, -2314,  1280,   820, -2314,
+     820,    24, -2314, -2314,  1449,  1462, -2314,   820,   321,   321,
+     321, -2314, -2314, -2314, -2314, -2314, -2314,  1464,   321,   321,
+     321,   663, -2314,    57,   321,   321,   321, -2314, -2314,   321,
+     321,  1465,   321,   321,  1466,    57,   709, -2314,  1467,  1470,
+    1471, -2314,   625, -2314,   734,   753, -2314,   843, -2314,  1217,
+    1473,  1476,  1479,    57,    57,   286,  1482,  1484,   286,  1485,
+    1487,  1488,    15, -2314, -2314, -2314,  4673,    29, -2314, -2314,
+   -2314,  2471,  1008,   820,  1016,   975,   344, -2314, -2314, -2314,
+     726, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314,  1490,   820, -2314,    29,  1491,   820,  4673,
+      29,  1143,  1273,  1276,   191,   193,  1284,   202,  1201,  1494,
+    1495,  1498,   379,  1499,  1500,  1501,  1218,   982,  1502,   820,
+    1073,  1214, -2314, -2314,    29,  2471, -2314, -2314,  2471,   820,
+      12,  1503,   820,   469,  1129,    29, -2314,  2471,  4673, -2314,
+   -2314, -2314,    29,    29,  2471, -2314, -2314, -2314, -2314, -2314,
+   -2314,  2471,   820,    29, -2314, -2314, -2314,   820, -2314, -2314,
+    1504,   820,  1300,    68,   820,  1302,   820,   244,   820, -2314,
+     820,  1303,  1304,   820,   820,   820,   820,   820,   820,   820,
+      25,   820,   820,  1305, -2314,   820,   820,   820,   820, -2314,
+    4673,   469,  1507,  4673,  4673,   820,   820,   469,  1129, -2314,
+   -2314,   820,   820,   820,  4673, -2314,   820,   820, -2314, -2314,
+   -2314,  1509, -2314, -2314, -2314, -2314, -2314, -2314,   820,   820,
+   -2314,   820,   820, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+     -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   820,
+   -2314,   820, -2314, -2314, -2314, -2314,  3766,   820,   469,   820,
+     820,   820, -2314,   820,   820,  1514,   820,  1483,  1515,   820,
+     820, -2314, -2314, -2314,  1516,   379,  1517,  1520,  1521,  1523,
+    1524,  1528, -2314,    29,  4673,  4673,   820, -2314, -2314, -2314,
+     469, -2314,   893,   820,   893, -2314, -2314,    -3,   469,  4673,
+   -2314, -2314,   820,   820,  1529,   553, -2314, -2314, -2314, -2314,
+   -2314, -2314,   820, -2314, -2314, -2314, -2314,   553,   820,  1532,
+   -2314, -2314, -2314,  1533,  1534, -2314,   469, -2314,  2471,  2471,
+    2471,  2471,  2471,   469, -2314,  2471, -2314, -2314,  2471, -2314,
+   -2314,  2471,  2471,  2471,  2471,  2471,  2471, -2314,  4673,  2471,
+     820, -2314, -2314,  4673,  2471,  2471, -2314,  4673,  2471, -2314,
+   -2314, -2314, -2314,  4673,  2471, -2314, -2314, -2314, -2314, -2314,
+     820, -2314, -2314,  1536,   820, -2314, -2314,  1537,  1539, -2314,
+     820, -2314, -2314, -2314,   321, -2314, -2314, -2314,  1540,  1541,
+    1542, -2314, -2314,   286,  1544,  1545,  1546,   321, -2314, -2314,
+   -2314, -2314, -2314,    57, -2314, -2314,  1549,   321,  1554,  1555,
+    1556,    57,    57,   286,  1558,  1559,  1560,   861, -2314,   910,
+   -2314,   946,  1271,  1561,  1562,  1563,    57,    57,   286,  1566,
+    1567,   286,  1568,  1310,  1569,  1570,  1573,    57,    57,   286,
+    1575,  1576,   286,  1578,  1318,  1579,  1580,  1581,    57,    57,
+     286,  1577,  1584,   286,  1585,  1586,  1587,  1589,    57,    57,
+     286,  1594,  1597,  1600,    57, -2314, -2314, -2314, -2314, -2314,
+    1598, -2314, -2314,  1602,    57,  1603,  1604, -2314, -2314, -2314,
+     469, -2314,   469, -2314,  4673,   820,   820,  4673,   820,  1605,
+    1245, -2314, -2314, -2314, -2314, -2314, -2314,  1606,  2471,    29,
+    1607,  2471,   469, -2314,  1608,  1245,   820,   820,   820,   820,
+     820,   820,   820,   820,   820,  1610, -2314, -2314, -2314,  1611,
+   -2314, -2314, -2314,  1614, -2314, -2314, -2314,   820,  4673,   820,
+    1615,  1245,    29,   469,  1129,   469,   820, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314, -2314,   820,  1129,  1129,
+   -2314,   469,  1129,   469, -2314, -2314,   469,  1129,   469,  1129,
+   -2314, -2314, -2314, -2314,   820,   820,   820,   820,   820,   820,
+     820,   820,   820,   820, -2314,   820,   820,   820,   820,   820,
+     820,   820,   820,   820,   820,  3897,  1616,   820, -2314,   820,
+     820,   820,  1618,  1619, -2314, -2314,   469,    -3,  1620,   469,
+     469, -2314, -2314,  1129, -2314,   820, -2314,  1621,   469, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-     479,   479,  1316,   479, -2314,  1098,   479, -2314,   479, -2314,
-    1497,  1578,  1579,  1583,  1582,   479,   479,  1585,  1586, -2314,
-    1588, -2314, -2314, -2314, -2314, -2314,  1316,  1316,  4711, -2314,
-   -2314,   479, -2314,   479, -2314,   -14,   749,   479,  1589, -2314,
-   -2314,   479, -2314,    18, -2314, -2314,   749, -2314,   749, -2314,
-     749, -2314,  1316, -2314,   749, -2314,   -14,   749, -2314,   749,
-   -2314,  1316, -2314,   749, -2314,   749, -2314,   749, -2314,  1316,
-   -2314,   749, -2314,   749,  1316, -2314,  4711,  1591,   749,  1316,
-   -2314,   749, -2314,  1596,   749,   749,  1316, -2314,   749,  1316,
-   -2314, -2314,  1598,    18, -2314, -2314,   479, -2314, -2314, -2314,
-   -2314,  1600, -2314, -2314, -2314, -2314,   -27,   448, -2314, -2314,
-   -2314, -2314, -2314, -2314,  1601, -2314, -2314,   448,  1602,  1603,
-    1604,   448,   448,   -54,  1606,  1607,  1608,  1609,  1611,  1613,
-     448,   448,   -54,  1616,  1617,  1618,  1619,  1620,  1621,   448,
-     448,   -54,  1623,  1624,  1625,   448,   -27,   -27,   -27,   -27,
-     -27,  1629,   -27,   -27,  1631,   448,   448,   -27,   -27,   -27,
-     -27,   -27,  1634,   -27,   -27,  1636,   448,   448, -2314, -2314,
-   -2314, -2314, -2314,  1637, -2314, -2314,  1638,   448, -2314, -2314,
-   -2314, -2314, -2314,  1639, -2314, -2314,   448, -2314,   448,  1640,
-   -2314,  1643,  1644, -2314,   749,  1645,  4489,   749,   479,  4711,
-    1646, -2314,   749, -2314, -2314, -2314,   749, -2314, -2314,  4711,
-    1657,   479,   479,   479,   479,   479,   479,   479,   479,   479,
-     479, -2314, -2314,  4489,   749,   479,  4711,  1658, -2314,  1098,
-    1098,  1098,   479,  4489, -2314,  1098,   479,  1659, -2314,  1098,
-    1098,  4711,  1098,   479,  1098, -2314,   479,   479,   479,   479,
-     479,   479,  1041,   479,   479,   479,  1041,   479,   479,   479,
-     479,  1041,   479,   479,   479,   479,   479,   479,  1316,   479,
-    1253,  1041,   479,   479, -2314, -2314,   -14,    71,  1660,  1661,
-   -2314, -2314, -2314, -2314, -2314,   -14, -2314, -2314,  1098,   479,
-   -2314, -2314, -2314,   823,  1662,  1663, -2314,  1666,   479,  1667,
-     399,  1664, -2314, -2314, -2314,   749, -2314, -2314, -2314, -2314,
-    1669, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,   -14,
-     749,  1671, -2314,   -14, -2314, -2314, -2314, -2314,   -14, -2314,
-     -14,  1673, -2314,   479, -2314, -2314,   -27,   448, -2314,   -27,
-     -27,   -27,   -27,   -27,  1668,   -27,   -27,   448, -2314, -2314,
-   -2314, -2314, -2314,  1675, -2314, -2314,   448,   -27,   -27,   -27,
-     -27,   -27,  1676,   -27,   -27,   448,   -27, -2314, -2314, -2314,
-   -2314, -2314,   448, -2314, -2314,  1677,   -27,   -27, -2314, -2314,
-   -2314, -2314, -2314,   448, -2314, -2314,  1679,   -27, -2314,   448,
-    1684, -2314,   448, -2314, -2314,   448, -2314, -2314, -2314,  4489,
-     749, -2314, -2314,  1685,  1316,   479, -2314, -2314,  1316,   479,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,   479,
-     749, -2314, -2314,  1686,  1316,   479,  1098, -2314, -2314, -2314,
-     749, -2314,   479,  1687, -2314,  1098, -2314,   749,  4711,  1041,
-   -2314,   479,  1688,  1688,   479,   479,  1688,  1041,  1688, -2314,
-    4711,  1041,  1688,  1688,   479,   479,  1041,   479,   479,   479,
-    1689,   479, -2314,  1098,   479,  1690, -2314, -2314,   479,  1688,
-      71,    43, -2314,  1691,    71, -2314, -2314,  1692,   479, -2314,
-    1693, -2314,  1695,  1584,   479, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314,   479, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314,   448, -2314, -2314,   -27,   448, -2314, -2314,
-   -2314, -2314, -2314, -2314,   448, -2314, -2314,   -27, -2314,   -27,
-     448, -2314, -2314,   -27,   448, -2314, -2314,   448, -2314, -2314,
-     749, -2314, -2314,  4489,  4711,   479,  4711,   479, -2314, -2314,
-    4489,  4711,   479, -2314, -2314,  1696, -2314, -2314, -2314,   749,
-   -2314,  1697, -2314, -2314, -2314,  1041,   479, -2314,  1698, -2314,
-   -2314,  1316,  1699, -2314, -2314,  1041,   479,  1700, -2314, -2314,
-     479,  1711, -2314,  4711, -2314, -2314, -2314, -2314, -2314, -2314,
-      43,  1293,  1665, -2314, -2314,  1724,  1726, -2314,  1587,  1701,
-      97,  1731,   -27, -2314, -2314,   -27, -2314, -2314,   -27, -2314,
-     -27, -2314, -2314,   749, -2314,   749,   479,   749,  1732,   749,
-   -2314,   749,   479,  4711,   479, -2314, -2314, -2314, -2314,  1734,
-   -2314,   479, -2314, -2314,   479, -2314, -2314, -2314,  1735,   479,
-   -2314, -2314,  1736, -2314,  1316, -2314, -2314,  1293, -2314,  1321,
-    1412,  1665, -2314,  1737,  1740,  1742, -2314, -2314, -2314, -2314,
-   -2314, -2314,   479, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-    1743, -2314,  4489, -2314, -2314,  1748,   749,  1041, -2314, -2314,
-    1041,   479, -2314,   479, -2314,  1041,   479,  1750, -2314, -2314,
-    4711, -2314,  1321, -2314,    71, -2314,  1752,  1755, -2314,   479,
-    4489,  1316, -2314,  4489, -2314, -2314, -2314,   479,  1749, -2314,
-     479, -2314,   749, -2314, -2314, -2314,  1756,  1757,  1316, -2314,
-   -2314,  1316, -2314, -2314,  1762, -2314, -2314,  1763, -2314, -2314,
-   -2314, -2314, -2314, -2314,  1041, -2314,  1041, -2314, -2314, -2314,
-   -2314, -2314
+   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,   820,   820,
+     469,   820, -2314,  1129,   820, -2314,   820, -2314,  1525,  1622,
+    1623,  1625,  1538,   820,   820,  1627,  1628, -2314,  1630, -2314,
+   -2314, -2314, -2314, -2314,   469,   469,  4673, -2314, -2314,   820,
+   -2314,   820, -2314,    -3,   102,   820,  1631, -2314, -2314,   820,
+   -2314,    14, -2314,  1632,  1633, -2314,   102, -2314,   102, -2314,
+     102, -2314,   469, -2314,   102, -2314,    -3,   102, -2314,   102,
+   -2314,   469, -2314,   102, -2314,   102, -2314,   102, -2314,   469,
+   -2314,   102, -2314,   102,   469, -2314,  4673,   102,   469, -2314,
+     102, -2314,   102,   469, -2314,   102,   469, -2314, -2314,  1635,
+      14, -2314, -2314,   820, -2314, -2314, -2314, -2314,  1636, -2314,
+   -2314, -2314, -2314,   321,    57, -2314, -2314, -2314, -2314, -2314,
+   -2314,  1637, -2314, -2314,    57,  1638,  1640,  1643,    57,    57,
+     286,  1646,  1648,  1649,  1650,  1651,  1652,    57,    57,   286,
+    1654,  1655,  1657,  1658,  1659,  1660,    57,    57,   286,  1656,
+    1672,  1674,    57,   321,   321,   321,   321,   321,  1673,   321,
+     321,  1676,    57,    57,   321,   321,   321,   321,   321,  1677,
+     321,   321,  1678,    57,    57, -2314, -2314, -2314, -2314, -2314,
+    1679, -2314, -2314,  1682,    57, -2314, -2314, -2314, -2314, -2314,
+    1683, -2314, -2314,    57, -2314,    57,  1685, -2314,  1687,  1689,
+   -2314, -2314,   102,  1690,  2471,   102,   820,  4673,  1691, -2314,
+     102, -2314, -2314, -2314,   102, -2314, -2314,  4673,  1692,   820,
+     820,   820,   820,   820,   820,   820,   820,   820,   820, -2314,
+   -2314,  2471,   102,   820,  4673,  1694, -2314,  1129,  1129,  1129,
+     820,  2471,  1129,   820,  1129,  1129,  4673,  1129,   820,  1129,
+   -2314,   820,   820,   820,   820,   820,   820,  1245,   820,   820,
+     820,  1245,   820,   820,   820,   820,  1245,   820,   820,   820,
+     820,   820,   469,   820,  1327,  1245,   820,   820, -2314, -2314,
+      -3,    29,  1695,  1696, -2314, -2314, -2314, -2314, -2314,    -3,
+   -2314, -2314,  1129,   820, -2314, -2314, -2314,   937,  1697,  1698,
+   -2314,  1700,   820,  1701,   893,  1707, -2314, -2314, -2314,   102,
+   -2314, -2314, -2314, -2314,  1708, -2314, -2314, -2314,  1710, -2314,
+   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314, -2314,    -3,   102, -2314,    -3, -2314,
+   -2314,    -3, -2314,    -3,  1713, -2314,   820, -2314, -2314,   321,
+      57, -2314,   321,   321,   321,   321,   321,  1702,   321,   321,
+      57, -2314, -2314, -2314, -2314, -2314,  1716, -2314, -2314,    57,
+     321,   321,   321,   321,   321,  1718,   321,   321,    57,   321,
+   -2314, -2314, -2314, -2314, -2314,    57, -2314, -2314,  1719,   321,
+     321, -2314, -2314, -2314, -2314, -2314,    57, -2314, -2314,  1720,
+     321, -2314,    57,  1731, -2314,    57, -2314, -2314,    57, -2314,
+   -2314, -2314,  2471,   102, -2314, -2314,  1743,   469,   820, -2314,
+   -2314,   469,   820, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314,   820,   102, -2314, -2314,  1745,   469,   820,  1129,
+   -2314, -2314, -2314,   102, -2314,   820, -2314,  1129, -2314,   102,
+    4673,  1245, -2314,   820,  1749,  1749,   820,   820,  1749,  1245,
+    1749, -2314,  4673,  1245,  1749,  1749,   820,   820,  1245,   820,
+     820,   820,   820, -2314,  1129,   820,  1750, -2314, -2314,   820,
+    1749,    29,    27, -2314,  1751,    29, -2314, -2314,  1752,   820,
+   -2314,  1753, -2314,  1755,  1583,   820, -2314, -2314, -2314,  1756,
+   -2314, -2314, -2314, -2314, -2314, -2314,   820, -2314, -2314, -2314,
+   -2314, -2314, -2314, -2314,    57, -2314, -2314,   321,    57, -2314,
+   -2314, -2314, -2314, -2314, -2314,    57, -2314, -2314,   321, -2314,
+     321,    57, -2314, -2314,   321,    57, -2314, -2314,    57, -2314,
+   -2314,   102, -2314, -2314,  2471,  4673,   820,  4673,   820, -2314,
+   -2314,  2471,  4673,   820, -2314, -2314,  4673, -2314, -2314,   102,
+   -2314,  1758, -2314, -2314, -2314,  1245,   820, -2314,  1759, -2314,
+   -2314,   469,  1761, -2314, -2314,  1245,   820,  1763, -2314, -2314,
+     820,  4673, -2314, -2314, -2314, -2314, -2314, -2314,    27,  1341,
+    1078, -2314, -2314,  1764,  1766, -2314,  1613,  1768,    92, -2314,
+    1769,   321, -2314, -2314,   321, -2314, -2314,   321, -2314,   321,
+   -2314, -2314,   102, -2314,   102,   820,   102,  1770,   102, -2314,
+     102,   820,   102,   820, -2314, -2314, -2314, -2314,  1771, -2314,
+     820, -2314, -2314,   820, -2314, -2314, -2314,  1773,   820, -2314,
+   -2314, -2314,   469, -2314, -2314,  1341, -2314,  1362,  1297,  1078,
+   -2314,  1775,  1776,  1774, -2314, -2314, -2314, -2314, -2314, -2314,
+     820, -2314, -2314, -2314, -2314, -2314, -2314, -2314,  1778, -2314,
+    2471, -2314, -2314,  1779, -2314,  1245, -2314, -2314,  1245,   820,
+   -2314,   820, -2314,  1245,   820, -2314,  4673, -2314,  1362, -2314,
+      29, -2314,  1780,  1781, -2314,   820,  2471,   469, -2314,  2471,
+   -2314, -2314,   820,  1783, -2314,   820,   102, -2314, -2314, -2314,
+    1786,  1788,   469, -2314, -2314,   469, -2314, -2314,  1784, -2314,
+   -2314,  1790, -2314, -2314, -2314, -2314, -2314,  1245, -2314,  1245,
+   -2314, -2314, -2314, -2314, -2314
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-   -2314, -2314,    -9, -2314,   176,  -195, -2314, -1604,  -854,  1229,
-   -2314,   541,  -140,  1368,   -39,  1423, -1445,  1590,  -645,  1255,
-   -2314,  -798,  1066,  1571,  -164, -1107,   -79, -2314, -2314, -2314,
+   -2314, -2314,    -9, -2314,   254,  -198, -2314, -1347,  -862,  1240,
+   -2314,   644,  -318,  1381,   -39,  1421, -1460,  1626,  -651,  1299,
+   -2314,  -836,  1862,  1412,  -202, -2314, -1175, -2314, -2314,    16,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
@@ -2726,1388 +2748,1354 @@ static const yytype_int16 yypgoto[] =
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -1179,
-   -2314, -2314, -2314, -2314, -2314,  -584, -2314, -2314, -2314, -2314,
-   -2314, -2314,    99, -2314, -2314, -2314, -2314,   556,  -594,   -74,
-    -704, -2314, -2314, -2314, -2314,  -738,  -659, -2314, -2314, -2313,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
+   -2314, -2314, -2314,  -800, -2314, -2314, -2314, -2314, -2314,  -601,
+   -2314, -2314, -2314, -2314, -2314, -2314,   123, -2314, -2314, -2314,
+   -2314,   475,  -604, -1234,  -743, -2314, -2314, -2314, -2314,  -797,
+    -782, -2314, -2314, -2313, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
    -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314,
-   -2314, -2314, -2314, -2314
+   -2314, -2314, -2314, -2314, -2314, -2314, -2314, -2314
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1025
+#define YYTABLE_NINF -1037
 static const yytype_int16 yytable[] =
 {
-      97,  1326,   980,   311,   539,  1811,   971,  1813,   497,   787,
-     536,   967,   759,  1236,    79,   570,   941,   944,   262,    90,
-      91,  1737,  1506,   678,   283,   277,    90,    91,    90,    91,
-      90,    91,   305,    90,    91,   316,   760,   936,   321,    90,
-      91,   358,   327, -1011,    80,   334,    99,   235,   343,  1202,
-     681,   351,  1205,    47,   357,    90,    91,    81,   361,   946,
-      82,   330,   947,   362,    92,   559,    90,    91,    83,   102,
-    1291,    90,    91,    90,    91,    99,    84,  1040,  1289,  1308,
-    1501,    93,   285,   378,   498,   387,   388,   392,   394,    48,
-     981,    90,    91,  1465,    99,  1517,   982,  1102,  1674,   665,
-      90,    91,  1186,   236,   398,  1768,   567,    49,    90,    91,
-    1304,  1535,   499,  1485,   336,  1495,  2473,   571,    90,    91,
-    1182,   102,  1316,   363,   237,   201,   526,   346,   948,   276,
-      94,  1094,  1095,  1096,   288,    50,   747,   444,   500,   410,
-     564,   202,  1051,  1518,   445,  1467,   949,  1183,    85,    51,
-    1052,   104,    52,   233,  1430,   163,   576,  1292,   439,  2493,
-    1499,   337,  1305,   461,    53,  1769,   347,   516,    46,   286,
-     238,   973,   577,    99,   266,   252,  1507,  1172,   364,   537,
-     104,   243,   289,   748,  1512,  1261,    86,   150,   162,  1187,
-     459,   572,   508,  1508,   220,  1519,    90,    91,   241,   104,
-     432,  1103,    90,    91,   269,   433,   831,   832,   950,  1317,
-      95,  1663,  1502,   281,   290,    87,  1161,   937,   566,   110,
-     313,   365,   527,  1665,  1509,   247,  1041,   248,   278,   634,
-     584,   585,   107,   369,   345,   573,   434,   108,   109,  1548,
-    1549,   618,  1310,   560,   565,   339,   578,  1668,   833,   620,
-     623,   279,   626,   630,  1798,   632,   737,   574,  1290,   435,
-    1503,   107,   359,   972,   666,   642,   108,   109,   761,   740,
-     655,   110,   651,   653,  2437,   983,  1510,  1327,   104,  1490,
-     107,  1550,   679,   507,  1511,   108,   109,   331,   669,   670,
-     938,   671,    96,   788,   951,   674,   675,  1738,  1302,   282,
-      88,  1309,   436,   509, -1011,  1293,   687,   689,  1536,   682,
-      54,  1486,   690,  1496,   112,  1320,  1262,   693,   695,   501,
-     239,   304,  1300,  1466,   656,   696,   568,   411,   412,   413,
-     414,   415,   416,   417,   418,   419,   420,   244,   249,   460,
-     704,   705,   706,   112,   707,   437,   438,   340,   710,   711,
-     712,   974,   713,   977,   920,  1513,  1358,  1318,  1500,   107,
-     291,  1431,   112,   142,   108,   109,   240,   143,   144,   722,
-     517,   834,   835,   723,   315,  1468,  2438,  1263,   728,   729,
-     730,   731,   732,   733,   326,   734,  1645,  1372,   738,   739,
-     341,   342,   142,   518,   921,   920,   143,   144,  1514,   510,
-    1717,   741,  1149,  1144,  1551,  1552,  1722,  1393,   245,  1664,
-    1491,   142,  1660,   582,   583,   143,   144,  1264,   643,  2439,
-    2440,  1666,  1311,   999,   975,    69,  1004,    69,  1630,   920,
-     913,  1633,  1686,   836,   250,   921,   625,   370,  1515,  1568,
-    1569,   112,   837,   838,  1167,  1669,   931,   267,  1457,   318,
-     769,   770,   771,   773,   479,  1463,   914,   268,   799,   800,
-    1377,  1145,    90,    91,   657,  1198,  1553,   480,   781,   921,
-     664,  1492,  1378,   839,  1469,  1554,  1555,   319,  1014,  1241,
-     323,  1570,    90,    91,   943,  1018,   324,  1146,   481,  1000,
-     142,   995,  1005,  1522,   143,   144,   798,   858,   821,    90,
-      91,   325,  1022,  1242,    90,    91,  1556,   482,   841,   801,
-      63,  1493,   932,   329,   922,   802,   644,   842,   843,  1168,
-     483,   102,   372,   484,  1150,   817,   923,   924,   367,  1394,
-     503,   373,  1015,   855,   940,  1243,    90,    91,    70,  1019,
-      70,  1244,  1516,    64,   374,  1245,   300,   102,   485,   486,
-      90,    91,  1267,  1525,   968,   922,  1023,   830,  1147,   844,
-      71,  1246,    71,   859,    72,   375,  1810,   923,   924,  1001,
-    1151,   333,  1006,   803,  1268,   866,   102,  1269,   915,   376,
-      90,    91,  1247,   697,   377,   504,   804,   320,   395,   922,
-     939,  1152,   933,   952,   805,  1080,   421,  1199,  1248,   806,
-     487,   923,   924,  1148,  1571,  1572,  1270,   488,    73,    65,
-      73,   987,   988,   989,   990,   925,   926,   991,   529,   993,
-     969,   994,   422,   996,   916,  1523,  1249,   253,  1002,  1034,
-    1035,  1007,  1271,   635,  1272,  2274,   442,  1033,    90,    91,
-    1098,   698,    74,   353,    74,   917,   495,   807,  1037,  1038,
-      75,    76,    75,    76,   530,   301,   925,   926,  1250,   489,
-     490,  1026,  1027,   808,  1030,  1031,  1573,   809,   636,  1251,
-     810,   110,  1016,  1524,   271,  1574,  1575,  1043,  1044,  1020,
-    1252,   493,   845,   846,  1048,  1049,   744,   751,   221,    66,
-     925,   926,   811,   496,  1155,   512,  1024,   110,   812,  1220,
-     970,  1582,  1054,  1055,  1056,  1253,  1576,   699,  1221,  1222,
-    1583,  1584,   222,   637,   535,   813,   349,  1254,  1646,  1255,
-    1256,  1075,  1076,  1077,   544,  1079,   110,  1081,  1593,  1082,
-     491,    67,   513,   354,   302,   515,   826,  1594,  1595,  1273,
-    1162,  2408,   531,   229,   847,   350,  1085,   686,  1087,   542,
-    1223,  2417,  1585,   848,   849,  1881,   254,   548,   850,  1257,
-     532,   255,   562,   256,  1092,   545,   745,    90,  1111,   272,
-     563,   814,  1099,  1472,  1473,  1894,  1101,   752,  1649,  1596,
-     955,   223,   700,   580,   851,   978,   581,   701,  1112,  1114,
-    1931,  1980,   616,  1934,   224,  1154,  1156,  1159,    90,    91,
-     355,  1942,  1163,  1647,  1945,   520,  1990,  1169,  1170,   638,
-    1814,   617,  1953,  1328,  1211,  1956,  1361,  1362,  1329,   619,
-     549,  1178,  1963,    90,    91,  1274,    90,    91,   521,   659,
-     230,   633,  2007,   273,  1330,  1331,   640,  1332,  1333,   641,
-    1474,   646,   274,   648,   753,   225,  1648,  1275,  1334,  1423,
-    1276,   654,  1383,  1277,   663,   550,  2486,   389,  1235,  1335,
-    1336,  2489,   668,  1650,   522,   546,   231,  1337,  1679,  1680,
-    1338,    90,    91,  1224,  1225,  1586,  1587,  2267,  1294,  1278,
-     672,    56,  1301,   673,   226,  1158,    57,  1339,    90,    91,
-     676,   551,  1340,  1341,   227,  1342,    99,   694,   684,  1319,
-    1458,  1459,  1597,  1598,   660,  1279,  1651,  1280,  1325,   691,
-    2518,   692,  2519,    90,    91,  1639,   703,    58,    90,    91,
-     708,   151,  1353,   390,  1354,   725,   726,  1047,  1355,  1356,
-    1357,   709,   152,  1396,  1397,  1226,   714,  1588,  1363,   716,
-      59,  1364,   661,  1367,  1227,  1228,  1589,  1590,   523,  1229,
-     719,  1591,   720,  1343,   379,   294,   204,  1460,  1604,  1370,
-     381,  1371,   153,   742,  1599,  1374,  1375,  1605,  1606,   750,
-     154,   743,   755,  1600,  1601,  1230,   757,  1592,  1602,  1381,
-    1382,   763,   767,    60,  1384,  1385,    90,    91,   765,   783,
-    1386,   295,  1387,  1410,   792,  1389,   786,  1390,   790,   794,
-    1344,   104,   795,   391,  1603,  1345,  1346,   796,   205,  1607,
-     797,   818,  1281,   819,   825,   206,   827,   828,  1407,  1347,
-     621,  1409,   829,   155,   840,   207,   208,    61,    90,    91,
-     863,   852,   209,  1615,  1616,   861,  1415,   864,  1418,   865,
-    1420,  1421,  1422,  1424,    90,    91,  1427,  1428,  1233,  1234,
-     210,   919,   928,  1348,  1349,   930,  1898,  1899,    90,    91,
-    1642,   935,   649,   986,  1282,  1444,   984,   211,    90,    91,
-    1683,   985,  1449,   156,  1350,  1617,  1450,  1451,  1452,   296,
-     997,   297,   107,   212,  1009,  1013,   622,   108,   109,  1461,
-    1322,   213,  1464,  1010,   157,  1011,   158,   298,  1900,  1012,
-    1476,    90,    91,  1478,  2057,  2134,  1028,   379,   380,   381,
-     214,    90,    91,  1644,  2143,  1233,  1234,   159,  1351,  1036,
-      90,    91,  1659,  2152,  1233,  1234,  2344,  1106,   650,  2347,
-    1039,  2349,  1608,  1609,  1045,  2353,  2354,  1907,  1908,  1046,
-    1050,  1053,   215,  1369,  1058,  1527,  1071,  1528,  1072,   423,
-    1529,  1530,  2369,  1376,  1531,  1083,  1084,  1091,  1107,  1697,
-    1533,  1109,  1534,  1110,   112,  1160,  1165,   424,  1171,  1540,
-    2088,    90,    91,  1685,  1175,  1233,  1234,  1176,  2237,  1909,
-     160,  1179,  2241,   425,  1180,  1181,   216,  2246,  1189,  1190,
-    1194,  2099,  1191,  1192,  1610,   426,   217,  1195,  1618,  1619,
-    1196,  1197,  1203,  1611,  1612,  1204,  1237,  1206,  1613,   427,
-    1207,  1213,   428,   142,  1215,  1216,  1218,   143,   144,  1231,
-    1232,  1901,  1902,  1238,   429,   218,  1756,  1239,  1640,  1641,
-    1643,  1235,  1240,  1259,  1614,  1771,  1772,  1773,  1774,  1775,
-    1776,  1777,  1778,  1260,  1266,  1265,  1284,  1285,  1286,  1283,
-    1653,  1287,  1296,  1295,  1656,  1288,  1303,  1235,  1306,  1307,
-    1620,  1312,  1725,  1916,  1917,   430,  1313,  1314,  1820,  1621,
-    1622,  1315,  1321,  1323,  1324,  1682,  1684,  1235,  1360,  1373,
-    1822,  1379,  1380,  1903,  1388,  1692,  1391,  1694,  1392,  1433,
-    1398,  1399,  1904,  1905,  1400,  1414,  1401,  1402,  1403,  1406,
-    1623,  1404,  1910,  1911,  1405,  1918,  1408,  1425,  1412,  1413,
-    1711,  1426,  1419,  1442,  1434,  1713,  1435,  1436,  1443,  1715,
-    1437,  1718,  1719,  1906,  1721,  1723,  1724,  1438,  1726,  1439,
-    1445,  1729,  1730,  1731,  1732,  1733,  1734,  1735,  1736,  1739,
-    1741,  1742,  1446,  1441,  1744,  1745,  1746,  1747,  1447,   399,
-    1453,  1454,  1462,  1477,  1753,  1754,  1471,  -394,  1479,  1494,
-    1757,  1758,  1759,  1504,  1912,  1761,  1762,  1482,  1520,  1538,
-    1505,  1483,  1577,  1913,  1914,  2340,  1484,  1764,  1765,  1489,
-    1766,  1767,  1521,  2348,  1497,  1498,  1526,  2352,  1532,  1539,
-    1544,  1563,  2357,  1566,  1624,   263,  1579,  1581,  1779,  1625,
-    1780,  1626,  1627,  1631,  1915,  1781,  1784,  1632,  1786,  1787,
-    1788,  2260,  1789,  1790,  1634,  1792,   400,  1635,  1795,  1796,
-    2264,  1636,  1671,   902,  1652,  1655,  1661,  1662,  1919,  1920,
-    1672,  1673,   401,   402,   403,  1808,   903,  1654,  1675,  1667,
-     404,  1658,  1812,  1670,  1676,   904,  1677,  1678,  1681,   368,
-     264,  1817,  1818,   405,  1693,   905,  1714,  1716,  1720,  1727,
-     406,  1821,  1750,  1728,  2278,  1687,  1743,  1823,  2281,  1763,
-    1791,   407,  1793,  2282,   396,  2283,  1794,  1797,  1701,  1799,
-    1800,   906,  1801,  1802,  1803,  1705,  1706,  1804,  1819,  1824,
-    1921,  1857,  1863,  1872,  1875,  1856,  1712,  1874,  1878,  1922,
-    1923,  1879,   907,  1880,  1882,  1883,  1925,  1884,  1887,  2073,
-    1889,  1890,  1891,  1895,  1896,  1936,  1897,  1926,  1927,  1928,
-    1932,  1871,  1933,  1947,  1935,  1873,  1937,  1938,  1939,   397,
-    1924,  1876,  1943,  1944,  2255,  1946,  1948,  1949,  1950,   457,
-    1954,   466,   469,   472,   476,  1955,   908,  1957,  1958,  2010,
-    1959,  1960,  1964,  1965, -1024,  1966,  2015,  2016,  1968,  1969,
-    1971,  1972,  2000,  2020,  1979,  1981,  1985,  1989,  2023,   541,
-    2025,  2001,  2002,   408,  2006,  2049,  2018,  2054,   909,  2055,
-    2058,  2064,  1063,  2074,  2075,   553,   557,  2076,  2077,  2080,
-    2379,  2081,  2082,  2435,  2091,   462,  2111,   470,   473,   477,
-     910,  2115,  2121,  2485,  2124,  2127,   505,  2129,  2130,  2131,
-    2135,  2136,   724,  2137,  2138,  2062,  2139,  1805,  2140,   534,
-    2144,  2145,  1440,  2146,  2147,  2148,  2149,  2153,  2154,   627,
-    2155,  1975,  1976,  2162,  1978,  2165,  1235,   911,  2173,   912,
-    2176,  2179,  2180,  2182,  2185,  2070,   647,  2186,  2187,  2189,
-    2195,  1235,  1991,  1992,  1993,  1994,  1995,  1996,  1997,  1998,
-    1999,  2199,  2215,  2224,  2262,  2263,  2427,  2269,  2270,  2275,
-    2271,  2273,  2293,  2003,  2277,  2005,  2280,  1235,  2284,  2297,
-    2304,  2310,  2012,  2314,   628,  2013,   586,   587,  2317,  2323,
-    2330,  2336,  2342,  2475,  2361,  2366,  2373,  2375,  2377,  2378,
-    2403,  2405,  2411,  2414,  2419,  2436,  2026,  2027,  2028,  2029,
-    2030,  2031,  2032,  2033,  2034,  2035,  2423,  2036,  2037,  2038,
-    2039,  2040,  2041,  2042,  2043,  2044,  2045,  2046,  2047,  2433,
-    2050,  2434,  2051,  2052,  2053,  2443,  2452,   588,  2460,  2465,
-    2474,  2467,  2476,   589,   721,  2477,  2478,  2480,  2063,   590,
-     956,   591,  2483,  2505,   727,  2491,   592,  2495,   957,   593,
-    2496,  2510,  2511,   735,   958,   594,  2514,  2516,  2471,     0,
-       0,  2066,  2067,     0,  2069,   595,     0,  2071,  2430,  2072,
-     959,   596,     0,     0,     0,     0,  2078,  2079,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   597,  2086,     0,  2087,   960,     0,     0,  2090,     0,
-       0,     0,  2092,   961,     0,     0,     0,     0,   736,     0,
-       0,     0,   598,     0,     0,     0,     0,     0,     0,   772,
-    1984,     0,   774,   775,     0,     0,     0,  2430,   599,     0,
-       0,     0,     0,   779,     0,     0,   600,   601,   782,   962,
-       0,     0,     0,   631,     0,     0,   963,   791,     0,     0,
-       0,     0,     0,  2008,     0,     0,   602,  2123,     0,  2216,
-    2217,  2218,     0,     0,     0,  2222,     0,     0,     0,  2225,
-    2226,     0,  2228,     0,  2230,   603,     0,     0,     0,     0,
-       0,     0,   964,     0,     0,   604,     0,     0,   605,     0,
-       0,   685,     0,   965,     0,     0,   785,     0,     0,   606,
-       0,     0,  1201,     0,   607,     0,     0,   966,     0,     0,
-     608,     0,     0,   823,   824,     0,   609,     0,  2265,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   816,     0,
-       0,     0,     0,   610,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   611,   612,   715,   613,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,  2193,
-       0,   954,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  2200,  2201,  2202,  2203,  2204,  2205,  2206,  2207,
-    2208,  2209,     0,     0,     0,     0,  2213,     0,     0,   614,
-       0,     0,     0,  2219,     0,     0,     0,  2223,     0,     0,
-       0,     0,     0,     0,  2229,     0,     0,  2231,  2232,  2233,
-    2234,  2235,  2236,  1235,  2238,  2239,  2240,  1235,  2242,  2243,
-    2244,  2245,  1235,  2247,  2248,  2249,  2250,  2251,  2252,     0,
-    2254,     0,  1235,  2258,  2259,     0,     0,   768,     0,     0,
-       0,     0,     0,     0,     0,     0,   776,     0,     0,   777,
-    2266,     0,   778,     0,  2268,     0,   780,     0,     0,  2272,
-       0,     0,     0,     0,     0,     0,  2333,     0,     0,     0,
-       0,     0,  1057,     0,     0,  2337,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1078,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  2364,  2285,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   822,     0,     0,     0,     0,     0,  1088,  1089,  1090,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  2350,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  2362,     0,  1086,     0,
-       0,     0,  2367,     0,     0,     0,  2325,     0,     0,     0,
-    2327,     0,     0,  1174,     0,     0,     0,     0,     0,     0,
-    2328,     0,     0,     0,     0,     0,  2332,     0,     0,     0,
-       0,     0,     0,  2335,     0,     0,     0,   992,     0,     0,
-    1235,     0,  2341,     0,   998,  2345,  2346,     0,  1235,     0,
-       0,     0,  1235,  2261,     0,  2355,  2356,  1235,  2358,  2359,
-    2360,     0,  2363,     0,     0,  2365,     0,     0,     0,  2368,
-       0,     0,     0,     0,     0,     0,     0,     0,  1298,  2376,
-    1557,     0,     0,     0,     0,  2380,     0,    90,    91,  2406,
-    2407,     0,  1567,  2410,     0,  2412,  2381,     0,     0,  2415,
-    2416,     0,     0,   100,  2420,  2421,     0,     0,     0,     0,
-    1628,  1629,     0,     0,  2425,  2426,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,  1359,
-       0,  1073,     0,  1299,     0,   102,  2396,  1074,  2398,  1365,
-       0,     0,  1368,  2402,     0,     0,     0,     0,     0,     0,
-       0,  2458,     0,     0,  2459,     0,  1235,  2409,     0,  2462,
-       0,     0,     0,  2464,     0,     0,  1235,  2418,  2468,  2469,
-       0,  2422,     0,     0,     0,     0,     0,     0,     0,   103,
-       0,     0,     0,     0,  1093,     0,     0,     0,     0,  1097,
-       0,  2441,  1100,     0,  1366,     0,     0,     0,     0,     0,
-       0,  1108,     0,     0,     0,     0,     0,  2450,     0,     0,
-       0,     0,     0,  2455,     0,  2457,     0,     0,     0,     0,
-       0,     0,  2461,     0,     0,  2463,  1185,     0,     0,     0,
-    2466,   105,  2503,  1416,     0,  2506,     0,  2508,     0,     0,
+      97,   542,  1829,   314,  1831,   950,   953,   976,  1477,    99,
+     237,    99,  1479,   794,   500,  1251,   989,   685,   264,  1211,
+      90,    91,  1214,  1339,   285,   980,   333, -1023,    90,    91,
+    1755,  1276,   308,    99,   361,   319,    99,   268,   324,  1708,
+      90,    91,   330,   572,  1545,   337,   245,  1647,   346,    90,
+      91,   354,    90,    91,   360,  1501,  1709,  1481,   364,  1710,
+     688,    90,    91,   365,   539,   511,   102,   238,    90,    91,
+    1711,    90,    91,   641,  1207,  1321,   529,    90,    91,  1523,
+    1306,   744,  1511,   381,   564,   390,   391,   395,   397,   239,
+    1049,   940,   501,  1712,   747,    90,    91,   766,   291,  1329,
+     751,    90,    91,  1111,   401,   102,   990,    90,    91,   642,
+    1713,  1786,   991,  1176,   649,  1744,   104,  1405,   104,   866,
+     502,   672,   767,  1317,  2479,    79,  1484,  1485,   321,    90,
+      91,  1524,  1103,  1104,  1105,   240,   945,  1043,  1044,   413,
+     104,  1442,   235,   104,  1492,   201,   503,   292,    90,    91,
+     102,  1493,  1494,   278,   643,   349,    80,    46,   442,   941,
+    1310,   202,   279,   464,  1277,  2497,  1311,    90,    91,  1307,
+      81,  1787,   339,    82,   982,   530,  1318,   512,  1181,   293,
+     752,    83,    90,    91,  1515,   867,   806,   807,  1330,    84,
+    1177,   519,  1525,   254,   350,  1486,   326,   107,   955,   107,
+     323,   956,   108,   109,   108,   109,  1495,   246,  1208,   322,
+    1112,   163,  1678,  1170,  1680,   650,   342,   110,   336,   571,
+     462,   107,   340,  1683,   107,   372,   108,   109,  1278,   108,
+     109,   640,   590,   591,   283,   540,  1506,   316,   808,   942,
+     693,  1406,  1050,   624,   809,  1478,  1546,    90,    91,  1480,
+    1304,   626,   629,   644,   632,   636,   110,   638,  1502,   334,
+     362,    85,   839,   840,   565,   150,   162,   648,   573,   957,
+    1279,  2445,   221,  1323,   657,   659,   243,   986,   513,   247,
+    1648,  1736,   271,   686,   112,  1512,   112,   958,   673,   981,
+     241,   676,   677,   307,   678, -1023,   992,  1315,   681,   682,
+      86,   110,  1322,   810,   795,   841,  1340,   510,   112,   694,
+     696,   112,   348,  1756,  1333,   697,   811,   269,   946,  1004,
+     700,   702,  1308,   343,   812,   284,   689,   270,   703,   813,
+     294,    87,   504,   142,   318,   142,   242,   143,   144,   143,
+     144,  1331,    63,   711,   712,   713,  1714,   714,  1370,   959,
+     329,   717,   718,   719,  1443,   720,   983,   142,   435,   768,
+     142,   143,   144,   436,   143,   144,   344,   345,   249,  1507,
+     250,   280,   729,   287,   463,    64,   730,   814,  2446,  1384,
+     303,   735,   736,   737,   738,   739,   740,  1516,   741,   327,
+     929,   745,   746,  1660,   281,  1008,   947,   815,   437,  1640,
+     520,   816,  1643,   817,   748,   414,   415,   416,   417,   418,
+     419,   420,   421,   422,   423,  1679,  1256,  1681,    88,  1675,
+     438,  2447,  2448,   521,  1089,   818,  1684,    90,    91,   842,
+     843,   930,   819,  1508,   984,   373,  1305,    90,    91,  1701,
+     960,  1257,   922,    65,  1195,  1661,  1517,   553,    47,  1013,
+     820,  1469,   328,   776,   777,   778,   780,  1741,  1475,  1324,
+     661,    92,   288,  1009,  1532,   439,  1389,  1023,   923,  1107,
+    1191,   788,   569,   575,  1258,  1509,   482,   929,  1390,    93,
+    1259,   332,   251,   370,  1260,    48,   102,  1027,    90,    91,
+     483,   304,  1689,   588,   589,   844,   375,  1192,  1031,   805,
+    1261,   828,   402,    49,   845,   846,   821,   977,   440,   441,
+     376,   554,   484,   754,    99,   662,   631,  1014,   930,  1521,
+    1153,  1262,  1024,    66,  1158,  1522,    90,    91,   824,    94,
+    1662,   485,    50,   952,   377,  1196,   847,  1263,   863,   151,
+     222,  1526,  1028,  1010,   486,   378,    51,   487,   555,    52,
+     152,   671,  1535,  1032,   931,   289,   506,   379,    90,    91,
+     627,    53,   838,   755,   223,  1264,   932,   933,    67,   380,
+     305,   403,   488,   489,   949,   978,  1663,   576,   570,  1154,
+    1518,   875,   153,   252,   849,   398,   556,   404,   405,   406,
+     154,   581,   924,   850,   851,   407,   948,  1015,  1533,   961,
+    1265,    90,    91,   102,  1229,  1155,  1011,   582,   408,    95,
+     701,  1266,   507,  1230,  1231,   409,   424,   996,   997,   998,
+     999,   104,  1267,  1000,   490,  1002,   410,  1003,   628,  1005,
+    1592,   491,  1519,   224,  2285,   929,   852,   110,   925,  1593,
+    1594,   931,   425,   155,  1042,  1816,   225,   523,  1159,  1268,
+    1534,   577,  1527,   932,   933,   979,  1232,   934,   935,   663,
+    1016,  1269,   926,  1270,  1271,  1060,  1025,   230,  1035,  1036,
+     524,  1039,  1040,  1061,   356,   704,   930,  1558,  1559,  1156,
+    1164,   583,  1595,  1395,  1052,  1053,  1029,   492,   493,   273,
+    1289,  1057,  1058,   156,  1160,   445,    96,  1033,   578,   665,
+     226,   297,   107,  1272,  1528,   496,   525,   108,   109,  1063,
+    1064,  1065,    54,  1290,   499,   157,  1291,   158,  1161,  1292,
+    1560,   579,    69,  1578,  1579,   498,  1157,  1898,  1084,  1085,
+    1086,   515,  1088,   411,  1090,   705,  1091,   298,   758,  1603,
+     159,   227,    90,    91,   934,   935,  1293,  1911,  1604,  1605,
+    1171,   228,   538,  1094,   110,  1096,   231,  1529,  1614,   494,
+     853,   854,  1948,   516,   357,  1951,  1580,  1615,  1616,   545,
+     366,  1101,  1294,  1959,  1295,   447,  1962,   666,   518,  1108,
+    1233,  1234,   448,  1110,  1970,   274,   547,  1973,  1472,   112,
+     567,  1606,   232,   526,  1980,  1121,  1123,   532,  1998,   931,
+     568,   706,  1163,  1165,  1168,   160,  1596,  1597,   585,  1172,
+    1617,   932,   933,  2008,  1178,  1179,  1832,   667,   586,   834,
+      90,    91,  1220,    90,    91,   367,   855,  1664,   759,  1187,
+     299,   587,   300,   533,   358,   856,   857,    70,   142,  2025,
+     858,   622,   143,   144,  1561,  1562,  1235,   625,   301,   233,
+    1046,  1047,   275,   623,   655,  1236,  1237,  1625,  1626,    71,
+    1238,   276,   639,    72,   964,    56,   646,   859,  1250,   987,
+      57,   368,  1598,  1282,   647,  1915,  1916,    90,  1120,   707,
+     352,  1599,  1600,  1296,   708,   549,  1601,  1239,  1309,   652,
+    1581,  1582,    90,    91,    90,    91,  1283,   660,   760,  1284,
+    1627,  1056,   934,   935,   654,    58,  1470,  1471,  1332,   353,
+    1563,    73,  1665,  1602,   669,  1607,  1608,  1338,  1917,  1564,
+    1565,    69,   656,   670,  1924,  1925,   534,    59,   550,  1285,
+     255,  1365,   675,  1366,  1618,  1619,  1297,  1367,  1368,  1369,
+      90,    91,    90,    91,   535,    74,  1435,  1375,    90,    91,
+    1376,  1566,  1379,    75,    76,  1286,  1583,  1287,  1666,   679,
+    1933,  1934,  1167,  1373,  1374,  1584,  1585,  1926,  1382,   680,
+    1383,   683,    60,   691,  1386,  1387,   392,  1242,    90,    91,
+    1659,  1609,  1248,  1249,  1243,  1244,  1694,  1695,  1393,  1394,
+    1610,  1611,  2278,  1396,  1397,  1612,  1719,  1586,   698,  1398,
+    1620,  1399,  1422,  1935,  1401,   699,  1402,   710,  2417,  1621,
+    1622,    90,    91,  1654,  1623,   715,    61,  2360,  2426,    90,
+      91,  1657,  1613,   716,  1628,  1629,   721,  1419,   551,   723,
+    1421,   732,   733,  2375,   726,  1245,    70,  1408,  1409,  1246,
+     727,  1624,  1918,  1919,   393,  1427,   382,  1430,   749,  1432,
+    1433,  1434,  1436,   384,   750,  1439,  1440,   757,    71,   762,
+    1774,   764,  1828,   770,   256,   772,  1288,   774,   790,   257,
+    2354,   258,   793,  2357,  1456,  2359,    90,    91,  1698,  2363,
+    2364,  1461,   911,   799,  2147,  1462,  1463,  1464,   797,   801,
+    1630,  1927,  1928,  2156,   802,  2377,   912,   803,  1473,  1631,
+    1632,  1476,  2165,   804,   825,   913,   826,   830,  1920,  1488,
+      73,   833,  1490,   835,   836,   914,  2071,  1921,  1922,  2415,
+    2416,  2491,   837,  2419,   394,  2421,  2494,  1936,  1937,  2424,
+    2425,  1633,    90,    91,  2429,  2430,   848,   860,   382,   383,
+     384,   915,  2433,  2434,    74,   869,    90,    91,  1674,  1923,
+    1248,  1249,    75,    76,  1537,   871,  1538,  1929,   872,  1539,
+    1540,   873,   916,  1541,   874,   965,  1930,  1931,   928,  1543,
+    2521,  1544,  2522,   966,   939,   937,   944,  1335,  1550,   967,
+    2466,   993,  2102,  2467,   994,  2249,   995,  1006,  2470,  2253,
+     426,  1018,  2472,  1938,  2258,   968,  1019,  2475,  1932,  1020,
+    1021,  1022,  1939,  1940,  1037,  2115,   917,  1045,   427,  1789,
+    1790,  1791,  1792,  1793,  1794,  1795,  1796,    90,    91,  1700,
+     969,  1248,  1249,  1048,  1054,   428,  1055,  1059,   970,  1062,
+    1381,  1067,  1169,  1080,  1941,  1081,  1100,   429,  1092,  1093,
+    1388,   918,  1115,  1655,  1656,  1658,  1250,   204,    90,    91,
+    1116,   430,  1248,  1249,   431,  1118,  1119,  2507,  1174,  1180,
+    2510,  1184,  1198,   919,   971,  1668,   432,  1185,   205,  1671,
+    1188,   972,  1250,  1189,  1190,  2518,  1199,  1838,  2520,  1200,
+    1201,  1203,  1204,  1205,  1206,  1212,  1213,  2523,  2524,  1840,
+    1697,  1699,  1250,  1215,  1216,  1222,  1224,  1225,  1227,  1240,
+    1707,   206,   920,  1717,   921,  1241,  1252,   433,   207,  1253,
+     973,  1254,  1255,  1275,  1274,  1280,  1299,  1281,   208,   209,
+    1298,   974,  1300,  1730,  1301,   210,  1302,  1303,  1732,  1312,
+    1319,  1316,  1734,  1320,  1737,  1738,   975,  1740,  1742,  1743,
+    1325,  1745,  1326,   211,  1748,  1749,  1750,  1751,  1752,  1753,
+    1754,  1757,  1759,  1760,  1327,  1336,  1762,  1763,  1764,  1765,
+     212,  1328,  1337,  1404,  1334,  1372,  1771,  1772,  1385,  1391,
+    1392,  1400,  1775,  1776,  1777,  1403,   213,  1779,  1780,  2350,
+    1410,  1411,  1412,  1415,   214,  1413,  2028,  2358,  1414,  1782,
+    1783,  2362,  1784,  1785,  1416,  1417,  2367,  1418,  1420,  1426,
+    2032,  2033,  1424,   215,  2035,  1425,  1438,  1431,   265,  2038,
+    1797,  2040,  1798,  1437,  1454,  1457,  1445,  1799,  1802,  2271,
+    1804,  1805,  1806,  1446,  1807,  1808,  1447,  1810,  2275,  1448,
+    1813,  1814,  1449,  1455,  1458,  1450,  1459,   216,  1465,  1451,
+    1453,  1466,  1474,  -408,  1483,  1489,  1498,  1826,   266,  1491,
+    1499,  1510,  1530,  1548,  1830,  2076,  1531,  1520,  1536,  1500,
+    1505,  1513,   371,  1835,  1836,  1514,  1549,  1542,  1554,  1573,
+    1576,  1634,  1587,  1839,  2290,  1589,  1591,  2292,  1635,  1841,
+    2293,  1636,  2294,   217,  1637,  2084,  1641,   399,  1642,  1811,
+    1644,  1645,  1646,  1685,   218,  1667,  1670,  1676,  1686,  1687,
+    1677,  1651,  1688,  1690,  1691,  1692,  1696,  1716,  1682,  1733,
+    1693,  1876,  1768,  1735,  1781,  1739,  1746,  1747,  1761,  1809,
+    1815,  1812,  1817,   219,  1818,  1942,  1819,   400,  1820,  1821,
+    1669,  1888,  1822,  1837,  1673,  1890,  1842,  2087,  1843,  1844,
+    1889,  1893,  1891,  1892,  2091,  1895,  1896,  1897,  1899,  1900,
+    1452,  1901,   460,  1904,   469,   472,   475,   479,  1702,  1906,
+    1907,  1908,  1912,  1913,  1953,  1914,  1943,  1944,  1945,  1720,
+    1949,  1950,  1964,  1952,  1954,  1955,  1724,  1725,  1956,  1960,
+    1961,  1971,   544,  1963,  1965,  1966,  1967,  1731,  1972,  2387,
+    1974,  1975,  1976,   465,  1977,   473,   476,   480,  1981,   558,
+     562,  1982,  1985,  2490,   508,  1983,  1986,  1988,  1989, -1036,
+    1997,  1999,  2003,  2007,  2018,  2266,  2019,   537,  2020,  2443,
+    2024,  2063,  2068,  2069,  2072,  2078,   731,  2088,  2089,  2090,
+    1072,  2094,  2480,  2095,  2096,  2435,  2105,  2108,  2109,  2134,
+    2137,  2140,  2481,  2142,   633,  2143,  1993,  1994,  2144,  1996,
+    2148,  1250,  2149,  2477,  2150,  2151,  2152,  2153,  2157,  2158,
+    2166,   653,  2159,  2160,  2161,  2162,  1250,  2009,  2010,  2011,
+    2012,  2013,  2014,  2015,  2016,  2017,  2167,  2175,   310,  2168,
+    2178,  2186,  2189,  2192,   634,   311,  2193,  2195,  2021,  2198,
+    2023,  2199,  1250,  2200,  2202,  2208,  2212,  2030,  2228,  2273,
+    2274,     0,  2280,  2281,  2282,  2284,  2304,  1823,  2031,  2229,
+    2230,  2231,  2286,  2288,  2235,  2289,  2237,  2238,  2295,  2240,
+    2308,  2242,  2315,  2321,  2325,  2041,  2042,  2043,  2044,  2045,
+    2046,  2047,  2048,  2049,  2050,  2328,  2051,  2052,  2053,  2054,
+    2055,  2056,  2057,  2058,  2059,  2060,  2061,  2334,  2064,  2341,
+    2065,  2066,  2067,  2352,     0,  2374,  2381,  2383,  2385,  2386,
+     728,  2389,  2414,  2420,  2276,  2423,  2077,  2428,     0,  2441,
+     734,  2442,  2444,  2451,  2460,  2468,  2438,  2473,  2484,   742,
+    2482,  2483,  2486,  2489,     0,  2499,  2500,  2509,  2517,  2080,
+    2081,  2513,  2083,  2514,  2519,  2085,     0,  2086,     0,     0,
+       0,     0,     0,     0,  2092,  2093,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   743,
+    2100,     0,  2101,     0,     0,     0,  2104,     0,     0,     0,
+    2106,     0,     0,     0,     0,  2438,     0,     0,     0,  1041,
+       0,     0,     0,     0,     0,   779,     0,     0,   781,   782,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   786,
+       0,     0,     0,     0,   789,     0,     0,     0,     0,     0,
+       0,     0,     0,   798,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  2136,     0,     0,     0,   312,     0,
+     313,   637,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   792,     0,     0,
+       0,  2344,     0,     0,     0,     0,     0,     0,     0,  2347,
+       0,     0,     0,  2002,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   823,
+     692,   831,   832,     0,     0,     0,  2372,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  2026,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,     0,     0,  2206,     0,     0,
+     963,     0,     0,     0,     0,     0,     0,   722,     0,     0,
+    2213,  2214,  2215,  2216,  2217,  2218,  2219,  2220,  2221,  2222,
+       0,     0,     0,     0,  2226,     0,     0,     0,     0,     0,
+       0,  2232,     0,     0,  2236,     0,     0,     0,     0,  2241,
+       0,     0,  2243,  2244,  2245,  2246,  2247,  2248,  1250,  2250,
+    2251,  2252,  1250,  2254,  2255,  2256,  2257,  1250,  2259,  2260,
+    2261,  2262,  2263,     0,  2265,     0,  1250,  2269,  2270,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  2515,     0,  2479,     0,  2517,  2370,     0,     0,     0,
-    2374,     0,     0,     0,  2520,  2521,     0,  1448,  1235,     0,
-       0,  1235,  2487,     0,  2488,     0,  1235,  2490,     0,     0,
-    1456,     0,     0,     0,     0,   110,     0,     0,  1417,   111,
-    2497,     0,     0,     0,     0,     0,     0,     0,  2504,     0,
-       0,  2507,     0,  1480,     0,     0,     0,     0,  1487,     0,
+       0,     0,     0,     0,  2277,     0,     0,     0,  2279,     0,
+       0,     0,     0,  2283,     0,     0,   775,     0,     0,     0,
+       0,     0,     0,     0,     0,   783,     0,     0,   784,     0,
+       0,   785,  1066,     0,     0,   787,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  1235,     0,  1235,     0,     0,
+       0,  1087,     0,     0,     0,     0,     0,  2296,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,     0,  1097,  1098,  1099,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1470,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  1481,     0,
-       0,     0,     0,  1488,     0,     0,     0,     0,     0,     0,
-       0,     0,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+     829,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  1095,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  2336,
+       0,     0,     0,  2338,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,  2339,  1183,     0,     0,     0,     0,  2343,
+       0,     0,     0,     0,     0,     0,  2346,     0,     0,     0,
+       0,     0,  1250,     0,  2351,     0,     0,  2355,  2356,     0,
+    1250,     0,     0,     0,  1250,     0,     0,  2365,  2366,  1250,
+    2368,  2369,  2370,  2371,     0,  1194,  2373,     0,     0,  1001,
+    2376,     0,     0,     0,     0,     0,  1007,     0,     0,     0,
+    2384,     0,     0,     0,     0,     0,  2388,     0,     0,     0,
+      99,  1313,     0,     0,     0,     0,     0,  2390,     0,     0,
+       0,     0,     0,     0,  1341,   100,     0,     0,     0,  1342,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   101,     0,     0,  1343,  1344,     0,  1345,
+    1346,  1314,     0,     0,     0,  2272,     0,  2405,   102,  2407,
+    1347,  1371,     0,     0,  2411,     0,     0,     0,     0,     0,
+       0,  1377,  1348,  1349,  1380,     0,  1250,  2418,     0,     0,
+    1350,     0,     0,  1351,  1082,     0,  1250,  2427,     0,     0,
+    1083,  2431,     0,     0,     0,     0,     0,     0,     0,     0,
+    1352,     0,     0,   103,     0,  1353,  1354,     0,  1355,  2449,
+       0,  1378,     0,     0,     0,     0,     0,   104,     0,     0,
+       0,     0,     0,     0,     0,     0,  2458,     0,     0,     0,
+       0,     0,  2463,     0,  2465,     0,     0,  1102,     0,     0,
+       0,  2469,  1106,     0,  2471,  1109,     0,     0,     0,  2474,
+       0,     0,     0,     0,  1117,   105,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1428,  1356,     0,     0,     0,
+       0,  2485,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  1250,     0,     0,  1250,
+    2492,   106,  2493,     0,  1250,  2495,     0,     0,   107,  1460,
+       0,     0,     0,   108,   109,  1429,  2501,     0,     0,   110,
+       0,     0,  1468,  2508,     0,   111,  2511,  1357,     0,     0,
+     100,     0,  1358,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1359,  1496,     0,  1250,     0,
+    1250,  1503,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   102,     0,  2378,     0,     0,     0,  2382,
+       0,     0,     0,     0,  1482,     0,     0,     0,     0,     0,
+       0,  1360,  1361,     0,     0,     0,  1497,     0,     0,     0,
+       0,  1504,     0,     0,     0,   112,     0,     0,     0,     0,
+       0,     0,  1362,     0,     0,     0,     0,     0,   103,     0,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,     0,
+    1551,  1552,  1553,     0,   142,     0,  1363,     0,   143,   144,
+    1555,  1556,  1557,     0,     0,     0,  1568,  1569,  1570,     0,
+     105,  1571,  1572,     0,  1574,  1575,     0,  1650,     0,     0,
+       0,     0,  1652,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,  1637,     0,     0,     0,     0,     0,
-       0,     0,     0,  1059,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  1411,  1060,     0,     0,     0,     0,  1886,
-       0,     0,  1657,     0,     0,     0,     0,  1892,  1893,     0,
-       0,     0,     0,     0,     0,     0,     0,  1429,   956,  1061,
-    2494,     0,  1929,  1930,     0,     0,   957,     0,  1688,  1638,
-       0,  1690,   958,  1940,  1941,  1695,     0,     0,  1698,  1699,
-       0,     0,  1702,  1704,  1951,  1952,     0,     0,   959,  1707,
-    1455,     0,  1062,     0,  1961,  1962,  1709,     0,     0,     0,
-    1967,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1970,     0,     0,   960,     0,     0,     0,     0,     0,     0,
-       0,   961,     0,  1689,     0,     0,  1691,     0,     0,     0,
-       0,     0,     0,     0,  1700,     0,  1748,  1703,     0,  1751,
-    1752,     0,     0,     0,  1708,     0,     0,     0,     0,     0,
-    1760,  1710,     0,     0,     0,     0,     0,   962,     0,     0,
-    1541,  1542,  1543,     0,   963,     0,     0,     0,     0,     0,
-    1545,  1546,  1547,     0,     0,     0,  1558,  1559,  1560,     0,
-       0,  1561,  1562,     0,  1564,  1565,     0,     0,     0,     0,
-       0,     0,  1782,     0,     0,     0,     0,     0,     0,     0,
-     964,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   965,     0,     0,     0,     0,     0,     0,     0,     0,
-    1806,  1807,     0,     0,     0,   966,     0,     0,     0,     0,
-       0,     0,     0,     0,  1063,  1816,  1064,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1783,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1826,  1828,  1830,  1832,  1834,     0,     0,  1837,     0,     0,
-    1839,     0,     0,  1841,  1843,  1845,  1847,  1849,  1851,     0,
-    1853,  1854,     0,     0,     0,  1858,     0,  1859,     0,  1861,
-    1065,     0,  1864,     0,     0,  1865,  1866,     0,  1696,     0,
-       0,  1868,  1869,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  1827,  1829,  1831,  1833,  1835,
-       0,     0,  1838,     0,     0,  1840,     0,     0,  1842,  1844,
-    1846,  1848,  1850,  1852,     0,     0,  1855,     0,     0,     0,
-       0,     0,  1860,     0,  1862,     0,     0,     0,     0,     0,
-       0,  1867,     0,     0,     0,     0,     0,  1870,     0,  1749,
-       0,     0,     0,  2126,  2017,  1755,     0,     0,     0,     0,
-       0,     0,     0,  2128,     0,     0,     0,  2132,  2133,     0,
-       0,     0,     0,     0,     0,     0,  2141,  2142,     0,     0,
-       0,     0,     0,     0,     0,  2150,  2151,     0,     0,     0,
-       0,  2156,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  2166,  2167,     0,     0,     0,  1785,  1974,     0,     0,
-    1977,     0,  2177,  2178,     0,    90,    91,     0,     0,     0,
-       0,  1982,     0,  2181,  1986,     0,     0,     0,     0,     0,
-       0,   100,  2183,     0,  2184,     0,     0,     0,  1809,     0,
-       0,     0,     0,     0,     0,     0,  1815,     0,   258,     0,
-       0,  2004,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   102,     0,     0,     0,     0,     0,     0,
-    1825,  2089,     0,     0,     0,     0,  1983,  1836,     0,  1987,
-       0,  2094,     0,  2095,     0,  2096,     0,     0,     0,  2098,
-       0,     0,  2100,     0,  2101,     0,     0,     0,  2103,     0,
-    2104,     0,  2105,     0,     0,  2048,  2107,   103,  2108,     0,
-       0,     0,     0,  2112,     0,  1877,  2114,     0,     0,  2116,
-    2117,     0,     0,  2119,     0,     0,     0,     0,  1885,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  1888,     0,
+    1672,     0,     0,     0,     0,     0,     0,     0,  1423,     0,
+       0,     0,  1653,     0,   110,     0,     0,     0,     0,     0,
+     111,     0,     0,     0,     0,     0,  1703,     0,     0,  1705,
+       0,     0,  1441,     0,     0,     0,     0,     0,  1721,  1723,
+       0,     0,     0,     0,     0,  1726,     0,     0,     0,     0,
+       0,     0,  1728,     0,     0,     0,  1210,     0,     0,     0,
+       0,     0,     0,     0,     0,  1467,  1704,     0,     0,  1706,
+       0,     0,     0,     0,  2498,     0,     0,     0,  1722,     0,
+       0,     0,     0,     0,     0,  1727,     0,     0,     0,     0,
+       0,  1766,  1729,     0,  1769,  1770,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1778,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1800,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   105,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  2085,     0,     0,     0,
+       0,     0,     0,     0,     0,  1824,  1825,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1801,     0,     0,
+    1834,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,  1846,
+    1848,  1850,  1852,  1854,     0,     0,  1857,     0,     0,  1859,
+       0,     0,  1861,  1863,  1865,  1867,  1869,  1871,     0,  1873,
+    1874,     0,     0,     0,  1877,  1878,  1880,     0,  1882,  1883,
+       0,     0,     0,     0,  1885,  1886,     0,     0,     0,  1847,
+    1849,  1851,  1853,  1855,     0,     0,  1858,     0,     0,  1860,
+       0,     0,  1862,  1864,  1866,  1868,  1870,  1872,     0,  1718,
+    1875,     0,     0,     0,     0,  1879,  1881,     0,     0,  1884,
+     592,   593,     0,     0,     0,  1887,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  1894,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1902,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1905,
+       0,     0,     0,     0,     0,     0,     0,  1767,     0,     0,
+       0,     0,   594,  1773,     0,     0,     0,     0,   595,     0,
+       0,     0,     0,     0,     0,   596,     0,   597,     0,     0,
+       0,     0,   598,     0,     0,   599,     0,     0,     0,     0,
+       0,   600,     0,     0,     0,  1992,     0,     0,  1995,     0,
+       0,   601,     0,     0,     0,     0,     0,   602,     0,  2000,
+       0,     0,  2004,     0,  1803,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  1068,  1567,     0,   603,     0,     0,
+       0,     0,     0,     0,     0,  1069,     0,  1577,     0,  2022,
+       0,     0,     0,     0,     0,     0,  1827,     0,   604,  2001,
+       0,     0,  2005,     0,  1833,  1638,  1639,     0,     0,     0,
+     965,  1070,     0,     0,   605,     0,     0,     0,   966,     0,
+       0,     0,   606,   607,   967,     0,     0,     0,     0,     0,
+       0,     0,  1845,     0,     0,     0,     0,     0,     0,  1856,
+     968,     0,   608,  2103,  1071,     0,  2062,     0,     0,     0,
+       0,     0,     0,     0,     0,  2110,     0,  2111,     0,  2112,
+       0,     0,   609,  2114,     0,   969,  2116,     0,  2117,     0,
+       0,     0,  2119,   970,  2120,   610,  2121,   611,     0,     0,
+    2123,     0,  2124,     0,     0,     0,  2127,     0,   612,  2129,
+       0,  2130,     0,   613,  2132,     0,     0,     0,     0,   614,
+       0,     0,     0,     0,     0,     0,   615,     0,     0,   971,
+       0,     0,     0,     0,     0,     0,   972,  2099,     0,     0,
+       0,     0,     0,     0,   616,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   617,   618,     0,
+     619,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   973,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   974,  2126,     0,     0,
+       0,     0,  2107,     0,     0,     0,     0,     0,     0,     0,
+     620,   975,     0,     0,     0,     0,  1990,     0,  1991,     0,
+       0,  1072,     0,  1073,     0,     0,     0,     0,     0,     0,
+       0,  2201,     0,     0,  2205,     0,     0,     0,  2006,  2209,
+       0,     0,     0,  2210,     0,     0,     0,     0,     0,     0,
+       0,  2135,     0,     0,     0,  2138,     0,     0,     0,     0,
+       0,  2225,     0,     0,     0,     0,     0,     0,     0,  2027,
+       0,  2029,     0,     0,     0,     0,     0,  1074,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  2034,     0,  2036,
+       0,     0,  2037,     0,  2039,  2170,  2171,  2172,  2173,  2174,
+       0,  2176,  2177,     0,     0,     0,  2181,  2182,  2183,  2184,
+    2185,     0,  2187,  2188,     0,  2203,     0,     0,  2207,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  2211,     0,
+       0,     0,  2070,     0,     0,  2074,  2075,     0,  2287,     0,
+       0,     0,  2223,     0,  2079,  2227,     0,     0,     0,     0,
+       0,     0,  2233,     0,     0,  2204,     0,  2239,     0,     0,
+       0,     0,     0,     0,     0,  2291,  2082,     0,     0,     0,
+       0,     0,     0,     0,     0,  1903,     0,     0,     0,     0,
+       0,     0,  2224,  1909,  1910,     0,     0,     0,     0,     0,
+    2097,  2098,  2234,     0,     0,     0,     0,     0,  1946,  1947,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1957,
+    1958,     0,     0,     0,     0,     0,     0,     0,  2113,     0,
+    1968,  1969,     0,  1124,  1125,  1126,     0,  2118,     0,     0,
+    1978,  1979,     0,     0,     0,  2122,  1984,     0,     0,     0,
+    2125,     0,  2333,     0,  2128,     0,  1987,  1127,  1128,  2131,
+       0,  1129,  2133,     0,     0,     0,     0,     0,  1130,     0,
+       0,  1131,  2340,     0,     0,  1132,     0,     0,     0,     0,
+       0,     0,  2345,  1133,  1134,     0,     0,     0,  2348,     0,
+       0,  1135,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  2297,     0,     0,  2299,  2300,  2301,  2302,  2303,     0,
+    2305,  2306,     0,     0,     0,     0,  1136,  1137,     0,  1138,
+       0,     0,  2310,  2311,  2312,  2313,  2314,     0,  2316,  2317,
+       0,  2319,     0,  2331,  1139,     0,     0,     0,     0,     0,
+       0,  2322,  2323,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  2326,     0,     0,  1140,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  2287,     0,   259,     0,     0,     0,     0,
-       0,     0,     0,  2296,     0,     0,     0,     0,     0,     0,
-       0,     0,  2298,   110,     0,     0,     0,   111,     0,     0,
-       0,  2307,     0,     0,  2110,   260,     0,  1973,  2309,  2188,
-       0,     0,  2192,     0,     0,     0,     0,  2196,     0,  2313,
-    1032,  2197,     0,     0,     0,  2316,  2093,  1988,  2318,     0,
-       0,  2319,     0,     0,     0,     0,     0,     0,     0,  2212,
+       0,  2349,     0,  2332,     0,     0,     0,  1141,     0,     0,
+    2401,     0,     0,  2361,     0,     0,  1142,     0,     0,     0,
+      90,    91,     0,     0,     0,     0,     0,     0,  2413,     0,
+       0,     0,     0,     0,     0,     0,   100,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  2009,     0,
-    2011,   261,     0,     0,     0,  2014,     0,     0,     0,     0,
-       0,     0,  2019,     0,  2021,     0,  2122,  2022,     0,  2024,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  2056,     0,
-    2276,  2060,  2061,     0,  2190,     0,     0,  2194,     0,     0,
-    2065,     0,     0,     0,     0,     0,     0,  2198,     0,  2382,
-       0,     0,     0,  2384,     0,  2279,     0,     0,     0,     0,
-    2385,  2210,  2068,     0,  2214,     0,  2388,    90,    91,     0,
-    2390,  2220,     0,  2391,     0,     0,     0,     0,     0,  2227,
-       0,     0,     0,   100,     0,     0,  2083,  2084,     0,  2191,
+       0,     0,     0,   260,     0,     0,  1143,     0,     0,     0,
+       0,     0,     0,  1144,  1145,     0,     0,     0,  2264,   102,
+       0,     0,     0,     0,     0,     0,  1146,     0,     0,     0,
+       0,  2456,     0,  2457,     0,  2459,  1147,  2461,     0,  2462,
+       0,  2464,     0,     0,     0,  2402,  2404,     0,  2406,  2392,
+       0,     0,  2408,  2410,     0,     0,     0,  2412,     0,     0,
+    2395,  1148,  2396,  1149,   103,     0,  2398,     0,     0,     0,
+       0,     0,     0,  1150,     0,     0,     0,     0,     0,     0,
+       0,     0,  2432,  1151,     0,  2403,     0,     0,     0,     0,
+       0,     0,  2409,     0,     0,     0,  2139,     0,     0,    90,
+      91,     0,     0,     0,     0,     0,  2141,     0,     0,     0,
+    2145,  2146,     0,     0,     0,   100,   105,  1152,     0,  2154,
+    2155,     0,     0,     0,     0,  2512,     0,     0,  2163,  2164,
+       0,     0,     0,  2452,  2169,     0,  2453,     0,     0,  2454,
+       0,  2455,     0,     0,  2179,  2180,     0,     0,   102,     0,
+       0,     0,   261,     0,     0,  2190,  2191,     0,     0,     0,
+       0,     0,     0,  2335,     0,     0,  2194,  2337,     0,     0,
+     110,  2487,     0,     0,     0,  2196,   111,  2197,     0,     0,
+       0,     0,     0,  2342,     0,     0,   262,  2496,     0,     0,
+       0,     0,     0,   103,     0,     0,     0,  2502,     0,     0,
+    2505,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  2488,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      90,    91,     0,     0,     0,     0,     0,  2503,     0,     0,
+    2506,     0,     0,   263,     0,   105,   100,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  2097,     0,     0,     0,  2211,     0,     0,     0,
-       0,  2102,     0,     0,     0,     0,  2221,     0,     0,  2106,
-       0,     0,     0,     0,  2109,  2322,     0,     0,     0,  2113,
-       0,     0,     0,     0,     0,     0,  2118,  2125,     0,  2120,
-       0,     0,     0,     0,     0,  2329,     0,     0,     0,   103,
-       0,     0,     0,     0,     0,  2334,     0,     0,     0,     0,
-       0,     0,  2338,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  2157,  2158,  2159,
-    2160,  2161,     0,  2163,  2164,     0,     0,     0,  2168,  2169,
-    2170,  2171,  2172,     0,  2174,  2175,     0,     0,     0,     0,
-       0,   105,   114,   115,   116,   117,   118,   119,   120,   121,
+       0,     0,   114,   115,   116,   117,   118,   119,   120,   121,
      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-       0,     0,     0,     0,     0,     0,     0,  2320,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  2392,     0,     0,     0,   111,
+       0,     0,   478,     0,     0,     0,     0,     0,     0,   110,
+       0,     0,     0,     0,     0,   111,     0,   100,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  2422,     0,     0,
+       0,     0,     0,     0,   103,     0,     0,     0,     0,     0,
+       0,     0,  2298,     0,     0,     0,     0,     0,     0,     0,
+     102,     0,  2307,     0,     0,     0,     0,     0,     0,     0,
+       0,  2309,     0,     0,     0,     0,     0,     0,     0,     0,
+    2318,     0,     0,     0,     0,     0,     0,  2320,     0,     0,
+       0,     0,     0,     0,     0,     0,   105,     0,  2324,     0,
+       0,     0,     0,     0,  2327,   103,     0,  2329,  2476,     0,
+    2330,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   139,   140,   141,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,  2404,     0,  2339,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  2351,     0,
-       0,     0,  2321,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   111,   105,     0,     0,
+       0,     0,     0,  2504,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  2515,     0,
+       0,  2516,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  2253,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  2448,     0,
-    2449,     0,  2451,     0,  2453,     0,  2454,     0,     0,     0,
-       0,     0,   114,   115,   116,   117,   118,   119,   120,   121,
+       0,     0,     0,   559,   100,     0,     0,     0,     0,     0,
+       0,   110,     0,     0,     0,     0,  2391,   111,     0,     0,
+    2393,     0,     0,     0,     0,     0,     0,  2394,     0,     0,
+       0,     0,     0,  2397,     0,     0,     0,  2399,     0,   560,
+    2400,     0,   114,   115,   116,   117,   118,   119,   120,   121,
      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-       0,  2393,  2395,     0,  2397,   554,   100,  2286,  2399,  2401,
-    2288,  2289,  2290,  2291,  2292,     0,  2294,  2295,     0,     0,
-       0,  2484,     0,     0,     0,     0,     0,     0,  2299,  2300,
-    2301,  2302,  2303,     0,  2305,  2306,     0,  2308,     0,     0,
-     555,  2424,     0,     0,    99,     0,     0,  2311,  2312,     0,
-       0,     0,     0,     0,     0,     0,  2394,  2509,  2315,   100,
-       0,     0,     0,  2400,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   101,     0,     0,
-       0,  2456,   103,     0,     0,     0,     0,     0,     0,     0,
-       0,   102,   556,     0,  2324,     0,     0,     0,  2326,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,  2331,     0,     0,     0,   475,     0,
+       0,     0,   103,     0,     0,     0,     0,     0,     0,   100,
+       0,     0,   561,     0,     0,     0,     0,     0,     0,     0,
+       0,   450,     0,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
+     141,   451,   452,     0,   105,   453,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    2481,     0,     0,   100,   105,   103,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  2492,   104,
-       0,     0,     0,     0,     0,     0,     0,     0,  2498,     0,
-       0,  2501,   307,     0,     0,   102,     0,     0,     0,   308,
-       0,     0,     0,     0,     0,     0,     0,  2383,     0,     0,
-       0,     0,     0,     0,     0,  2482,     0,   105,  2386,     0,
-    2387,     0,   111,     0,  2389,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   103,
-       0,     0,     0,  2499,     0,     0,  2502,     0,     0,     0,
-       0,     0,     0,   106,     0,     0,     0,     0,     0,     0,
-     107,     0,     0,     0,     0,   108,   109,     0,     0,     0,
-       0,   110,     0,     0,     0,   111,     0,     0,     0,     0,
-       0,  2413,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   105,     0,  2444,     0,     0,  2445,     0,     0,  2446,
-       0,  2447,     0,     0,     0,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   112,     0,     0,   110,     0,     0,     0,   111,
-       0,     0,     0,     0,  2470,     0,     0,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,     0,     0,     0,     0,
-       0,   142,     0,     0,     0,   143,   144,   309,     0,   310,
+       0,     0,     0,     0,     0,     0,     0,   454,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   103,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  2500,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  2512,     0,
-       0,  2513,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-       0,     0,   100,     0,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
-     140,   141,   100,     0,   102,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   447,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   448,   449,     0,     0,   450,   103,     0,
+     861,     0,     0,     0,     0,     0,   862,     0,     0,     0,
+       0,     0,     0,     0,   111,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   451,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   103,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   105,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   455,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   456,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     105,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   457,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   111,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   458,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,     0,   459,   876,   877,   878,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     105,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   452,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   110,     0,     0,     0,   111,   453,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   879,
+     880,     0,     0,   881,     0,   100,   882,     0,     0,     0,
+       0,     0,     0,   883,     0,     0,     0,   884,     0,     0,
+       0,     0,     0,     0,     0,   885,   886,     0,     0,     0,
+       0,     0,     0,   887,   888,     0,     0,     0,   102,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   454,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   111,     0,
+     889,     0,     0,     0,     0,     0,   890,     0,   891,   892,
+     100,   893,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   894,     0,     0,     0,
+       0,     0,     0,   103,     0,     0,     0,     0,   100,     0,
+       0,     0,     0,     0,     0,     0,   467,   895,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   468,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   896,
+       0,  1182,   100,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   105,     0,     0,   103,     0,
+       0,   897,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   103,     0,   898,     0,
+     899,     0,     0,     0,     0,   900,   901,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   902,   903,   110,
+     105,     0,     0,     0,     0,   111,     0,     0,   904,     0,
+     103,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   105,     0,
+       0,     0,     0,   905,     0,   906,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   907,     0,   908,
+       0,     0,     0,     0,     0,   909,     0,     0,     0,   471,
+     111,     0,   105,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   455,     0,     0,     0,     0,     0,     0,     0,
-       0,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   111,   910,
        0,   114,   115,   116,   117,   118,   119,   120,   121,   122,
      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
      133,   134,   135,   136,   137,   138,   139,   140,   141,     0,
-     456,   867,   868,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   869,   870,     0,     0,   871,     0,   100,
-     872,     0,     0,     0,     0,     0,     0,   873,     0,     0,
-       0,   874,     0,     0,     0,     0,     0,     0,   875,   876,
-       0,     0,     0,     0,     0,     0,   877,   878,   100,     0,
-       0,   102,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   879,     0,     0,     0,     0,     0,   880,
-       0,   881,   882,     0,   883,     0,     0,     0,     0,     0,
-     102,     0,     0,     0,     0,     0,     0,     0,     0,   884,
-       0,     0,     0,     0,     0,   103,     0,     0,     0,   100,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     885,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   103,     0,     0,     0,     0,     0,
-     100,     0,   886,     0,   464,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   105,     0,     0,
-       0,     0,     0,     0,   887,     0,     0,     0,     0,     0,
-       0,     0,  1173,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   103,   105,   888,     0,   889,
-       0,     0,     0,     0,   890,   891,   892,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   893,   894,     0,
-       0,   110,     0,     0,     0,   111,   103,     0,   895,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   105,     0,     0,
-     110,   896,     0,   897,   111,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   898,     0,   899,     0,     0,
-       0,     0,     0,   900,     0,     0,     0,     0,   105,  1297,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     100,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   111,     0,   901,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   111,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   465,   103,   853,     0,     0,
-       0,     0,     0,   854,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,     0,     0,   105,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   111,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   111,   468,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   114,   115,
+       0,     0,     0,     0,     0,     0,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,     0,     0,     0,     0,     0,     0,   114,   115,
      116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
      126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,  1115,  1116,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,  1117,
-    1118,     0,     0,  1119,     0,     0,     0,     0,     0,     0,
-    1120,     0,     0,  1121,     1,     0,     2,  1122,     0,     0,
-       0,     0,     0,     0,  1123,  1124,     0,     0,     0,     0,
-       3,     0,  1125,     0,     0,     4,     5,     0,     0,     6,
-       7,     0,     0,     0,     0,     0,     0,     8,     0,     0,
-       0,     0,     0,     0,     9,     0,    10,  1126,  1127,     0,
-    1128,     0,     0,     0,     0,    11,    12,     0,     0,     0,
-       0,     0,     0,     0,     0,  1129,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      13,     0,     0,     0,     0,     0,  1130,     0,     0,     0,
-       0,     0,    14,     0,     0,     0,    15,     0,     0,    16,
-       0,     0,     0,     0,    17,     0,    18,     0,  1131,     0,
-       0,     0,    19,     0,     0,     0,     0,  1132,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    20,     0,     0,     0,    21,    22,     0,     0,    23,
-      24,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    25,  1133,     0,     0,     0,   165,     0,   166,
-    1134,  1135,  1136,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,     0,     0,  1137,     0,    29,     0,     0,   167,
-       0,   168,   169,   170,  1138,     0,    30,     0,     0,    31,
-     171,    32,   172,    33,     0,     0,     0,   173,    34,   174,
-       0,   175,     0,     0,     0,     0,   176,  1139,   177,  1140,
-      35,     0,     0,     0,     0,    36,     0,     0,     0,  1141,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,  1142,
-       0,    37,   178,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    38,     0,    39,     0,     0,     0,     0,   179,
-      40,     0,     0,    41,    42,     0,     0,     0,     0,     0,
-       0,   180,   181,  1143,     0,   182,     0,     0,     0,   183,
-       0,     0,     0,  1209,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
-      44,     0,   184,   185,     0,     0,   186,     0,     0,     0,
-       0,     0,     0,     0,     0,   187,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   188,   189,
-       0,     0,     0,     0,     0,   190,     0,     0,     0,     0,
+     136,   137,   138,   139,   140,   141,     1,     0,     2,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   191,     0,   192,     0,     0,     0,
+       0,     0,     0,     3,     0,     0,     0,     0,     4,     5,
+       0,     0,     6,     7,     0,     0,     0,     0,     0,     0,
+       0,     8,     0,     0,     0,     0,     0,     0,     9,     0,
+      10,     0,     0,   165,     0,   166,     0,     0,     0,    11,
+      12,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   167,     0,   168,   169,
+     170,     0,     0,     0,    13,     0,     0,     0,   171,     0,
+     172,     0,     0,     0,     0,   173,    14,   174,     0,   175,
+      15,     0,     0,    16,   176,     0,   177,     0,    17,     0,
+      18,     0,     0,     0,     0,     0,    19,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   193,     0,
+     178,     0,     0,     0,     0,    20,     0,     0,     0,    21,
+      22,     0,     0,    23,    24,     0,     0,   179,     0,     0,
+       0,     0,     0,     0,     0,     0,    25,     0,     0,   180,
+     181,     0,     0,   182,     0,     0,     0,   183,     0,    26,
+      27,    28,  1218,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+     184,   185,     0,    30,   186,     0,    31,     0,    32,     0,
+      33,     0,     0,   187,     0,    34,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   188,   189,    35,     0,
+       0,     0,     0,    36,     0,   190,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   194,     0,     0,     0,     0,     0,
-       0,     0,   195,     0,     0,     0,     0,     0,     0,   196,
-       0,     0,     0,     0,     0,   197,     0,   198,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,  1210,     0,     0,     0,
-       0,     0,     0,   199
+      37,     0,     0,     0,     0,   191,     0,   192,     0,     0,
+       0,    38,     0,    39,     0,     0,     0,     0,     0,    40,
+       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
+     193,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   194,     0,     0,
+       0,     0,     0,    43,     0,   195,     0,     0,     0,    44,
+       0,     0,   196,     0,     0,     0,     0,     0,   197,     0,
+     198,     0,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
+    1219,     0,     0,     0,     0,     0,   199
 };
 
 static const yytype_int16 yycheck[] =
 {
-       9,     5,     5,    42,   199,  1450,     5,  1452,     6,     4,
-      16,   605,    61,   867,    31,     5,   600,   601,    27,     3,
-       4,     5,     5,     4,    33,    56,     3,     4,     3,     4,
-       3,     4,    41,     3,     4,    44,    85,    17,    47,     3,
-       4,     4,    51,     0,    61,    54,     4,     5,    57,   847,
-       4,    60,   850,    12,    63,     3,     4,    74,    67,    34,
-      77,    32,    37,    72,    37,     4,     3,     4,    85,    51,
-      34,     3,     4,     3,     4,     4,    93,    91,    27,     5,
-      27,    54,    26,    92,    82,    94,    95,    96,    97,    48,
-      93,     3,     4,    35,     4,   159,    99,   122,  1277,    13,
-       3,     4,   156,    61,   113,   131,     5,    66,     3,     4,
-     207,    20,   110,    21,   182,    21,  2429,   107,     3,     4,
-     147,    51,    34,   134,    82,    77,   123,   127,   103,    30,
-     103,   776,   777,   778,    45,    94,   182,   160,   136,   148,
-       6,    93,     4,   207,   167,    35,   121,   174,   165,   108,
-      12,   109,   111,   212,    42,   133,    87,   121,   167,  2472,
-      21,   229,   259,   172,   123,   191,   166,    56,    61,   113,
-     128,    17,   103,     4,     5,    61,   159,   822,   189,   185,
-     109,    52,    93,   229,     5,    27,   203,    11,    12,   243,
-     120,   181,    61,   176,    18,   259,     3,     4,    22,   109,
-     177,   226,     3,     4,    28,   182,    14,    15,   183,   121,
-     183,    21,   159,   183,   125,   232,   810,   197,   227,   201,
-     212,   232,   219,    21,   207,    59,   240,    61,   259,   268,
-     239,   240,   190,     5,    58,   225,   213,   195,   196,    14,
-      15,   250,    27,   182,   110,   177,   177,    21,    56,   258,
-     259,   282,   261,   262,  1433,   264,   396,   247,   207,   236,
-     207,   190,   225,   262,   178,   274,   195,   196,   317,   409,
-      56,   201,   281,   282,   177,   278,   259,   281,   109,    27,
-     190,    56,   263,   184,   267,   195,   196,   258,   297,   298,
-     270,   300,   265,   288,   269,   304,   305,   281,   892,   269,
-     317,   227,   279,   172,   261,   269,   315,   316,   217,   263,
-     269,   219,   321,   219,   272,   909,   158,   326,   327,   317,
-     278,   269,   259,   265,   110,   334,   225,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   208,   172,   269,
-     349,   350,   351,   272,   353,   322,   323,   279,   357,   358,
-     359,   197,   361,   263,    58,   176,   940,   269,   219,   190,
-     271,   249,   272,   321,   195,   196,   324,   325,   326,   378,
-     259,   179,   180,   382,   269,   265,   279,   219,   387,   388,
-     389,   390,   391,   392,   269,   394,  1240,   971,   397,   398,
-     322,   323,   321,   282,    98,    58,   325,   326,   219,   268,
-     207,   410,    30,    61,   179,   180,   207,    39,   279,   219,
-     158,   321,  1266,   237,   238,   325,   326,   259,   140,   322,
-     323,   219,   207,    37,   270,    28,    37,    28,  1226,    58,
-       4,  1229,  1286,   241,   268,    98,   260,   209,   259,    14,
-      15,   272,   250,   251,    17,   219,    37,   278,  1093,     0,
-     459,   460,   461,   462,    41,  1100,    30,   288,     4,     5,
-       5,   119,     3,     4,   250,    17,   241,    54,   477,    98,
-     294,   219,    17,   281,     4,   250,   251,     5,    56,    37,
-     246,    56,     3,     4,   113,    56,     5,   145,    75,   103,
-     321,   631,   103,    27,   325,   326,   505,    81,   537,     3,
-       4,     4,    56,    61,     3,     4,   281,    94,     5,    55,
-       4,   259,   103,     5,   218,    61,   238,    14,    15,    92,
-     107,    51,     4,   110,   152,   534,   230,   231,     5,   161,
-       5,    17,   110,   572,   238,    93,     3,     4,   141,   110,
-     141,    99,  1136,    37,     5,   103,     4,    51,   135,   136,
-       3,     4,    22,  1147,    37,   218,   110,   566,   216,    56,
-     163,   119,   163,   147,   167,     5,   167,   230,   231,   183,
-     198,   112,   183,   119,    44,   584,    51,    47,   152,     5,
-       3,     4,   140,    30,     4,    60,   132,    54,   183,   218,
-     599,   219,   183,   602,   140,   735,   107,   149,   156,   145,
-     187,   230,   231,   261,   179,   180,    76,   194,   211,   103,
-     211,   620,   621,   622,   623,   319,   320,   626,   140,   628,
-     103,   630,    61,   632,   198,   159,   184,   191,   242,     4,
-       5,   242,   102,    49,   104,  2080,   160,   676,     3,     4,
-     780,    88,   245,    72,   245,   219,     5,   193,     4,     5,
-     253,   254,   253,   254,   176,   113,   319,   320,   216,   246,
-     247,   670,   671,   209,   673,   674,   241,   213,    84,   227,
-     216,   201,   250,   207,    65,   250,   251,   686,   687,   250,
-     238,   198,   179,   180,   693,   694,    97,    72,    82,   183,
-     319,   320,   238,    83,   193,    61,   250,   201,   244,     5,
-     183,     5,   711,   712,   713,   263,   281,   154,    14,    15,
-      14,    15,   106,   129,    83,   261,   139,   275,    99,   277,
-     278,   730,   731,   732,    40,   734,   201,   736,     5,   738,
-     317,   225,   213,   162,   192,   260,   560,    14,    15,   209,
-     193,  2345,   264,    26,   241,   168,   755,   112,   757,    31,
-      56,  2355,    56,   250,   251,  1553,   320,   140,   255,   317,
-     282,   325,     5,   327,   773,    81,   177,     3,     4,   160,
-       4,   317,   781,    24,    25,  1573,   785,   162,    99,    56,
-     604,   175,   229,     4,   281,   609,     5,   234,   797,   798,
-    1588,  1645,     5,  1591,   188,   804,   805,   806,     3,     4,
-     229,  1599,   811,   184,  1602,    92,  1660,   816,   817,   225,
-    1455,     4,  1610,    22,   853,  1613,     4,     5,    27,     5,
-     203,   830,  1620,     3,     4,    22,     3,     4,   115,   147,
-     113,     4,  1686,   224,    43,    44,     4,    46,    47,     4,
-      91,     5,   233,     4,   229,   239,   227,    44,    57,    54,
-      47,    91,   992,    50,     4,   238,  2460,    37,   867,    68,
-      69,  2465,     4,   184,   151,   181,   149,    76,     4,     5,
-      79,     3,     4,   179,   180,   179,   180,    54,   887,    76,
-     247,   177,   891,     4,   278,    17,   182,    96,     3,     4,
-       4,   274,   101,   102,   288,   104,     4,    12,     4,   908,
-    1095,  1096,   179,   180,   222,   102,   227,   104,   917,     4,
-    2514,     5,  2516,     3,     4,     5,     4,   213,     3,     4,
-       4,    29,   931,   103,   933,   384,   385,    12,   937,   938,
-     939,     4,    40,  1012,  1013,   241,     5,   241,   947,     4,
-     236,   950,   260,   952,   250,   251,   250,   251,   235,   255,
-       4,   255,     4,   162,     9,   140,    19,  1097,     5,   968,
-      11,   970,    70,     5,   241,   974,   975,    14,    15,   160,
-      78,   246,     4,   250,   251,   281,     4,   281,   255,   988,
-     989,   182,   160,   279,   993,   994,     3,     4,   167,     4,
-     999,   176,  1001,  1032,     4,  1004,   185,  1006,   185,     5,
-     209,   109,     5,   183,   281,   214,   215,     4,    71,    56,
-     185,     5,   209,   208,     4,    78,     4,     4,  1027,   228,
-      37,  1030,   185,   131,    81,    88,    89,   323,     3,     4,
-       4,    81,    95,    14,    15,     5,  1045,     4,  1047,     4,
-    1049,  1050,  1051,  1052,     3,     4,  1055,  1056,     7,     8,
-     113,     5,    93,   262,   263,    17,    14,    15,     3,     4,
-       5,     5,    37,     4,   261,  1074,    17,   130,     3,     4,
-       5,    17,  1081,   181,   283,    56,  1085,  1086,  1087,   264,
-       4,   266,   190,   146,     4,     4,   103,   195,   196,  1098,
-     914,   154,  1101,    91,   202,     5,   204,   282,    56,     5,
-    1109,     3,     4,  1112,  1749,  1903,     4,     9,    10,    11,
-     173,     3,     4,     5,  1912,     7,     8,   225,   327,     4,
-       3,     4,     5,  1921,     7,     8,  2233,   157,   103,  2236,
-       4,  2238,   179,   180,    12,  2242,  2243,    14,    15,     5,
-      12,     4,   205,   967,     4,  1154,     4,  1156,     4,    48,
-    1159,  1160,  2259,   977,  1163,     5,     5,     4,     4,  1299,
-    1169,     5,  1171,     4,   272,   237,   263,    66,     5,  1178,
-    1815,     3,     4,     5,     4,     7,     8,     5,  2032,    56,
-     288,     5,  2036,    82,     5,     5,   249,  2041,     4,     4,
-     248,  1836,     5,     5,   241,    94,   259,     5,   179,   180,
-       5,     5,     4,   250,   251,     4,   219,     5,   255,   108,
-       5,     5,   111,   321,     5,     5,     5,   325,   326,     4,
-       4,   179,   180,   219,   123,   288,  1366,   219,  1237,  1238,
-    1239,  1240,    99,   219,   281,  1399,  1400,  1401,  1402,  1403,
-    1404,  1405,  1406,     5,    99,   127,   219,   219,    99,    37,
-    1259,     5,   223,   246,  1263,   197,    37,  1266,   197,     5,
-     241,     4,  1336,    14,    15,   164,     5,     5,  1463,   250,
-     251,   197,   197,     4,     4,  1284,  1285,  1286,     5,     5,
-    1475,     5,     5,   241,   103,  1294,   103,  1296,     4,   328,
-       5,     5,   250,   251,     4,    12,     5,     5,     4,     4,
-     281,     5,   179,   180,     5,    56,     4,     6,     5,     5,
-    1319,     4,    12,     5,   328,  1324,   328,   328,     6,  1328,
-     328,  1330,  1331,   281,  1333,  1334,  1335,   328,  1337,   328,
-       4,  1340,  1341,  1342,  1343,  1344,  1345,  1346,  1347,  1348,
-    1349,  1350,     4,   328,  1353,  1354,  1355,  1356,     4,    33,
-       4,     4,     4,     4,  1363,  1364,     5,     0,     5,   127,
-    1369,  1370,  1371,   159,   241,  1374,  1375,   219,     4,     4,
-     246,   219,     5,   250,   251,  2229,   219,  1386,  1387,   219,
-    1389,  1390,   227,  2237,   219,   219,   193,  2241,   185,     4,
-       4,     4,  2246,     4,   248,    27,     5,     5,  1407,     5,
-    1409,     5,     5,     4,   281,  1414,  1415,     4,  1417,  1418,
-    1419,  2056,  1421,  1422,     5,  1424,   100,     4,  1427,  1428,
-    2065,     4,     4,    61,     5,     5,   219,   219,   179,   180,
-       4,     4,   116,   117,   118,  1444,    74,  1261,     4,   219,
-     124,  1265,  1451,   285,     4,    83,     4,   285,     4,    81,
-      27,  1460,  1461,   137,     4,    93,     5,   207,   207,   207,
-     144,  1470,     5,   207,  2109,  1289,   207,  1476,  2113,     5,
-       5,   155,     6,  2118,   106,  2120,     6,     4,  1302,     5,
-       4,   119,     5,     5,     5,  1309,  1310,     4,     4,     4,
-     241,     5,     5,     4,     4,  1504,  1320,     5,     5,   250,
-     251,     5,   140,     5,     4,     4,   248,     5,     4,    12,
-       5,     5,     5,     4,     4,   248,     5,     5,     5,     5,
-       4,  1530,     4,   248,     5,  1534,     5,     5,     5,   106,
-     281,  1540,     4,     4,   281,     5,     5,     5,     5,   171,
-       4,   173,   174,   175,   176,     4,   184,     5,     5,  1689,
-       5,     5,     4,     4,   261,     5,  1696,  1697,     4,     4,
-       4,     4,     4,  1703,     5,     5,     5,     5,  1708,   201,
-    1710,     5,     4,   257,     5,     5,     4,     4,   216,     4,
-       4,     4,   261,     5,     5,   217,   218,     4,     6,     4,
-       6,     5,     4,     6,     5,   172,     5,   174,   175,   176,
-     238,     5,     4,  2457,     4,     4,   183,     5,     5,     5,
-       4,     4,   383,     5,     5,  1755,     5,  1441,     5,   196,
-       4,     4,  1066,     5,     5,     5,     5,     4,     4,   261,
-       5,  1640,  1641,     4,  1643,     4,  1645,   275,     4,   277,
-       4,     4,     4,     4,     4,  1785,   278,     4,     4,     4,
-       4,  1660,  1661,  1662,  1663,  1664,  1665,  1666,  1667,  1668,
-    1669,     4,     4,     4,     4,     4,  2370,     5,     5,     5,
-       4,     4,     4,  1682,     5,  1684,     5,  1686,     5,     4,
-       4,     4,  1691,     4,   261,  1694,     4,     5,     4,     4,
-       4,     4,     4,  2431,     5,     5,     5,     5,     5,     4,
-       4,     4,     4,     4,     4,     4,  1715,  1716,  1717,  1718,
-    1719,  1720,  1721,  1722,  1723,  1724,     5,  1726,  1727,  1728,
-    1729,  1730,  1731,  1732,  1733,  1734,  1735,  1736,  1737,     5,
-    1739,     5,  1741,  1742,  1743,     4,     4,    55,     4,     4,
-     328,     5,     5,    61,   376,     5,     4,     4,  1757,    67,
-      85,    69,     4,     4,   386,     5,    74,     5,    93,    77,
-       5,     5,     5,   395,    99,    83,     4,     4,  2427,    -1,
-      -1,  1780,  1781,    -1,  1783,    93,    -1,  1786,  2372,  1788,
-     115,    99,    -1,    -1,    -1,    -1,  1795,  1796,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   119,  1811,    -1,  1813,   140,    -1,    -1,  1817,    -1,
-      -1,    -1,  1821,   148,    -1,    -1,    -1,    -1,   395,    -1,
-      -1,    -1,   140,    -1,    -1,    -1,    -1,    -1,    -1,   461,
-    1654,    -1,   464,   465,    -1,    -1,    -1,  2431,   156,    -1,
-      -1,    -1,    -1,   475,    -1,    -1,   164,   165,   480,   184,
-      -1,    -1,    -1,   263,    -1,    -1,   191,   489,    -1,    -1,
-      -1,    -1,    -1,  1687,    -1,    -1,   184,  1876,    -1,  2009,
-    2010,  2011,    -1,    -1,    -1,  2015,    -1,    -1,    -1,  2019,
-    2020,    -1,  2022,    -1,  2024,   203,    -1,    -1,    -1,    -1,
-      -1,    -1,   227,    -1,    -1,   213,    -1,    -1,   216,    -1,
-      -1,   311,    -1,   238,    -1,    -1,   483,    -1,    -1,   227,
-      -1,    -1,   846,    -1,   232,    -1,    -1,   252,    -1,    -1,
-     238,    -1,    -1,   555,   556,    -1,   244,    -1,  2068,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   515,    -1,
-      -1,    -1,    -1,   261,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   274,   275,   368,   277,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1978,
-      -1,   603,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1991,  1992,  1993,  1994,  1995,  1996,  1997,  1998,
-    1999,  2000,    -1,    -1,    -1,    -1,  2005,    -1,    -1,   317,
-      -1,    -1,    -1,  2012,    -1,    -1,    -1,  2016,    -1,    -1,
-      -1,    -1,    -1,    -1,  2023,    -1,    -1,  2026,  2027,  2028,
-    2029,  2030,  2031,  2032,  2033,  2034,  2035,  2036,  2037,  2038,
-    2039,  2040,  2041,  2042,  2043,  2044,  2045,  2046,  2047,    -1,
-    2049,    -1,  2051,  2052,  2053,    -1,    -1,   457,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   466,    -1,    -1,   469,
-    2069,    -1,   472,    -1,  2073,    -1,   476,    -1,    -1,  2078,
-      -1,    -1,    -1,    -1,    -1,    -1,  2216,    -1,    -1,    -1,
-      -1,    -1,   714,    -1,    -1,  2225,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   733,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  2253,  2123,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   541,    -1,    -1,    -1,    -1,    -1,   769,   770,   771,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  2239,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  2250,    -1,   755,    -1,
-      -1,    -1,  2256,    -1,    -1,    -1,  2195,    -1,    -1,    -1,
-    2199,    -1,    -1,   825,    -1,    -1,    -1,    -1,    -1,    -1,
-    2209,    -1,    -1,    -1,    -1,    -1,  2215,    -1,    -1,    -1,
-      -1,    -1,    -1,  2222,    -1,    -1,    -1,   627,    -1,    -1,
-    2229,    -1,  2231,    -1,   634,  2234,  2235,    -1,  2237,    -1,
-      -1,    -1,  2241,  2057,    -1,  2244,  2245,  2246,  2247,  2248,
-    2249,    -1,  2251,    -1,    -1,  2254,    -1,    -1,    -1,  2258,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   890,  2268,
-    1194,    -1,    -1,    -1,    -1,  2274,    -1,     3,     4,  2343,
-    2344,    -1,  1206,  2347,    -1,  2349,  2285,    -1,    -1,  2353,
-    2354,    -1,    -1,    19,  2358,  2359,    -1,    -1,    -1,    -1,
-    1224,  1225,    -1,    -1,  2368,  2369,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   941,
-      -1,   721,    -1,   890,    -1,    51,  2325,   727,  2327,   951,
-      -1,    -1,   954,  2332,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  2405,    -1,    -1,  2408,    -1,  2345,  2346,    -1,  2413,
-      -1,    -1,    -1,  2417,    -1,    -1,  2355,  2356,  2422,  2423,
-      -1,  2360,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,
-      -1,    -1,    -1,    -1,   774,    -1,    -1,    -1,    -1,   779,
-      -1,  2380,   782,    -1,   951,    -1,    -1,    -1,    -1,    -1,
-      -1,   791,    -1,    -1,    -1,    -1,    -1,  2396,    -1,    -1,
-      -1,    -1,    -1,  2402,    -1,  2404,    -1,    -1,    -1,    -1,
-      -1,    -1,  2411,    -1,    -1,  2414,   835,    -1,    -1,    -1,
-    2419,   147,  2486,  1045,    -1,  2489,    -1,  2491,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  2505,    -1,  2442,    -1,  2509,  2260,    -1,    -1,    -1,
-    2264,    -1,    -1,    -1,  2518,  2519,    -1,  1079,  2457,    -1,
-      -1,  2460,  2461,    -1,  2463,    -1,  2465,  2466,    -1,    -1,
-    1092,    -1,    -1,    -1,    -1,   201,    -1,    -1,  1045,   205,
-    2479,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2487,    -1,
-      -1,  2490,    -1,  1115,    -1,    -1,    -1,    -1,  1120,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  2514,    -1,  2516,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1104,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1115,    -1,
-      -1,    -1,    -1,  1120,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1236,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1033,    61,    -1,    -1,    -1,    -1,  1563,
-      -1,    -1,  1264,    -1,    -1,    -1,    -1,  1571,  1572,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1057,    85,    86,
-    2474,    -1,  1586,  1587,    -1,    -1,    93,    -1,  1290,  1236,
-      -1,  1293,    99,  1597,  1598,  1297,    -1,    -1,  1300,  1301,
-      -1,    -1,  1304,  1305,  1608,  1609,    -1,    -1,   115,  1311,
-    1090,    -1,   119,    -1,  1618,  1619,  1318,    -1,    -1,    -1,
-    1624,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1634,    -1,    -1,   140,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   148,    -1,  1290,    -1,    -1,  1293,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1301,    -1,  1358,  1304,    -1,  1361,
-    1362,    -1,    -1,    -1,  1311,    -1,    -1,    -1,    -1,    -1,
-    1372,  1318,    -1,    -1,    -1,    -1,    -1,   184,    -1,    -1,
-    1179,  1180,  1181,    -1,   191,    -1,    -1,    -1,    -1,    -1,
-    1189,  1190,  1191,    -1,    -1,    -1,  1195,  1196,  1197,    -1,
-      -1,  1200,  1201,    -1,  1203,  1204,    -1,    -1,    -1,    -1,
-      -1,    -1,  1414,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     227,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   238,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1442,  1443,    -1,    -1,    -1,   252,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   261,  1457,   263,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1414,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1482,  1483,  1484,  1485,  1486,    -1,    -1,  1489,    -1,    -1,
-    1492,    -1,    -1,  1495,  1496,  1497,  1498,  1499,  1500,    -1,
-    1502,  1503,    -1,    -1,    -1,  1507,    -1,  1509,    -1,  1511,
-     317,    -1,  1514,    -1,    -1,  1517,  1518,    -1,  1298,    -1,
-      -1,  1523,  1524,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1482,  1483,  1484,  1485,  1486,
-      -1,    -1,  1489,    -1,    -1,  1492,    -1,    -1,  1495,  1496,
-    1497,  1498,  1499,  1500,    -1,    -1,  1503,    -1,    -1,    -1,
-      -1,    -1,  1509,    -1,  1511,    -1,    -1,    -1,    -1,    -1,
-      -1,  1518,    -1,    -1,    -1,    -1,    -1,  1524,    -1,  1359,
-      -1,    -1,    -1,  1887,  1699,  1365,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1897,    -1,    -1,    -1,  1901,  1902,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1910,  1911,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1919,  1920,    -1,    -1,    -1,
-      -1,  1925,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1935,  1936,    -1,    -1,    -1,  1416,  1639,    -1,    -1,
-    1642,    -1,  1946,  1947,    -1,     3,     4,    -1,    -1,    -1,
-      -1,  1653,    -1,  1957,  1656,    -1,    -1,    -1,    -1,    -1,
-      -1,    19,  1966,    -1,  1968,    -1,    -1,    -1,  1448,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1456,    -1,    36,    -1,
-      -1,  1683,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,
-    1480,  1816,    -1,    -1,    -1,    -1,  1653,  1487,    -1,  1656,
-      -1,  1826,    -1,  1828,    -1,  1830,    -1,    -1,    -1,  1834,
-      -1,    -1,  1837,    -1,  1839,    -1,    -1,    -1,  1843,    -1,
-    1845,    -1,  1847,    -1,    -1,  1737,  1851,    95,  1853,    -1,
-      -1,    -1,    -1,  1858,    -1,  1544,  1861,    -1,    -1,  1864,
-    1865,    -1,    -1,  1868,    -1,    -1,    -1,    -1,  1557,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1567,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   147,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1808,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  2127,    -1,   183,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  2137,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  2146,   201,    -1,    -1,    -1,   205,    -1,    -1,
-      -1,  2155,    -1,    -1,  1856,   213,    -1,  1637,  2162,  1974,
-      -1,    -1,  1977,    -1,    -1,    -1,    -1,  1982,    -1,  2173,
-       6,  1986,    -1,    -1,    -1,  2179,  1823,  1657,  2182,    -1,
-      -1,  2185,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2004,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1688,    -1,
-    1690,   269,    -1,    -1,    -1,  1695,    -1,    -1,    -1,    -1,
-      -1,    -1,  1702,    -1,  1704,    -1,  1873,  1707,    -1,  1709,
-     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
+       9,   199,  1462,    42,  1464,   606,   607,   611,    35,     4,
+       5,     4,    35,     4,     6,   877,     5,     4,    27,   855,
+       3,     4,   858,     5,    33,     5,    32,     0,     3,     4,
+       5,    27,    41,     4,     4,    44,     4,     5,    47,    27,
+       3,     4,    51,     5,    20,    54,    53,    32,    57,     3,
+       4,    60,     3,     4,    63,    21,    44,     4,    67,    47,
+       4,     3,     4,    72,    16,    62,    52,    62,     3,     4,
+      58,     3,     4,    50,    17,     5,   125,     3,     4,   161,
+      34,   399,    21,    92,     4,    94,    95,    96,    97,    84,
+      93,    37,    84,    81,   412,     3,     4,    62,    46,    34,
+      99,     3,     4,   124,   113,    52,    95,     3,     4,    86,
+      98,   133,   101,    17,   142,  1349,   111,    39,   111,    83,
+     112,    13,    87,   213,  2437,    31,    24,    25,     0,     3,
+       4,   213,   783,   784,   785,   130,    17,     4,     5,   148,
+     111,    42,   218,   111,   204,    79,   138,    95,     3,     4,
+      52,   211,   212,    30,   131,   129,    62,    62,   167,   105,
+     246,    95,    57,   172,   160,  2478,   252,     3,     4,   123,
+      76,   193,   184,    79,    17,   224,   266,   174,   829,   127,
+     179,    87,     3,     4,    21,   149,     4,     5,   123,    95,
+      94,    57,   274,    62,   168,    93,   252,   192,    34,   192,
+      55,    37,   197,   198,   197,   198,   266,   214,   151,     5,
+     231,   135,    21,   817,    21,   243,   179,   203,   114,   228,
+     122,   192,   234,    21,   192,     5,   197,   198,   224,   197,
+     198,   270,   241,   242,   185,   187,    27,   218,    56,   185,
+     114,   163,   245,   252,    62,   272,   222,     3,     4,   272,
+      27,   260,   261,   230,   263,   264,   203,   266,   224,   265,
+     230,   167,    14,    15,   184,    11,    12,   276,   230,   105,
+     266,   179,    18,    27,   283,   284,    22,   270,   275,   286,
+     265,   213,    28,   270,   279,   224,   279,   123,   180,   269,
+     285,   300,   301,   276,   303,   268,   285,   901,   307,   308,
+     206,   203,   232,   121,   295,    57,   288,   184,   279,   318,
+     319,   279,    58,   288,   918,   324,   134,   285,   199,   637,
+     329,   330,   276,   286,   142,   276,   270,   295,   337,   147,
+     278,   237,   324,   328,   276,   328,   331,   332,   333,   332,
+     333,   276,     4,   352,   353,   354,   334,   356,   949,   185,
+     276,   360,   361,   362,   255,   364,   199,   328,   179,   324,
+     328,   332,   333,   184,   332,   333,   329,   330,    60,   160,
+      62,   266,   381,    26,   276,    37,   385,   195,   286,   980,
+       4,   390,   391,   392,   393,   394,   395,   224,   397,     5,
+      59,   400,   401,  1255,   289,    37,   277,   215,   219,  1235,
+     266,   219,  1238,   221,   413,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   224,    37,   224,   324,  1281,
+     241,   329,   330,   289,   742,   243,   224,     3,     4,   181,
+     182,   100,   250,   224,   277,   215,   213,     3,     4,  1301,
+     276,    62,     4,   105,   158,   101,    27,   142,    12,    37,
+     268,  1102,     4,   462,   463,   464,   465,   213,  1109,   213,
+      57,    37,   115,   105,    27,   286,     5,    57,    30,   787,
+     149,   480,     6,     5,    95,   266,    41,    59,    17,    55,
+     101,     5,   174,     5,   105,    49,    52,    57,     3,     4,
+      55,   115,  1292,   239,   240,   247,     4,   176,    57,   508,
+     121,   540,    33,    67,   256,   257,   324,    37,   329,   330,
+      17,   206,    77,   184,     4,   112,   262,   105,   100,   246,
+      62,   142,   112,   185,    30,   252,     3,     4,   537,   105,
+     186,    96,    96,   115,     5,   249,   288,   158,   577,    29,
+      84,  1145,   112,   185,   109,     5,   110,   112,   243,   113,
+      40,   297,  1156,   112,   223,   208,     5,     5,     3,     4,
+      37,   125,   571,   234,   108,   186,   235,   236,   230,     4,
+     194,   102,   137,   138,   243,   105,   232,   109,   112,   121,
+     161,   590,    72,   275,     5,   185,   281,   118,   119,   120,
+      80,    89,   154,    14,    15,   126,   605,   185,   161,   608,
+     221,     3,     4,    52,     5,   147,   248,   105,   139,   185,
+      12,   232,    61,    14,    15,   146,   109,   626,   627,   628,
+     629,   111,   243,   632,   189,   634,   157,   636,   105,   638,
+       5,   196,   213,   177,  2094,    59,    57,   203,   200,    14,
+      15,   223,    62,   133,   683,  1445,   190,    94,   154,   270,
+     213,   183,   161,   235,   236,   185,    57,   326,   327,   256,
+     248,   282,   224,   284,   285,     4,   256,    26,   677,   678,
+     117,   680,   681,    12,    74,    30,   100,    14,    15,   221,
+     195,   179,    57,  1001,   693,   694,   256,   252,   253,    66,
+      22,   700,   701,   183,   200,   162,   272,   256,   230,   149,
+     244,   142,   192,   324,   213,   200,   153,   197,   198,   718,
+     719,   720,   276,    45,    85,   205,    48,   207,   224,    51,
+      57,   253,    28,    14,    15,     5,   268,  1563,   737,   738,
+     739,    62,   741,   264,   743,    90,   745,   178,    74,     5,
+     230,   285,     3,     4,   326,   327,    78,  1583,    14,    15,
+     195,   295,    85,   762,   203,   764,   115,   266,     5,   324,
+     181,   182,  1598,   219,   164,  1601,    57,    14,    15,    68,
+     136,   780,   104,  1609,   106,   162,  1612,   227,   267,   788,
+     181,   182,   169,   792,  1620,   162,    31,  1623,  1106,   279,
+       5,    57,   151,   240,  1630,   804,   805,   142,  1660,   223,
+       4,   156,   811,   812,   813,   295,   181,   182,     5,   818,
+      57,   235,   236,  1675,   823,   824,  1467,   267,     4,   565,
+       3,     4,   861,     3,     4,   191,   247,   101,   164,   838,
+     271,     5,   273,   178,   234,   256,   257,   143,   328,  1701,
+     261,     5,   332,   333,   181,   182,   247,     5,   289,   208,
+       4,     5,   229,     4,    37,   256,   257,    14,    15,   165,
+     261,   238,     4,   169,   610,   179,     4,   288,   877,   615,
+     184,   237,   247,    22,     4,    14,    15,     3,     4,   234,
+     141,   256,   257,   215,   239,    40,   261,   288,   897,     5,
+     181,   182,     3,     4,     3,     4,    45,    93,   234,    48,
+      57,    12,   326,   327,     4,   219,  1104,  1105,   917,   170,
+     247,   217,   186,   288,     5,   181,   182,   926,    57,   256,
+     257,    28,   105,     4,    14,    15,   271,   241,    83,    78,
+     193,   940,     4,   942,   181,   182,   268,   946,   947,   948,
+       3,     4,     3,     4,   289,   251,    55,   956,     3,     4,
+     959,   288,   961,   259,   260,   104,   247,   106,   232,   253,
+      14,    15,    17,     4,     5,   256,   257,    57,   977,     4,
+     979,     4,   286,     4,   983,   984,    37,   204,     3,     4,
+       5,   247,     7,     8,   211,   212,     4,     5,   997,   998,
+     256,   257,    55,  1002,  1003,   261,  1314,   288,     4,  1008,
+     247,  1010,  1041,    57,  1013,     5,  1015,     4,  2355,   256,
+     257,     3,     4,     5,   261,     4,   330,  2251,  2365,     3,
+       4,     5,   288,     4,   181,   182,     5,  1036,   183,     4,
+    1039,   387,   388,  2267,     4,   262,   143,  1021,  1022,   266,
+       4,   288,   181,   182,   105,  1054,     9,  1056,     5,  1058,
+    1059,  1060,  1061,    11,   252,  1064,  1065,   162,   165,     4,
+    1378,     4,   169,   184,   327,   169,   215,   162,     4,   332,
+    2245,   334,   187,  2248,  1083,  2250,     3,     4,     5,  2254,
+    2255,  1090,    62,     4,  1920,  1094,  1095,  1096,   187,     5,
+     247,   181,   182,  1929,     5,  2270,    76,     4,  1107,   256,
+     257,  1110,  1938,   187,     5,    85,   214,     5,   247,  1118,
+     217,     4,  1121,     4,     4,    95,  1767,   256,   257,  2353,
+    2354,  2468,   187,  2357,   185,  2359,  2473,   181,   182,  2363,
+    2364,   288,     3,     4,  2368,  2369,    83,    83,     9,    10,
+      11,   121,  2376,  2377,   251,     5,     3,     4,     5,   288,
+       7,     8,   259,   260,  1163,     4,  1165,   247,     4,  1168,
+    1169,     5,   142,  1172,     4,    87,   256,   257,     5,  1178,
+    2517,  1180,  2519,    95,    17,    95,     5,   923,  1187,   101,
+    2414,    17,  1833,  2417,    17,  2047,     4,     4,  2422,  2051,
+      49,     4,  2426,   247,  2056,   117,    93,  2431,   288,     5,
+       5,     4,   256,   257,     4,  1856,   186,     4,    67,  1411,
+    1412,  1413,  1414,  1415,  1416,  1417,  1418,     3,     4,     5,
+     142,     7,     8,     4,    12,    84,     5,    12,   150,     4,
+     976,     4,   242,     4,   288,     4,     4,    96,     5,     5,
+     986,   221,   159,  1252,  1253,  1254,  1255,    19,     3,     4,
+       4,   110,     7,     8,   113,     5,     4,  2491,   270,     5,
+    2494,     4,     4,   243,   186,  1274,   125,     5,    40,  1278,
+       5,   193,  1281,     5,     5,  2509,     4,  1475,  2512,     5,
+       5,   254,     5,     5,     5,     4,     4,  2521,  2522,  1487,
+    1299,  1300,  1301,     5,     5,     5,     5,     5,     5,     4,
+    1309,    73,   282,  1312,   284,     4,   224,   166,    80,   224,
+     232,   224,   101,     5,   224,   129,   224,   101,    90,    91,
+      37,   243,   224,  1332,   101,    97,     5,   199,  1337,   228,
+     199,    37,  1341,     5,  1343,  1344,   258,  1346,  1347,  1348,
+       4,  1350,     5,   115,  1353,  1354,  1355,  1356,  1357,  1358,
+    1359,  1360,  1361,  1362,     5,     4,  1365,  1366,  1367,  1368,
+     132,   199,     4,     4,   199,     5,  1375,  1376,     5,     5,
+       5,   105,  1381,  1382,  1383,   105,   148,  1386,  1387,  2241,
+       5,     5,     4,     4,   156,     5,  1704,  2249,     5,  1398,
+    1399,  2253,  1401,  1402,     5,     5,  2258,     4,     4,    12,
+    1718,  1719,     5,   175,  1722,     5,     4,    12,    27,  1727,
+    1419,  1729,  1421,     6,     5,     4,   335,  1426,  1427,  2070,
+    1429,  1430,  1431,   335,  1433,  1434,   335,  1436,  2079,   335,
+    1439,  1440,   335,     6,     4,   335,     4,   209,     4,   335,
+     335,     4,     4,     0,     5,     4,   224,  1456,    27,     5,
+     224,   129,     4,     4,  1463,  1773,   232,   161,   195,   224,
+     224,   224,    81,  1472,  1473,   224,     4,   187,     4,     4,
+       4,   254,     5,  1482,  2125,     5,     5,  2128,     5,  1488,
+    2131,     5,  2133,   255,     5,  1803,     4,   106,     4,     6,
+       5,     4,     4,   292,   266,     5,     5,   224,     4,     4,
+     224,  1247,     4,     4,     4,     4,     4,     4,   224,     5,
+     292,  1520,     5,   213,     5,   213,   213,   213,   213,     5,
+       4,     6,     5,   295,     4,   254,     5,   106,     5,     5,
+    1276,  1540,     4,     4,  1280,  1544,     4,    12,     5,     5,
+       4,  1550,     5,     4,     6,     5,     5,     5,     4,     4,
+    1075,     5,   171,     4,   173,   174,   175,   176,  1304,     5,
+       5,     5,     4,     4,   254,     5,     5,     5,     5,  1315,
+       4,     4,   254,     5,     5,     5,  1322,  1323,     5,     4,
+       4,     4,   201,     5,     5,     5,     5,  1333,     4,     6,
+       5,     5,     5,   172,     5,   174,   175,   176,     4,   218,
+     219,     4,     4,  2465,   183,     5,     4,     4,     4,   268,
+       5,     5,     5,     5,     4,   288,     5,   196,     4,     6,
+       5,     5,     4,     4,     4,     4,   386,     5,     5,     4,
+     268,     4,   335,     5,     4,  2378,     5,     5,     5,     4,
+       4,     4,  2439,     5,   263,     5,  1655,  1656,     5,  1658,
+       4,  1660,     4,  2435,     5,     5,     5,     5,     4,     4,
+       4,   280,     5,     5,     5,     5,  1675,  1676,  1677,  1678,
+    1679,  1680,  1681,  1682,  1683,  1684,     4,     4,    16,     5,
+       4,     4,     4,     4,   263,    23,     4,     4,  1697,     4,
+    1699,     4,  1701,     4,     4,     4,     4,  1706,     4,     4,
+       4,    -1,     5,     5,     4,     4,     4,  1453,  1717,  2027,
+    2028,  2029,     5,     5,  2032,     5,  2034,  2035,     5,  2037,
+       4,  2039,     4,     4,     4,  1734,  1735,  1736,  1737,  1738,
+    1739,  1740,  1741,  1742,  1743,     4,  1745,  1746,  1747,  1748,
+    1749,  1750,  1751,  1752,  1753,  1754,  1755,     4,  1757,     4,
+    1759,  1760,  1761,     4,    -1,     5,     5,     5,     5,     4,
+     379,     5,     4,     4,  2082,     4,  1775,     4,    -1,     5,
+     389,     5,     4,     4,     4,     4,  2380,     4,     4,   398,
+       5,     5,     4,     4,    -1,     5,     5,     4,     4,  1798,
+    1799,     5,  1801,     5,     4,  1804,    -1,  1806,    -1,    -1,
+      -1,    -1,    -1,    -1,  1813,  1814,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   398,
+    1829,    -1,  1831,    -1,    -1,    -1,  1835,    -1,    -1,    -1,
+    1839,    -1,    -1,    -1,    -1,  2439,    -1,    -1,    -1,     6,
+      -1,    -1,    -1,    -1,    -1,   464,    -1,    -1,   467,   468,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   478,
+      -1,    -1,    -1,    -1,   483,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   492,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1893,    -1,    -1,    -1,   226,    -1,
+     228,   265,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   486,    -1,    -1,
+      -1,  2229,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2237,
+      -1,    -1,    -1,  1669,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   518,
+     314,   560,   561,    -1,    -1,    -1,  2264,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1702,   295,   296,   297,
      298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,   314,   315,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1748,    -1,
-    2085,  1751,  1752,    -1,  1976,    -1,    -1,  1979,    -1,    -1,
-    1760,    -1,    -1,    -1,    -1,    -1,    -1,  1989,    -1,  2293,
-      -1,    -1,    -1,  2297,    -1,  2110,    -1,    -1,    -1,    -1,
-    2304,  2003,  1782,    -1,  2006,    -1,  2310,     3,     4,    -1,
-    2314,  2013,    -1,  2317,    -1,    -1,    -1,    -1,    -1,  2021,
-      -1,    -1,    -1,    19,    -1,    -1,  1806,  1807,    -1,  1976,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,    -1,    -1,  1996,    -1,    -1,
+     609,    -1,    -1,    -1,    -1,    -1,    -1,   371,    -1,    -1,
+    2009,  2010,  2011,  2012,  2013,  2014,  2015,  2016,  2017,  2018,
+      -1,    -1,    -1,    -1,  2023,    -1,    -1,    -1,    -1,    -1,
+      -1,  2030,    -1,    -1,  2033,    -1,    -1,    -1,    -1,  2038,
+      -1,    -1,  2041,  2042,  2043,  2044,  2045,  2046,  2047,  2048,
+    2049,  2050,  2051,  2052,  2053,  2054,  2055,  2056,  2057,  2058,
+    2059,  2060,  2061,    -1,  2063,    -1,  2065,  2066,  2067,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  2083,    -1,    -1,    -1,  2087,    -1,
+      -1,    -1,    -1,  2092,    -1,    -1,   460,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   469,    -1,    -1,   472,    -1,
+      -1,   475,   721,    -1,    -1,   479,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1832,    -1,    -1,    -1,  2003,    -1,    -1,    -1,
-      -1,  1841,    -1,    -1,    -1,    -1,  2013,    -1,    -1,  1849,
-      -1,    -1,    -1,    -1,  1854,  2190,    -1,    -1,    -1,  1859,
-      -1,    -1,    -1,    -1,    -1,    -1,  1866,  1886,    -1,  1869,
-      -1,    -1,    -1,    -1,    -1,  2210,    -1,    -1,    -1,    95,
-      -1,    -1,    -1,    -1,    -1,  2220,    -1,    -1,    -1,    -1,
-      -1,    -1,  2227,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1926,  1927,  1928,
-    1929,  1930,    -1,  1932,  1933,    -1,    -1,    -1,  1937,  1938,
-    1939,  1940,  1941,    -1,  1943,  1944,    -1,    -1,    -1,    -1,
-      -1,   147,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  2189,    -1,    -1,
+      -1,   740,    -1,    -1,    -1,    -1,    -1,  2136,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
+     317,   318,   319,   320,   321,   322,    -1,   776,   777,   778,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  2320,    -1,    -1,    -1,   205,
+     544,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   762,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2208,
+      -1,    -1,    -1,  2212,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  2222,   833,    -1,    -1,    -1,    -1,  2228,
+      -1,    -1,    -1,    -1,    -1,    -1,  2235,    -1,    -1,    -1,
+      -1,    -1,  2241,    -1,  2243,    -1,    -1,  2246,  2247,    -1,
+    2249,    -1,    -1,    -1,  2253,    -1,    -1,  2256,  2257,  2258,
+    2259,  2260,  2261,  2262,    -1,   843,  2265,    -1,    -1,   633,
+    2269,    -1,    -1,    -1,    -1,    -1,   640,    -1,    -1,    -1,
+    2279,    -1,    -1,    -1,    -1,    -1,  2285,    -1,    -1,    -1,
+       4,   900,    -1,    -1,    -1,    -1,    -1,  2296,    -1,    -1,
+      -1,    -1,    -1,    -1,    22,    19,    -1,    -1,    -1,    27,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  2339,    -1,  2228,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2240,    -1,
-      -1,    -1,  2189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    37,    -1,    -1,    44,    45,    -1,    47,
+      48,   900,    -1,    -1,    -1,  2071,    -1,  2336,    52,  2338,
+      58,   950,    -1,    -1,  2343,    -1,    -1,    -1,    -1,    -1,
+      -1,   960,    70,    71,   963,    -1,  2355,  2356,    -1,    -1,
+      78,    -1,    -1,    81,   728,    -1,  2365,  2366,    -1,    -1,
+     734,  2370,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      98,    -1,    -1,    97,    -1,   103,   104,    -1,   106,  2388,
+      -1,   960,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  2405,    -1,    -1,    -1,
+      -1,    -1,  2411,    -1,  2413,    -1,    -1,   781,    -1,    -1,
+      -1,  2420,   786,    -1,  2423,   789,    -1,    -1,    -1,  2428,
+      -1,    -1,    -1,    -1,   798,   149,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1054,   164,    -1,    -1,    -1,
+      -1,  2450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  2465,    -1,    -1,  2468,
+    2469,   185,  2471,    -1,  2473,  2474,    -1,    -1,   192,  1088,
+      -1,    -1,    -1,   197,   198,  1054,  2485,    -1,    -1,   203,
+      -1,    -1,  1101,  2492,    -1,   209,  2495,   215,    -1,    -1,
+      19,    -1,   220,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   233,  1125,    -1,  2517,    -1,
+    2519,  1130,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    52,    -1,  2271,    -1,    -1,    -1,  2275,
+      -1,    -1,    -1,    -1,  1113,    -1,    -1,    -1,    -1,    -1,
+      -1,   269,   270,    -1,    -1,    -1,  1125,    -1,    -1,    -1,
+      -1,  1130,    -1,    -1,    -1,   279,    -1,    -1,    -1,    -1,
+      -1,    -1,   290,    -1,    -1,    -1,    -1,    -1,    97,    -1,
+     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,    -1,
+    1188,  1189,  1190,    -1,   328,    -1,   334,    -1,   332,   333,
+    1198,  1199,  1200,    -1,    -1,    -1,  1204,  1205,  1206,    -1,
+     149,  1209,  1210,    -1,  1212,  1213,    -1,  1246,    -1,    -1,
+      -1,    -1,  1251,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2048,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2393,    -1,
-    2395,    -1,  2397,    -1,  2399,    -1,  2401,    -1,    -1,    -1,
-      -1,    -1,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-      -1,  2323,  2324,    -1,  2326,    18,    19,  2126,  2330,  2331,
-    2129,  2130,  2131,  2132,  2133,    -1,  2135,  2136,    -1,    -1,
-      -1,  2456,    -1,    -1,    -1,    -1,    -1,    -1,  2147,  2148,
-    2149,  2150,  2151,    -1,  2153,  2154,    -1,  2156,    -1,    -1,
-      53,  2363,    -1,    -1,     4,    -1,    -1,  2166,  2167,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  2323,  2492,  2177,    19,
-      -1,    -1,    -1,  2330,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
-      -1,  2403,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    51,   105,    -1,  2194,    -1,    -1,    -1,  2198,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  2214,    -1,    -1,    -1,     4,    -1,
+    1279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1042,    -1,
+      -1,    -1,  1251,    -1,   203,    -1,    -1,    -1,    -1,    -1,
+     209,    -1,    -1,    -1,    -1,    -1,  1305,    -1,    -1,  1308,
+      -1,    -1,  1066,    -1,    -1,    -1,    -1,    -1,  1317,  1318,
+      -1,    -1,    -1,    -1,    -1,  1324,    -1,    -1,    -1,    -1,
+      -1,    -1,  1331,    -1,    -1,    -1,   854,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1099,  1305,    -1,    -1,  1308,
+      -1,    -1,    -1,    -1,  2480,    -1,    -1,    -1,  1317,    -1,
+      -1,    -1,    -1,    -1,    -1,  1324,    -1,    -1,    -1,    -1,
+      -1,  1370,  1331,    -1,  1373,  1374,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1384,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1426,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    2452,    -1,    -1,    19,   147,    95,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2470,   109,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2480,    -1,
-      -1,  2483,    16,    -1,    -1,    51,    -1,    -1,    -1,    23,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  2296,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  2452,    -1,   147,  2307,    -1,
-    2309,    -1,   205,    -1,  2313,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,
-      -1,    -1,    -1,  2480,    -1,    -1,  2483,    -1,    -1,    -1,
-      -1,    -1,    -1,   183,    -1,    -1,    -1,    -1,    -1,    -1,
-     190,    -1,    -1,    -1,    -1,   195,   196,    -1,    -1,    -1,
-      -1,   201,    -1,    -1,    -1,   205,    -1,    -1,    -1,    -1,
-      -1,  2351,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   147,    -1,  2382,    -1,    -1,  2385,    -1,    -1,  2388,
-      -1,  2390,    -1,    -1,    -1,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   272,    -1,    -1,   201,    -1,    -1,    -1,   205,
-      -1,    -1,    -1,    -1,  2424,    -1,    -1,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,    -1,    -1,    -1,    -1,
-      -1,   321,    -1,    -1,    -1,   325,   326,   221,    -1,   223,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  2481,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2498,    -1,
-      -1,  2501,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
-      -1,    -1,    19,    -1,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+      -1,    -1,    -1,    -1,    -1,  1454,  1455,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1426,    -1,    -1,
+    1469,   295,   296,   297,   298,   299,   300,   301,   302,   303,
      304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,    19,    -1,    51,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    31,   288,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   315,    60,    61,    -1,    -1,    64,    95,    -1,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,  1498,
+    1499,  1500,  1501,  1502,    -1,    -1,  1505,    -1,    -1,  1508,
+      -1,    -1,  1511,  1512,  1513,  1514,  1515,  1516,    -1,  1518,
+    1519,    -1,    -1,    -1,  1523,  1524,  1525,    -1,  1527,  1528,
+      -1,    -1,    -1,    -1,  1533,  1534,    -1,    -1,    -1,  1498,
+    1499,  1500,  1501,  1502,    -1,    -1,  1505,    -1,    -1,  1508,
+      -1,    -1,  1511,  1512,  1513,  1514,  1515,  1516,    -1,  1313,
+    1519,    -1,    -1,    -1,    -1,  1524,  1525,    -1,    -1,  1528,
+       4,     5,    -1,    -1,    -1,  1534,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1554,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1567,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1577,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1371,    -1,    -1,
+      -1,    -1,    56,  1377,    -1,    -1,    -1,    -1,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    -1,    71,    -1,    -1,
+      -1,    -1,    76,    -1,    -1,    79,    -1,    -1,    -1,    -1,
+      -1,    85,    -1,    -1,    -1,  1654,    -1,    -1,  1657,    -1,
+      -1,    95,    -1,    -1,    -1,    -1,    -1,   101,    -1,  1668,
+      -1,    -1,  1671,    -1,  1428,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    51,  1203,    -1,   121,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    62,    -1,  1215,    -1,  1698,
+      -1,    -1,    -1,    -1,    -1,    -1,  1460,    -1,   142,  1668,
+      -1,    -1,  1671,    -1,  1468,  1233,  1234,    -1,    -1,    -1,
+      87,    88,    -1,    -1,   158,    -1,    -1,    -1,    95,    -1,
+      -1,    -1,   166,   167,   101,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1496,    -1,    -1,    -1,    -1,    -1,    -1,  1503,
+     117,    -1,   186,  1834,   121,    -1,  1755,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1846,    -1,  1848,    -1,  1850,
+      -1,    -1,   206,  1854,    -1,   142,  1857,    -1,  1859,    -1,
+      -1,    -1,  1863,   150,  1865,   219,  1867,   221,    -1,    -1,
+    1871,    -1,  1873,    -1,    -1,    -1,  1877,    -1,   232,  1880,
+      -1,  1882,    -1,   237,  1885,    -1,    -1,    -1,    -1,   243,
+      -1,    -1,    -1,    -1,    -1,    -1,   250,    -1,    -1,   186,
+      -1,    -1,    -1,    -1,    -1,    -1,   193,  1826,    -1,    -1,
+      -1,    -1,    -1,    -1,   268,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   281,   282,    -1,
+     284,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   232,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   243,  1876,    -1,    -1,
+      -1,    -1,  1841,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     324,   258,    -1,    -1,    -1,    -1,  1650,    -1,  1652,    -1,
+      -1,   268,    -1,   270,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1992,    -1,    -1,  1995,    -1,    -1,    -1,  1672,  2000,
+      -1,    -1,    -1,  2004,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1890,    -1,    -1,    -1,  1903,    -1,    -1,    -1,    -1,
+      -1,  2022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1703,
+      -1,  1705,    -1,    -1,    -1,    -1,    -1,   324,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1721,    -1,  1723,
+      -1,    -1,  1726,    -1,  1728,  1943,  1944,  1945,  1946,  1947,
+      -1,  1949,  1950,    -1,    -1,    -1,  1954,  1955,  1956,  1957,
+    1958,    -1,  1960,  1961,    -1,  1994,    -1,    -1,  1997,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2007,    -1,
+      -1,    -1,  1766,    -1,    -1,  1769,  1770,    -1,  2099,    -1,
+      -1,    -1,  2021,    -1,  1778,  2024,    -1,    -1,    -1,    -1,
+      -1,    -1,  2031,    -1,    -1,  1994,    -1,  2036,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  2126,  1800,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1573,    -1,    -1,    -1,    -1,
+      -1,    -1,  2021,  1581,  1582,    -1,    -1,    -1,    -1,    -1,
+    1824,  1825,  2031,    -1,    -1,    -1,    -1,    -1,  1596,  1597,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1607,
+    1608,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1852,    -1,
+    1618,  1619,    -1,    20,    21,    22,    -1,  1861,    -1,    -1,
+    1628,  1629,    -1,    -1,    -1,  1869,  1634,    -1,    -1,    -1,
+    1874,    -1,  2203,    -1,  1878,    -1,  1644,    44,    45,  1883,
+      -1,    48,  1886,    -1,    -1,    -1,    -1,    -1,    55,    -1,
+      -1,    58,  2223,    -1,    -1,    62,    -1,    -1,    -1,    -1,
+      -1,    -1,  2233,    70,    71,    -1,    -1,    -1,  2239,    -1,
+      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  2139,    -1,    -1,  2142,  2143,  2144,  2145,  2146,    -1,
+    2148,  2149,    -1,    -1,    -1,    -1,   103,   104,    -1,   106,
+      -1,    -1,  2160,  2161,  2162,  2163,  2164,    -1,  2166,  2167,
+      -1,  2169,    -1,  2202,   121,    -1,    -1,    -1,    -1,    -1,
+      -1,  2179,  2180,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  2190,    -1,    -1,   142,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,
+      -1,  2240,    -1,  2202,    -1,    -1,    -1,   164,    -1,    -1,
+    2331,    -1,    -1,  2252,    -1,    -1,   173,    -1,    -1,    -1,
+       3,     4,    -1,    -1,    -1,    -1,    -1,    -1,  2349,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    36,    -1,    -1,   213,    -1,    -1,    -1,
+      -1,    -1,    -1,   220,   221,    -1,    -1,    -1,  2062,    52,
+      -1,    -1,    -1,    -1,    -1,    -1,   233,    -1,    -1,    -1,
+      -1,  2402,    -1,  2404,    -1,  2406,   243,  2408,    -1,  2410,
+      -1,  2412,    -1,    -1,    -1,  2334,  2335,    -1,  2337,  2307,
+      -1,    -1,  2341,  2342,    -1,    -1,    -1,  2346,    -1,    -1,
+    2318,   268,  2320,   270,    97,    -1,  2324,    -1,    -1,    -1,
+      -1,    -1,    -1,   280,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  2371,   290,    -1,  2334,    -1,    -1,    -1,    -1,
+      -1,    -1,  2341,    -1,    -1,    -1,  1904,    -1,    -1,     3,
+       4,    -1,    -1,    -1,    -1,    -1,  1914,    -1,    -1,    -1,
+    1918,  1919,    -1,    -1,    -1,    19,   149,   324,    -1,  1927,
+    1928,    -1,    -1,    -1,    -1,  2496,    -1,    -1,  1936,  1937,
+      -1,    -1,    -1,  2391,  1942,    -1,  2394,    -1,    -1,  2397,
+      -1,  2399,    -1,    -1,  1952,  1953,    -1,    -1,    52,    -1,
+      -1,    -1,   185,    -1,    -1,  1963,  1964,    -1,    -1,    -1,
+      -1,    -1,    -1,  2207,    -1,    -1,  1974,  2211,    -1,    -1,
+     203,  2460,    -1,    -1,    -1,  1983,   209,  1985,    -1,    -1,
+      -1,    -1,    -1,  2227,    -1,    -1,   219,  2476,    -1,    -1,
+      -1,    -1,    -1,    97,    -1,    -1,    -1,  2486,    -1,    -1,
+    2489,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  2460,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     147,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       3,     4,    -1,    -1,    -1,    -1,    -1,  2486,    -1,    -1,
+    2489,    -1,    -1,   276,    -1,   149,    19,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
+      -1,    -1,     4,    -1,    -1,    -1,    -1,    -1,    -1,   203,
+      -1,    -1,    -1,    -1,    -1,   209,    -1,    19,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  2361,    -1,    -1,
+      -1,    -1,    -1,    -1,    97,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  2140,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      52,    -1,  2150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  2159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    2168,    -1,    -1,    -1,    -1,    -1,    -1,  2175,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   149,    -1,  2186,    -1,
+      -1,    -1,    -1,    -1,  2192,    97,    -1,  2195,  2432,    -1,
+    2198,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     147,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   201,    -1,    -1,    -1,   205,   176,
+      -1,    -1,    -1,    -1,    -1,    -1,   209,   149,    -1,    -1,
+      -1,    -1,    -1,  2487,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  2502,    -1,
+      -1,  2505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   205,    -1,
+      -1,    -1,    -1,    18,    19,    -1,    -1,    -1,    -1,    -1,
+      -1,   203,    -1,    -1,    -1,    -1,  2304,   209,    -1,    -1,
+    2308,    -1,    -1,    -1,    -1,    -1,    -1,  2315,    -1,    -1,
+      -1,    -1,    -1,  2321,    -1,    -1,    -1,  2325,    -1,    54,
+    2328,    -1,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   256,
+      -1,    -1,    97,    -1,    -1,    -1,    -1,    -1,    -1,    19,
+      -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    31,    -1,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,    61,    62,    -1,   149,    65,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   249,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,   314,   315,    -1,
-      -1,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,   314,   315,    -1,
-     317,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     149,    -1,    -1,    -1,    -1,    -1,   155,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    43,    44,    -1,    -1,    47,    -1,    19,
-      50,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
-      -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    19,    -1,
-      -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    99,
-      -1,   101,   102,    -1,   104,    -1,    -1,    -1,    -1,    -1,
-      51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
-      -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,    19,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   149,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     140,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,
-      19,    -1,   162,    -1,    54,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   147,    -1,    -1,
-      -1,    -1,    -1,    -1,   184,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    95,   147,   207,    -1,   209,
-      -1,    -1,    -1,    -1,   214,   215,   216,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,   228,    -1,
-      -1,   201,    -1,    -1,    -1,   205,    95,    -1,   238,    -1,
+      -1,    -1,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   178,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   147,    -1,    -1,
-     201,   261,    -1,   263,   205,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   275,    -1,   277,    -1,    -1,
-      -1,    -1,    -1,   283,    -1,    -1,    -1,    -1,   147,   259,
+      -1,    -1,    -1,    -1,    -1,   195,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   209,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   205,    -1,   317,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   205,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-     311,   312,   313,   314,   315,   265,    95,   147,    -1,    -1,
-      -1,    -1,    -1,   153,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,    -1,    -1,   147,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+      -1,    -1,    -1,    -1,    -1,   255,   295,   296,   297,   298,
      299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   205,    -1,    -1,    -1,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,    -1,   324,    20,    21,    22,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
+      45,    -1,    -1,    48,    -1,    19,    51,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    -1,    -1,    -1,    62,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    70,    71,    -1,    -1,    -1,
+      -1,    -1,    -1,    78,    79,    -1,    -1,    -1,    52,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,    -1,    -1,    -1,    -1,
+      95,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,   104,
+      19,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   121,    -1,    -1,    -1,
+      -1,    -1,    -1,    97,    -1,    -1,    -1,    -1,    19,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    55,   142,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,    21,    22,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   164,
+      -1,    52,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   149,    -1,    -1,    97,    -1,
+      -1,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,
-      44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    -1,    57,    38,    -1,    40,    61,    -1,    -1,
-      -1,    -1,    -1,    -1,    68,    69,    -1,    -1,    -1,    -1,
-      54,    -1,    76,    -1,    -1,    59,    60,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-      -1,    -1,    -1,    -1,    78,    -1,    80,   101,   102,    -1,
-     104,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    97,    -1,   213,    -1,
+     215,    -1,    -1,    -1,    -1,   220,   221,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   232,   233,   203,
+     149,    -1,    -1,    -1,    -1,   209,    -1,    -1,   243,    -1,
+      97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   149,    -1,
+      -1,    -1,    -1,   268,    -1,   270,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   282,    -1,   284,
+      -1,    -1,    -1,    -1,    -1,   290,    -1,    -1,    -1,   263,
+     209,    -1,   149,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     114,    -1,    -1,    -1,    -1,    -1,   140,    -1,    -1,    -1,
-      -1,    -1,   126,    -1,    -1,    -1,   130,    -1,    -1,   133,
-      -1,    -1,    -1,    -1,   138,    -1,   140,    -1,   162,    -1,
-      -1,    -1,   146,    -1,    -1,    -1,    -1,   171,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   209,   324,
+      -1,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,    -1,
+      -1,    -1,   209,   272,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   165,    -1,    -1,    -1,   169,   170,    -1,    -1,   173,
-     174,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   186,   207,    -1,    -1,    -1,    38,    -1,    40,
-     214,   215,   216,    -1,    -1,   199,   200,   201,    -1,    -1,
-      -1,    -1,    -1,    -1,   228,    -1,   210,    -1,    -1,    60,
-      -1,    62,    63,    64,   238,    -1,   220,    -1,    -1,   223,
-      71,   225,    73,   227,    -1,    -1,    -1,    78,   232,    80,
-      -1,    82,    -1,    -1,    -1,    -1,    87,   261,    89,   263,
-     244,    -1,    -1,    -1,    -1,   249,    -1,    -1,    -1,   273,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   283,
-      -1,   265,   113,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   276,    -1,   278,    -1,    -1,    -1,    -1,   130,
-     284,    -1,    -1,   287,   288,    -1,    -1,    -1,    -1,    -1,
-      -1,   142,   143,   317,    -1,   146,    -1,    -1,    -1,   150,
-      -1,    -1,    -1,   153,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   318,    -1,    -1,    -1,    -1,    -1,
-     324,    -1,   173,   174,    -1,    -1,   177,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   199,   200,
-      -1,    -1,    -1,    -1,    -1,   206,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,    -1,    -1,    -1,    -1,    -1,    -1,   295,   296,
+     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
+     317,   318,   319,   320,   321,   322,    38,    -1,    40,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   225,    -1,   227,    -1,    -1,    -1,
+      -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      -1,    -1,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    -1,
+      82,    -1,    -1,    38,    -1,    40,    -1,    -1,    -1,    91,
+      92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    61,    -1,    63,    64,
+      65,    -1,    -1,    -1,   116,    -1,    -1,    -1,    73,    -1,
+      75,    -1,    -1,    -1,    -1,    80,   128,    82,    -1,    84,
+     132,    -1,    -1,   135,    89,    -1,    91,    -1,   140,    -1,
+     142,    -1,    -1,    -1,    -1,    -1,   148,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   249,    -1,
+     115,    -1,    -1,    -1,    -1,   167,    -1,    -1,    -1,   171,
+     172,    -1,    -1,   175,   176,    -1,    -1,   132,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   188,    -1,    -1,   144,
+     145,    -1,    -1,   148,    -1,    -1,    -1,   152,    -1,   201,
+     202,   203,   155,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   216,    -1,    -1,    -1,    -1,    -1,
+     175,   176,    -1,   225,   179,    -1,   228,    -1,   230,    -1,
+     232,    -1,    -1,   188,    -1,   237,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   201,   202,   250,    -1,
+      -1,    -1,    -1,   255,    -1,   210,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   273,    -1,    -1,    -1,    -1,    -1,    -1,   280,
-      -1,    -1,    -1,    -1,    -1,   286,    -1,   288,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,    -1,    -1,    -1,
-      -1,    -1,    -1,   324
+     272,    -1,    -1,    -1,    -1,   230,    -1,   232,    -1,    -1,
+      -1,   283,    -1,   285,    -1,    -1,    -1,    -1,    -1,   291,
+      -1,    -1,   294,   295,    -1,    -1,    -1,    -1,    -1,    -1,
+     255,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   272,    -1,    -1,
+      -1,    -1,    -1,   325,    -1,   280,    -1,    -1,    -1,   331,
+      -1,    -1,   287,    -1,    -1,    -1,    -1,    -1,   293,    -1,
+     295,    -1,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
+     323,    -1,    -1,    -1,    -1,    -1,   331
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,    38,    40,    54,    59,    60,    63,    64,    71,    78,
-      80,    89,    90,   114,   126,   130,   133,   138,   140,   146,
-     165,   169,   170,   173,   174,   186,   199,   200,   201,   210,
-     220,   223,   225,   227,   232,   244,   249,   265,   276,   278,
-     284,   287,   288,   318,   324,   330,    61,    12,    48,    66,
-      94,   108,   111,   123,   269,   357,   177,   182,   213,   236,
-     279,   323,   362,     4,    37,   103,   183,   225,   369,    28,
-     141,   163,   167,   211,   245,   253,   254,   345,   371,    31,
-      61,    74,    77,    85,    93,   165,   203,   232,   317,   372,
-       3,     4,    37,    54,   103,   183,   265,   331,   376,     4,
-      19,    37,    51,    95,   109,   147,   183,   190,   195,   196,
-     201,   205,   272,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   321,   325,   326,   333,   342,   343,   344,   378,
-     333,    29,    40,    70,    78,   131,   181,   202,   204,   225,
-     288,   332,   333,   133,   379,    38,    40,    60,    62,    63,
-      64,    71,    73,    78,    80,    82,    87,    89,   113,   130,
-     142,   143,   146,   150,   173,   174,   177,   186,   199,   200,
-     206,   225,   227,   249,   265,   273,   280,   286,   288,   324,
-     380,    77,    93,   418,    19,    71,    78,    88,    89,    95,
-     113,   130,   146,   154,   173,   205,   249,   259,   288,   420,
-     333,    82,   106,   175,   188,   239,   278,   288,   425,    26,
-     113,   149,   428,   212,   444,     5,    61,    82,   128,   278,
-     324,   333,   445,    52,   208,   279,   461,    59,    61,   172,
-     268,   480,    61,   191,   320,   325,   327,   481,    36,   183,
-     213,   269,   331,   342,   344,   482,     5,   278,   288,   333,
-     485,    65,   160,   224,   233,   486,   461,    56,   259,   282,
-     492,   183,   269,   331,   493,    26,   113,   495,    45,    93,
-     125,   271,   501,   502,   140,   176,   264,   266,   282,   356,
-       4,   113,   192,   503,   269,   331,   505,    16,    23,   221,
-     223,   343,   506,   212,   510,   269,   331,   511,     0,     5,
-      54,   331,   358,   246,     5,     4,   269,   331,   359,     5,
-      32,   258,   360,   112,   331,   361,   182,   229,   366,   177,
-     279,   322,   323,   331,   365,   333,   127,   166,   364,   139,
-     168,   331,   363,    72,   162,   229,   368,   331,     4,   225,
-     370,   331,   331,   134,   189,   232,   373,     5,   342,     5,
-     209,   374,     4,    17,     5,     5,     5,     4,   331,     9,
-      10,    11,   331,   338,   339,   340,   341,   331,   331,    37,
-     103,   183,   331,   377,   331,   183,   342,   344,   331,    33,
-     100,   116,   117,   118,   124,   137,   144,   155,   257,   346,
-     331,   333,   333,   333,   333,   333,   333,   333,   333,   333,
-     333,   107,    61,    48,    66,    82,    94,   108,   111,   123,
-     164,   381,   177,   182,   213,   236,   279,   322,   323,   331,
-     383,   384,   160,   387,   160,   167,   389,    31,    60,    61,
-      64,    85,   160,   176,   193,   249,   317,   342,   391,   120,
-     269,   331,   344,   395,    54,   265,   342,   396,   256,   342,
-     344,   397,   342,   344,   398,     4,   342,   344,   399,    41,
-      54,    75,    94,   107,   110,   135,   136,   187,   194,   246,
-     247,   317,   403,   198,   408,     5,    83,     6,    82,   110,
-     136,   317,   401,     5,    60,   344,   400,   461,    61,   172,
-     268,   409,    61,   213,   410,   260,    56,   259,   282,   411,
-      92,   115,   151,   235,   334,   412,   123,   219,   413,   140,
-     176,   264,   282,   414,   344,    83,    16,   185,   415,   334,
-     417,   342,    31,   421,    40,    81,   181,   422,   140,   203,
-     238,   274,   423,   342,    18,    53,   105,   342,   424,     4,
-     182,   427,     5,     4,     6,   110,   331,     5,   225,   429,
-       5,   107,   181,   225,   247,   431,    87,   103,   177,   443,
-       4,     5,   333,   333,   331,   331,     4,     5,    55,    61,
-      67,    69,    74,    77,    83,    93,    99,   119,   140,   156,
-     164,   165,   184,   203,   213,   216,   227,   232,   238,   244,
-     261,   274,   275,   277,   317,   446,     5,     4,   331,     5,
-     331,    37,   103,   331,   484,   333,   331,   342,   344,   483,
-     331,   346,   331,     4,   343,    49,    84,   129,   225,   487,
-       4,     4,   331,   140,   238,   488,     5,   342,     4,    37,
-     103,   331,   494,   331,    91,    56,   110,   250,   496,   147,
-     222,   260,   497,     4,   333,    13,   178,   491,     4,   331,
-     331,   331,   247,     4,   331,   331,     4,   509,     4,   263,
-     507,     4,   263,   508,     4,   346,   112,   331,   512,   331,
-     331,     4,     5,   331,    12,   331,   331,    30,    88,   154,
-     229,   234,   367,     4,   331,   331,   331,   331,     4,     4,
-     331,   331,   331,   331,     5,   346,     4,   460,   468,     4,
-       4,   342,   331,   331,   338,   340,   340,   342,   331,   331,
-     331,   331,   331,   331,   331,   342,   344,   341,   331,   331,
-     341,   331,     5,   246,    97,   177,   382,   182,   229,   385,
-     160,    72,   162,   229,   386,     4,   388,     4,   390,    61,
-      85,   317,   392,   182,   393,   167,   394,   160,   346,   331,
-     331,   331,   342,   331,   342,   342,   346,   346,   346,   342,
-     346,   331,   342,     4,   405,   344,   185,     4,   288,   404,
-     185,   342,     4,   407,     5,     5,     4,   185,   331,     4,
-       5,    55,    61,   119,   132,   140,   145,   193,   209,   213,
-     216,   238,   244,   261,   317,   455,   344,   331,     5,   208,
-     416,   343,   346,   342,   342,     4,   333,     4,     4,   185,
-     331,    14,    15,    56,   179,   180,   241,   250,   251,   281,
-      81,     5,    14,    15,    56,   179,   180,   241,   250,   251,
-     255,   281,    81,   147,   153,   343,   434,   438,    81,   147,
-     440,     5,   432,     4,     4,     4,   331,    21,    22,    43,
-      44,    47,    50,    57,    61,    68,    69,    76,    77,    93,
-      99,   101,   102,   104,   119,   140,   162,   184,   207,   209,
-     214,   215,   216,   227,   228,   238,   261,   263,   275,   277,
-     283,   317,    61,    74,    83,    93,   119,   140,   184,   216,
-     238,   275,   277,     4,    30,   152,   198,   219,   449,     5,
-      58,    98,   218,   230,   231,   319,   320,   454,    93,   447,
-      17,    37,   103,   183,   453,     5,    17,   197,   270,   331,
-     238,   454,   462,   113,   454,   463,    34,    37,   103,   121,
-     183,   269,   331,   464,   342,   333,    85,    93,    99,   115,
-     140,   148,   184,   191,   227,   238,   252,   467,    37,   103,
-     183,     5,   262,    17,   197,   270,   471,   263,   333,   472,
-       5,    93,    99,   278,    17,    17,     4,   331,   331,   331,
-     331,   331,   346,   331,   331,   341,   331,     4,   346,    37,
-     103,   183,   242,   489,    37,   103,   183,   242,   490,     4,
-      91,     5,     5,     4,    56,   110,   250,   498,    56,   110,
-     250,   500,    56,   110,   250,   499,   331,   331,     4,   504,
-     331,   331,     6,   343,     4,     5,     4,     4,     5,     4,
-      91,   240,   347,   331,   331,    12,     5,    12,   331,   331,
-      12,     4,    12,     4,   331,   331,   331,   342,     4,    50,
-      61,    86,   119,   261,   263,   317,   465,   466,   467,   478,
-     479,     4,     4,   346,   346,   331,   331,   331,   342,   331,
-     341,   331,   331,     5,     5,   331,   344,   331,   342,   342,
-     342,     4,   331,   346,   347,   347,   347,   346,   341,   331,
-     346,   331,   122,   226,   335,   406,   157,     4,   346,     5,
-       4,     4,   331,   402,   331,    21,    22,    43,    44,    47,
-      54,    57,    61,    68,    69,    76,   101,   102,   104,   119,
-     140,   162,   171,   207,   214,   215,   216,   228,   238,   261,
-     263,   273,   283,   317,    61,   119,   145,   216,   261,    30,
-     152,   198,   219,   456,   331,   193,   331,   457,    17,   331,
-     237,   467,   193,   331,   458,   263,   459,    17,    92,   331,
-     331,     5,   347,    51,   342,     4,     5,   426,   331,     5,
-       5,     5,   147,   174,   352,   352,   156,   243,   350,     4,
-       4,     5,     5,   430,   248,     5,     5,     5,    17,   149,
-     351,   351,   350,     4,     4,   350,     5,     5,   433,   153,
-     316,   343,   437,     5,   436,     5,     5,   441,     5,   442,
-       5,    14,    15,    56,   179,   180,   241,   250,   251,   255,
-     281,     4,     4,     7,     8,   331,   337,   219,   219,   219,
-      99,    37,    61,    93,    99,   103,   119,   140,   156,   184,
-     216,   227,   238,   263,   275,   277,   278,   317,   448,   219,
-       5,    27,   158,   219,   259,   127,    99,    22,    44,    47,
-      76,   102,   104,   209,    22,    44,    47,    50,    76,   102,
-     104,   209,   261,    37,   219,   219,    99,     5,   197,    27,
-     207,    34,   121,   269,   331,   246,   223,   259,   342,   344,
-     259,   331,   467,    37,   207,   259,   197,     5,     5,   227,
-      27,   207,     4,     5,     5,   197,    34,   121,   269,   331,
-     467,   197,   333,     4,     4,   331,     5,   281,    22,    27,
-      43,    44,    46,    47,    57,    68,    69,    76,    79,    96,
-     101,   102,   104,   162,   209,   214,   215,   228,   262,   263,
-     283,   327,   450,   331,   331,   331,   331,   331,   454,   342,
-       5,     4,     5,   331,   331,   342,   344,   331,   342,   333,
-     331,   331,   454,     5,   331,   331,   333,     5,    17,     5,
-       5,   331,   331,   341,   331,   331,   331,   331,   103,   331,
-     331,   103,     4,    39,   161,   355,   355,   355,     5,     5,
-       4,     5,     5,     4,     5,     5,     4,   331,     4,   331,
-     343,   346,     5,     5,    12,   331,   342,   344,   331,    12,
-     331,   331,   331,    54,   331,     6,     4,   331,   331,   346,
-      42,   249,   375,   328,   328,   328,   328,   328,   328,   328,
-     466,   328,     5,     6,   331,     4,     4,     4,   342,   331,
-     331,   331,   331,     4,     4,   346,   342,   347,   334,   334,
-     341,   331,     4,   347,   331,    35,   265,    35,   265,     4,
-     344,     5,    24,    25,    91,   348,   331,     4,   331,     5,
-     342,   344,   219,   219,   219,    21,   219,   342,   344,   219,
-      27,   158,   219,   259,   127,    21,   219,   219,   219,    21,
-     219,    27,   159,   207,   159,   246,     5,   159,   176,   207,
-     259,   267,     5,   176,   219,   259,   467,   159,   207,   259,
-       4,   227,    27,   159,   207,   467,   193,   331,   331,   331,
-     331,   331,   185,   331,   331,    20,   217,   419,     4,     4,
-     331,   352,   352,   352,     4,   352,   352,   352,    14,    15,
-      56,   179,   180,   241,   250,   251,   281,   351,   352,   352,
-     352,   352,   352,     4,   352,   352,     4,   351,    14,    15,
-      56,   179,   180,   241,   250,   251,   281,     5,   435,     5,
-     439,     5,     5,    14,    15,    56,   179,   180,   241,   250,
-     251,   255,   281,     5,    14,    15,    56,   179,   180,   241,
-     250,   251,   255,   281,     5,    14,    15,    56,   179,   180,
-     241,   250,   251,   255,   281,    14,    15,    56,   179,   180,
-     241,   250,   251,   281,   248,     5,     5,     5,   351,   351,
-     350,     4,     4,   350,     5,     4,     4,   342,   344,     5,
-     331,   331,     5,   331,     5,   337,    99,   184,   227,    99,
-     184,   227,     5,   331,   333,     5,   331,   342,   333,     5,
-     337,   219,   219,    21,   219,    21,   219,   219,    21,   219,
-     285,     4,     4,     4,   448,     4,     4,     4,   285,     4,
-       5,     4,   331,     5,   331,     5,   337,   333,   342,   344,
-     342,   344,   331,     4,   331,   342,   346,   341,   342,   342,
-     344,   333,   342,   344,   342,   333,   333,   342,   344,   342,
-     344,   331,   333,   331,     5,   331,   207,   207,   331,   331,
-     207,   331,   207,   331,   331,   468,   331,   207,   207,   331,
-     331,   331,   331,   331,   331,   331,   331,     5,   281,   331,
-     451,   331,   331,   207,   331,   331,   331,   331,   342,   346,
-       5,   342,   342,   331,   331,   346,   341,   331,   331,   331,
-     342,   331,   331,     5,   331,   331,   331,   331,   131,   191,
-     353,   353,   353,   353,   353,   353,   353,   353,   353,   331,
-     331,   331,   342,   344,   331,   346,   331,   331,   331,   331,
-     331,     5,   331,     6,     6,   331,   331,     4,   448,     5,
-       4,     5,     5,     5,     4,   333,   342,   342,   331,   346,
-     167,   345,   331,   345,   347,   346,   342,   331,   331,     4,
-     334,   331,   334,   331,     4,   346,   342,   344,   342,   344,
-     342,   344,   342,   344,   342,   344,   346,   342,   344,   342,
-     344,   342,   344,   342,   344,   342,   344,   342,   344,   342,
-     344,   342,   344,   342,   342,   344,   331,     5,   342,   342,
-     344,   342,   344,     5,   342,   342,   342,   344,   342,   342,
-     344,   331,     4,   331,     5,     4,   331,   352,     5,     5,
-       5,   350,     4,     4,     5,   352,   351,     4,   352,     5,
-       5,     5,   351,   351,   350,     4,     4,     5,    14,    15,
-      56,   179,   180,   241,   250,   251,   281,    14,    15,    56,
-     179,   180,   241,   250,   251,   281,    14,    15,    56,   179,
-     180,   241,   250,   251,   281,   248,     5,     5,     5,   351,
-     351,   350,     4,     4,   350,     5,   248,     5,     5,     5,
-     351,   351,   350,     4,     4,   350,     5,   248,     5,     5,
-       5,   351,   351,   350,     4,     4,   350,     5,     5,     5,
-       5,   351,   351,   350,     4,     4,     5,   351,     4,     4,
-     351,     4,     4,   346,   342,   331,   331,   342,   331,     5,
-     337,     5,   342,   344,   333,     5,   342,   344,   346,     5,
-     337,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-       4,     5,     4,   331,   342,   331,     5,   337,   333,   346,
-     341,   346,   331,   331,   346,   341,   341,   348,     4,   346,
-     341,   346,   346,   341,   346,   341,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     331,   331,   331,   331,   331,   331,   331,   331,   342,     5,
-     331,   331,   331,   331,     4,     4,   346,   347,     4,   452,
-     346,   346,   341,   331,     4,   346,   331,   331,   346,   331,
-     341,   331,   331,    12,     5,     5,     4,     6,   331,   331,
-       4,     5,     4,   346,   346,   342,   331,   331,   347,   348,
-     331,     5,   331,   344,   348,   348,   348,   346,   348,   347,
-     348,   348,   346,   348,   348,   348,   346,   348,   348,   346,
-     342,     5,   348,   346,   348,     5,   348,   348,   346,   348,
-     346,     4,   344,   331,     4,   352,   351,     4,   351,     5,
-       5,     5,   351,   351,   350,     4,     4,     5,     5,     5,
-       5,   351,   351,   350,     4,     4,     5,     5,     5,     5,
-     351,   351,   350,     4,     4,     5,   351,   352,   352,   352,
-     352,   352,     4,   352,   352,     4,   351,   351,   352,   352,
-     352,   352,   352,     4,   352,   352,     4,   351,   351,     4,
-       4,   351,     4,   351,   351,     4,     4,     4,   348,     4,
-     342,   344,   348,   331,   342,     4,   348,   348,   342,     4,
-     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-     342,   344,   348,   331,   342,     4,   341,   341,   341,   331,
-     342,   344,   341,   331,     4,   341,   341,   342,   341,   331,
-     341,   331,   331,   331,   331,   331,   331,   337,   331,   331,
-     331,   337,   331,   331,   331,   331,   337,   331,   331,   331,
-     331,   331,   331,   346,   331,   281,   336,   337,   331,   331,
-     347,   333,     4,     4,   347,   341,   331,    54,   331,     5,
-       5,     4,   331,     4,   345,     5,   348,     5,   347,   348,
-       5,   347,   347,   347,     5,   331,   352,   351,   352,   352,
-     352,   352,   352,     4,   352,   352,   351,     4,   351,   352,
-     352,   352,   352,   352,     4,   352,   352,   351,   352,   351,
-       4,   352,   352,   351,     4,   352,   351,     4,   351,   351,
-     342,   344,   348,     4,   346,   331,   346,   331,   331,   348,
-       4,   346,   331,   341,   348,   331,     4,   341,   348,   342,
-     337,   331,     4,   354,   354,   331,   331,   354,   337,   354,
-     468,   342,   337,   354,   354,   331,   331,   337,   331,   331,
-     331,     5,   468,   331,   341,   331,     5,   468,   331,   354,
-     333,   469,   470,     5,   333,     5,   331,     5,     4,     6,
-     331,   331,   351,   352,   351,   351,   352,   352,   351,   352,
-     351,   351,   348,   342,   344,   342,   331,   342,   331,   342,
-     344,   342,   331,     4,   348,     4,   468,   468,   336,   331,
-     468,     4,   468,   346,     4,   468,   468,   336,   331,     4,
-     468,   468,   331,     5,   342,   468,   468,   469,   475,   476,
-     467,   473,   474,     5,     5,     6,     4,   177,   279,   322,
-     323,   331,   349,     4,   352,   352,   352,   352,   348,   348,
-     331,   348,     4,   348,   348,   331,   342,   331,   468,   468,
-       4,   331,   468,   331,   468,     4,   331,     5,   468,   468,
-     346,   475,   477,   478,   328,   474,     5,     5,     4,   331,
-       4,   342,   344,     4,   348,   337,   336,   331,   331,   336,
-     331,     5,   342,   478,   333,     5,     5,   331,   342,   344,
-     346,   342,   344,   468,   331,     4,   468,   331,   468,   348,
-       5,     5,   346,   346,     4,   468,     4,   468,   336,   336,
-     468,   468
+       0,    38,    40,    55,    60,    61,    64,    65,    73,    80,
+      82,    91,    92,   116,   128,   132,   135,   140,   142,   148,
+     167,   171,   172,   175,   176,   188,   201,   202,   203,   216,
+     225,   228,   230,   232,   237,   250,   255,   272,   283,   285,
+     291,   294,   295,   325,   331,   337,    62,    12,    49,    67,
+      96,   110,   113,   125,   276,   367,   179,   184,   219,   241,
+     286,   330,   372,     4,    37,   105,   185,   230,   379,    28,
+     143,   165,   169,   217,   251,   259,   260,   352,   381,    31,
+      62,    76,    79,    87,    95,   167,   206,   237,   324,   382,
+       3,     4,    37,    55,   105,   185,   272,   338,   386,     4,
+      19,    37,    52,    97,   111,   149,   185,   192,   197,   198,
+     203,   209,   279,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
+     321,   322,   328,   332,   333,   340,   349,   350,   351,   388,
+     340,    29,    40,    72,    80,   133,   183,   205,   207,   230,
+     295,   339,   340,   135,   389,    38,    40,    61,    63,    64,
+      65,    73,    75,    80,    82,    84,    89,    91,   115,   132,
+     144,   145,   148,   152,   175,   176,   179,   188,   201,   202,
+     210,   230,   232,   255,   272,   280,   287,   293,   295,   331,
+     390,    79,    95,   428,    19,    40,    73,    80,    90,    91,
+      97,   115,   132,   148,   156,   175,   209,   255,   266,   295,
+     430,   340,    84,   108,   177,   190,   244,   285,   295,   436,
+      26,   115,   151,   208,   439,   218,   455,     5,    62,    84,
+     130,   285,   331,   340,   456,    53,   214,   286,   472,    60,
+      62,   174,   275,   491,    62,   193,   327,   332,   334,   492,
+      36,   185,   219,   276,   338,   349,   351,   493,     5,   285,
+     295,   340,   496,    66,   162,   229,   238,   497,   472,    57,
+     266,   289,   503,   185,   276,   338,   504,    26,   115,   208,
+     506,    46,    95,   127,   278,   512,   513,   142,   178,   271,
+     273,   289,   366,     4,   115,   194,   514,   276,   338,   516,
+      16,    23,   226,   228,   350,   517,   218,   521,   276,   338,
+     522,     0,     5,    55,   338,   368,   252,     5,     4,   276,
+     338,   369,     5,    32,   265,   370,   114,   338,   371,   184,
+     234,   376,   179,   286,   329,   330,   338,   375,   340,   129,
+     168,   374,   141,   170,   338,   373,    74,   164,   234,   378,
+     338,     4,   230,   380,   338,   338,   136,   191,   237,   383,
+       5,   349,     5,   215,   384,     4,    17,     5,     5,     5,
+       4,   338,     9,    10,    11,   338,   345,   346,   347,   348,
+     338,   338,    37,   105,   185,   338,   387,   338,   185,   349,
+     351,   338,    33,   102,   118,   119,   120,   126,   139,   146,
+     157,   264,   353,   338,   340,   340,   340,   340,   340,   340,
+     340,   340,   340,   340,   109,    62,    49,    67,    84,    96,
+     110,   113,   125,   166,   391,   179,   184,   219,   241,   286,
+     329,   330,   338,   393,   394,   162,   397,   162,   169,   399,
+      31,    61,    62,    65,    87,   162,   178,   195,   255,   324,
+     349,   401,   122,   276,   338,   351,   405,    55,   272,   349,
+     406,   263,   349,   351,   407,   349,   351,   408,     4,   349,
+     351,   409,    41,    55,    77,    96,   109,   112,   137,   138,
+     189,   196,   252,   253,   324,   413,   200,   418,     5,    85,
+       6,    84,   112,   138,   324,   411,     5,    61,   351,   410,
+     472,    62,   174,   275,   419,    62,   219,   420,   267,    57,
+     266,   289,   421,    94,   117,   153,   240,   341,   422,   125,
+     224,   423,   142,   178,   271,   289,   424,   351,    85,    16,
+     187,   425,   341,   427,   349,    68,   431,    31,   432,    40,
+      83,   183,   433,   142,   206,   243,   281,   434,   349,    18,
+      54,   107,   349,   435,     4,   184,   438,     5,     4,     6,
+     112,   338,     5,   230,   440,     5,   109,   183,   230,   253,
+     442,    89,   105,   179,   454,     5,     4,     5,   340,   340,
+     338,   338,     4,     5,    56,    62,    69,    71,    76,    79,
+      85,    95,   101,   121,   142,   158,   166,   167,   186,   206,
+     219,   221,   232,   237,   243,   250,   268,   281,   282,   284,
+     324,   457,     5,     4,   338,     5,   338,    37,   105,   338,
+     495,   340,   338,   349,   351,   494,   338,   353,   338,     4,
+     350,    50,    86,   131,   230,   498,     4,     4,   338,   142,
+     243,   499,     5,   349,     4,    37,   105,   338,   505,   338,
+      93,    57,   112,   256,   507,   149,   227,   267,   508,     5,
+       4,   340,    13,   180,   502,     4,   338,   338,   338,   253,
+       4,   338,   338,     4,   520,     4,   270,   518,     4,   270,
+     519,     4,   353,   114,   338,   523,   338,   338,     4,     5,
+     338,    12,   338,   338,    30,    90,   156,   234,   239,   377,
+       4,   338,   338,   338,   338,     4,     4,   338,   338,   338,
+     338,     5,   353,     4,   471,   479,     4,     4,   349,   338,
+     338,   345,   347,   347,   349,   338,   338,   338,   338,   338,
+     338,   338,   349,   351,   348,   338,   338,   348,   338,     5,
+     252,    99,   179,   392,   184,   234,   395,   162,    74,   164,
+     234,   396,     4,   398,     4,   400,    62,    87,   324,   402,
+     184,   403,   169,   404,   162,   353,   338,   338,   338,   349,
+     338,   349,   349,   353,   353,   353,   349,   353,   338,   349,
+       4,   415,   351,   187,     4,   295,   414,   187,   349,     4,
+     417,     5,     5,     4,   187,   338,     4,     5,    56,    62,
+     121,   134,   142,   147,   195,   215,   219,   221,   243,   250,
+     268,   324,   466,   351,   338,     5,   214,   426,   350,   353,
+       5,   349,   349,     4,   340,     4,     4,   187,   338,    14,
+      15,    57,   181,   182,   247,   256,   257,   288,    83,     5,
+      14,    15,    57,   181,   182,   247,   256,   257,   261,   288,
+      83,   149,   155,   350,   445,   449,    83,   149,   451,     5,
+     443,     4,     4,     5,     4,   338,    20,    21,    22,    44,
+      45,    48,    51,    58,    62,    70,    71,    78,    79,    95,
+     101,   103,   104,   106,   121,   142,   164,   186,   213,   215,
+     220,   221,   232,   233,   243,   268,   270,   282,   284,   290,
+     324,    62,    76,    85,    95,   121,   142,   186,   221,   243,
+     282,   284,     4,    30,   154,   200,   224,   460,     5,    59,
+     100,   223,   235,   236,   326,   327,   465,    95,   458,    17,
+      37,   105,   185,   464,     5,    17,   199,   277,   338,   243,
+     465,   473,   115,   465,   474,    34,    37,   105,   123,   185,
+     276,   338,   475,   349,   340,    87,    95,   101,   117,   142,
+     150,   186,   193,   232,   243,   258,   478,    37,   105,   185,
+       5,   269,    17,   199,   277,   482,   270,   340,   483,     5,
+      95,   101,   285,    17,    17,     4,   338,   338,   338,   338,
+     338,   353,   338,   338,   348,   338,     4,   353,    37,   105,
+     185,   248,   500,    37,   105,   185,   248,   501,     4,    93,
+       5,     5,     4,    57,   112,   256,   509,    57,   112,   256,
+     511,    57,   112,   256,   510,   338,   338,     4,   515,   338,
+     338,     6,   350,     4,     5,     4,     4,     5,     4,    93,
+     245,   354,   338,   338,    12,     5,    12,   338,   338,    12,
+       4,    12,     4,   338,   338,   338,   349,     4,    51,    62,
+      88,   121,   268,   270,   324,   476,   477,   478,   489,   490,
+       4,     4,   353,   353,   338,   338,   338,   349,   338,   348,
+     338,   338,     5,     5,   338,   351,   338,   349,   349,   349,
+       4,   338,   353,   354,   354,   354,   353,   348,   338,   353,
+     338,   124,   231,   342,   416,   159,     4,   353,     5,     4,
+       4,   338,   412,   338,    20,    21,    22,    44,    45,    48,
+      55,    58,    62,    70,    71,    78,   103,   104,   106,   121,
+     142,   164,   173,   213,   220,   221,   233,   243,   268,   270,
+     280,   290,   324,    62,   121,   147,   221,   268,    30,   154,
+     200,   224,   467,   338,   195,   338,   468,    17,   338,   242,
+     478,   195,   338,   469,   270,   470,    17,    94,   338,   338,
+       5,   354,    52,   349,     4,     5,   437,   338,     5,     5,
+       5,   149,   176,   359,   359,   158,   249,   357,     4,     4,
+       5,     5,   441,   254,     5,     5,     5,    17,   151,   358,
+     358,   357,     4,     4,   357,     5,     5,   444,   155,   323,
+     350,   448,     5,   447,     5,     5,   452,     5,   453,     5,
+      14,    15,    57,   181,   182,   247,   256,   257,   261,   288,
+       4,     4,   204,   211,   212,   262,   266,   363,     7,     8,
+     338,   344,   224,   224,   224,   101,    37,    62,    95,   101,
+     105,   121,   142,   158,   186,   221,   232,   243,   270,   282,
+     284,   285,   324,   459,   224,     5,    27,   160,   224,   266,
+     129,   101,    22,    45,    48,    78,   104,   106,   215,    22,
+      45,    48,    51,    78,   104,   106,   215,   268,    37,   224,
+     224,   101,     5,   199,    27,   213,    34,   123,   276,   338,
+     246,   252,   228,   349,   351,   478,    37,   213,   266,   199,
+       5,     5,   232,    27,   213,     4,     5,     5,   199,    34,
+     123,   276,   338,   478,   199,   340,     4,     4,   338,     5,
+     288,    22,    27,    44,    45,    47,    48,    58,    70,    71,
+      78,    81,    98,   103,   104,   106,   164,   215,   220,   233,
+     269,   270,   290,   334,   461,   338,   338,   338,   338,   338,
+     465,   349,     5,     4,     5,   338,   338,   349,   351,   338,
+     349,   340,   338,   338,   465,     5,   338,   338,   340,     5,
+      17,     5,     5,   338,   338,   348,   338,   338,   338,   338,
+     105,   338,   338,   105,     4,    39,   163,   365,   365,   365,
+       5,     5,     4,     5,     5,     4,     5,     5,     4,   338,
+       4,   338,   350,   353,     5,     5,    12,   338,   349,   351,
+     338,    12,   338,   338,   338,    55,   338,     6,     4,   338,
+     338,   353,    42,   255,   385,   335,   335,   335,   335,   335,
+     335,   335,   477,   335,     5,     6,   338,     4,     4,     4,
+     349,   338,   338,   338,   338,     4,     4,   353,   349,   354,
+     341,   341,   348,   338,     4,   354,   338,    35,   272,    35,
+     272,     4,   351,     5,    24,    25,    93,   355,   338,     4,
+     338,     5,   204,   211,   212,   266,   349,   351,   224,   224,
+     224,    21,   224,   349,   351,   224,    27,   160,   224,   266,
+     129,    21,   224,   224,   224,    21,   224,    27,   161,   213,
+     161,   246,   252,   161,   213,   274,   478,   161,   213,   266,
+       4,   232,    27,   161,   213,   478,   195,   338,   338,   338,
+     338,   338,   187,   338,   338,    20,   222,   429,     4,     4,
+     338,   359,   359,   359,     4,   359,   359,   359,    14,    15,
+      57,   181,   182,   247,   256,   257,   288,   358,   359,   359,
+     359,   359,   359,     4,   359,   359,     4,   358,    14,    15,
+      57,   181,   182,   247,   256,   257,   288,     5,   446,     5,
+     450,     5,     5,    14,    15,    57,   181,   182,   247,   256,
+     257,   261,   288,     5,    14,    15,    57,   181,   182,   247,
+     256,   257,   261,   288,     5,    14,    15,    57,   181,   182,
+     247,   256,   257,   261,   288,    14,    15,    57,   181,   182,
+     247,   256,   257,   288,   254,     5,     5,     5,   358,   358,
+     357,     4,     4,   357,     5,     4,     4,    32,   265,   364,
+     349,   340,   349,   351,     5,   338,   338,     5,   338,     5,
+     344,   101,   186,   232,   101,   186,   232,     5,   338,   340,
+       5,   338,   349,   340,     5,   344,   224,   224,    21,   224,
+      21,   224,   224,    21,   224,   292,     4,     4,     4,   459,
+       4,     4,     4,   292,     4,     5,     4,   338,     5,   338,
+       5,   344,   340,   349,   351,   349,   351,   338,    27,    44,
+      47,    58,    81,    98,   334,   361,     4,   338,   353,   348,
+     340,   349,   351,   349,   340,   340,   349,   351,   349,   351,
+     338,   340,   338,     5,   338,   213,   213,   338,   338,   213,
+     338,   213,   338,   338,   479,   338,   213,   213,   338,   338,
+     338,   338,   338,   338,   338,     5,   288,   338,   462,   338,
+     338,   213,   338,   338,   338,   338,   349,   353,     5,   349,
+     349,   338,   338,   353,   348,   338,   338,   338,   349,   338,
+     338,     5,   338,   338,   338,   338,   133,   193,   360,   360,
+     360,   360,   360,   360,   360,   360,   360,   338,   338,   338,
+     349,   351,   338,   353,   338,   338,   338,   338,   338,     5,
+     338,     6,     6,   338,   338,     4,   459,     5,     4,     5,
+       5,     5,     4,   340,   349,   349,   338,   353,   169,   352,
+     338,   352,   354,   353,   349,   338,   338,     4,   341,   338,
+     341,   338,     4,     5,     5,   353,   349,   351,   349,   351,
+     349,   351,   349,   351,   349,   351,   353,   349,   351,   349,
+     351,   349,   351,   349,   351,   349,   351,   349,   351,   349,
+     351,   349,   351,   349,   349,   351,   338,   349,   349,   351,
+     349,   351,   349,   349,   351,   349,   349,   351,   338,     4,
+     338,     5,     4,   338,   359,     5,     5,     5,   357,     4,
+       4,     5,   359,   358,     4,   359,     5,     5,     5,   358,
+     358,   357,     4,     4,     5,    14,    15,    57,   181,   182,
+     247,   256,   257,   288,    14,    15,    57,   181,   182,   247,
+     256,   257,   288,    14,    15,    57,   181,   182,   247,   256,
+     257,   288,   254,     5,     5,     5,   358,   358,   357,     4,
+       4,   357,     5,   254,     5,     5,     5,   358,   358,   357,
+       4,     4,   357,     5,   254,     5,     5,     5,   358,   358,
+     357,     4,     4,   357,     5,     5,     5,     5,   358,   358,
+     357,     4,     4,     5,   358,     4,     4,   358,     4,     4,
+     353,   353,   349,   338,   338,   349,   338,     5,   344,     5,
+     349,   351,   340,     5,   349,   351,   353,     5,   344,   338,
+     338,   338,   338,   338,   338,   338,   338,   338,     4,     5,
+       4,   338,   349,   338,     5,   344,   340,   353,   348,   353,
+     338,   338,   348,   348,   353,   348,   353,   353,   348,   353,
+     348,   338,   338,   338,   338,   338,   338,   338,   338,   338,
+     338,   338,   338,   338,   338,   338,   338,   338,   338,   338,
+     338,   338,   349,     5,   338,   338,   338,   338,     4,     4,
+     353,   354,     4,   463,   353,   353,   348,   338,     4,   353,
+     338,   338,   353,   338,   348,   338,   338,    12,     5,     5,
+       4,     6,   338,   338,     4,     5,     4,   353,   353,   349,
+     338,   338,   354,   355,   338,     5,   338,   351,     5,     5,
+     355,   355,   355,   353,   355,   354,   355,   355,   353,   355,
+     355,   355,   353,   355,   355,   353,   349,   355,   353,   355,
+     355,   353,   355,   353,     4,   351,   338,     4,   359,   358,
+       4,   358,     5,     5,     5,   358,   358,   357,     4,     4,
+       5,     5,     5,     5,   358,   358,   357,     4,     4,     5,
+       5,     5,     5,   358,   358,   357,     4,     4,     5,   358,
+     359,   359,   359,   359,   359,     4,   359,   359,     4,   358,
+     358,   359,   359,   359,   359,   359,     4,   359,   359,     4,
+     358,   358,     4,     4,   358,     4,   358,   358,     4,     4,
+       4,   355,     4,   349,   351,   355,   338,   349,     4,   355,
+     355,   349,     4,   338,   338,   338,   338,   338,   338,   338,
+     338,   338,   338,   349,   351,   355,   338,   349,     4,   348,
+     348,   348,   338,   349,   351,   348,   338,   348,   348,   349,
+     348,   338,   348,   338,   338,   338,   338,   338,   338,   344,
+     338,   338,   338,   344,   338,   338,   338,   338,   344,   338,
+     338,   338,   338,   338,   353,   338,   288,   343,   344,   338,
+     338,   354,   340,     4,     4,   354,   348,   338,    55,   338,
+       5,     5,     4,   338,     4,   352,     5,   355,     5,     5,
+     354,   355,   354,   354,   354,     5,   338,   359,   358,   359,
+     359,   359,   359,   359,     4,   359,   359,   358,     4,   358,
+     359,   359,   359,   359,   359,     4,   359,   359,   358,   359,
+     358,     4,   359,   359,   358,     4,   359,   358,     4,   358,
+     358,   349,   351,   355,     4,   353,   338,   353,   338,   338,
+     355,     4,   353,   338,   348,   355,   338,   348,   355,   349,
+     344,   338,     4,   362,   362,   338,   338,   362,   344,   362,
+     479,   349,   344,   362,   362,   338,   338,   344,   338,   338,
+     338,   338,   348,   338,     5,   479,   338,   362,   340,   480,
+     481,     5,   340,     5,   338,     5,     4,     6,   338,     5,
+     338,   358,   359,   358,   358,   359,   359,   358,   359,   358,
+     358,   355,   349,   351,   349,   338,   349,   338,   349,   351,
+     349,   338,   349,   355,     4,   479,   479,   343,   338,   479,
+       4,   479,   353,     4,   479,   479,   343,   338,     4,   479,
+     479,   338,   349,   479,   479,   480,   486,   487,   478,   484,
+     485,     5,     5,     6,     4,   179,   286,   329,   330,   338,
+     356,     4,   359,   359,   359,   359,   355,   355,   338,   355,
+       4,   355,   355,   338,   355,   338,   479,   479,     4,   338,
+     479,   338,   479,     4,   338,   479,   353,   486,   488,   489,
+     335,   485,     5,     5,     4,   338,     4,   349,   351,     4,
+     344,   343,   338,   338,   343,   338,   349,   489,   340,     5,
+       5,   338,   349,   351,   353,   349,   351,   479,   338,     4,
+     479,   338,   355,     5,     5,   353,   353,     4,   479,     4,
+     479,   343,   343,   479,   479
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -4935,275 +4923,275 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 430 "parser.Y"
+#line 440 "parser.Y"
     {fr->bgColorCmd((yyvsp[(3) - (3)].str));;}
     break;
 
   case 5:
-#line 431 "parser.Y"
+#line 441 "parser.Y"
     {fr->centerCmd();;}
     break;
 
   case 6:
-#line 432 "parser.Y"
+#line 442 "parser.Y"
     {fr->clearCmd();;}
     break;
 
   case 13:
-#line 439 "parser.Y"
+#line 449 "parser.Y"
     {fr->DATASECCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 18:
-#line 444 "parser.Y"
+#line 454 "parser.Y"
     {fr->hideCmd();;}
     break;
 
   case 19:
-#line 445 "parser.Y"
+#line 455 "parser.Y"
     {fr->highliteCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 26:
-#line 452 "parser.Y"
+#line 462 "parser.Y"
     {fr->nanColorCmd((yyvsp[(3) - (3)].str));;}
     break;
 
   case 31:
-#line 457 "parser.Y"
+#line 467 "parser.Y"
     {fr->resetCmd();;}
     break;
 
   case 36:
-#line 462 "parser.Y"
+#line 472 "parser.Y"
     {fr->showCmd();;}
     break;
 
   case 39:
-#line 465 "parser.Y"
+#line 475 "parser.Y"
     {fr->unloadFitsCmd();;}
     break;
 
   case 41:
-#line 467 "parser.Y"
+#line 477 "parser.Y"
     {fr->msg("Frame 1.0");;}
     break;
 
   case 46:
-#line 474 "parser.Y"
+#line 484 "parser.Y"
     {(yyval.real)=(yyvsp[(1) - (1)].real);;}
     break;
 
   case 47:
-#line 475 "parser.Y"
+#line 485 "parser.Y"
     {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 48:
-#line 478 "parser.Y"
+#line 488 "parser.Y"
     {yydebug=(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 49:
-#line 479 "parser.Y"
+#line 489 "parser.Y"
     {DebugAST=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 50:
-#line 480 "parser.Y"
+#line 490 "parser.Y"
     {DebugMosaic=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 51:
-#line 481 "parser.Y"
+#line 491 "parser.Y"
     {yydebug=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 52:
-#line 482 "parser.Y"
+#line 492 "parser.Y"
     {DebugPerf=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 53:
-#line 483 "parser.Y"
+#line 493 "parser.Y"
     {DebugWCS=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 54:
-#line 484 "parser.Y"
+#line 494 "parser.Y"
     {DebugBin=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 55:
-#line 485 "parser.Y"
+#line 495 "parser.Y"
     {DebugCompress=(yyvsp[(2) - (2)].integer);}
     break;
 
   case 56:
-#line 486 "parser.Y"
+#line 496 "parser.Y"
     {DebugCrop=(yyvsp[(2) - (2)].integer);}
     break;
 
   case 57:
-#line 487 "parser.Y"
+#line 497 "parser.Y"
     {DebugGZ=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 58:
-#line 488 "parser.Y"
+#line 498 "parser.Y"
     {DebugRGB=(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 59:
-#line 491 "parser.Y"
+#line 501 "parser.Y"
     {(yyval.integer)=((yyvsp[(1) - (1)].integer) ? 1 : 0);;}
     break;
 
   case 60:
-#line 493 "parser.Y"
+#line 503 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 61:
-#line 494 "parser.Y"
+#line 504 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 62:
-#line 495 "parser.Y"
+#line 505 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 63:
-#line 496 "parser.Y"
+#line 506 "parser.Y"
     {(yyval.integer)=1;;}
     break;
 
   case 64:
-#line 498 "parser.Y"
+#line 508 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 65:
-#line 499 "parser.Y"
+#line 509 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 66:
-#line 500 "parser.Y"
+#line 510 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 67:
-#line 501 "parser.Y"
+#line 511 "parser.Y"
     {(yyval.integer)=0;;}
     break;
 
   case 68:
-#line 504 "parser.Y"
-    {(yyval.integer) = DEFAULT;;}
+#line 514 "parser.Y"
+    {(yyval.integer) = Base::DEFAULT;;}
     break;
 
   case 69:
-#line 505 "parser.Y"
-    {(yyval.integer) = DEFAULT;;}
+#line 515 "parser.Y"
+    {(yyval.integer) = Base::DEFAULT;;}
     break;
 
   case 70:
-#line 506 "parser.Y"
-    {(yyval.integer) = FIXED;;}
+#line 516 "parser.Y"
+    {(yyval.integer) = Base::FIXED;;}
     break;
 
   case 71:
-#line 507 "parser.Y"
-    {(yyval.integer) = SCIENTIFIC;;}
+#line 517 "parser.Y"
+    {(yyval.integer) = Base::SCIENTIFIC;;}
     break;
 
   case 72:
-#line 508 "parser.Y"
-    {(yyval.integer) = INTEGER;;}
+#line 518 "parser.Y"
+    {(yyval.integer) = Base::INTEGER;;}
     break;
 
   case 73:
-#line 511 "parser.Y"
+#line 521 "parser.Y"
     {(yyval.integer) = Base::ROOTBASE;;}
     break;
 
   case 74:
-#line 512 "parser.Y"
+#line 522 "parser.Y"
     {(yyval.integer) = Base::ROOTBASE;;}
     break;
 
   case 75:
-#line 513 "parser.Y"
+#line 523 "parser.Y"
     {(yyval.integer) = Base::FULLBASE;;}
     break;
 
   case 76:
-#line 514 "parser.Y"
+#line 524 "parser.Y"
     {(yyval.integer) = Base::ROOT;;}
     break;
 
   case 77:
-#line 515 "parser.Y"
+#line 525 "parser.Y"
     {(yyval.integer) = Base::FULL;;}
     break;
 
   case 78:
-#line 516 "parser.Y"
+#line 526 "parser.Y"
     {(yyval.integer) = Base::ROOT3D;;}
     break;
 
   case 79:
-#line 517 "parser.Y"
+#line 527 "parser.Y"
     {(yyval.integer) = Base::FULL3D;;}
     break;
 
   case 80:
-#line 520 "parser.Y"
+#line 530 "parser.Y"
     {(yyval.real) = 0;;}
     break;
 
   case 81:
-#line 521 "parser.Y"
+#line 531 "parser.Y"
     {(yyval.real) = (yyvsp[(1) - (1)].real);;}
     break;
 
   case 82:
-#line 524 "parser.Y"
+#line 534 "parser.Y"
     {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
     break;
 
   case 83:
-#line 525 "parser.Y"
+#line 535 "parser.Y"
     {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
     break;
 
   case 84:
-#line 526 "parser.Y"
+#line 536 "parser.Y"
     {(yyval.real)=(yyvsp[(1) - (1)].real);;}
     break;
 
   case 85:
-#line 529 "parser.Y"
+#line 539 "parser.Y"
     {(yyval.real) = parseSEXStr((yyvsp[(1) - (1)].str));;}
     break;
 
   case 86:
-#line 532 "parser.Y"
+#line 542 "parser.Y"
     {(yyval.real) = parseHMSStr((yyvsp[(1) - (1)].str));;}
     break;
 
   case 87:
-#line 535 "parser.Y"
+#line 545 "parser.Y"
     {(yyval.real) = parseDMSStr((yyvsp[(1) - (1)].str));;}
     break;
 
   case 88:
-#line 539 "parser.Y"
+#line 549 "parser.Y"
     {
 	  Vector r;
-	  if (currentSky == GALACTIC || currentSky == ECLIPTIC) 
+	  if (currentSky == Coord::GALACTIC || currentSky == Coord::ECLIPTIC) 
 	    r = Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));
 	  else
 	    r = Vector((yyvsp[(1) - (2)].real)*360./24.,(yyvsp[(2) - (2)].real));
@@ -5215,7 +5203,7 @@ yyreduce:
     break;
 
   case 89:
-#line 551 "parser.Y"
+#line 561 "parser.Y"
     {
 	  Vector r = Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));
 	  (yyval.vector)[0] = r[0];
@@ -5225,7 +5213,7 @@ yyreduce:
     break;
 
   case 90:
-#line 558 "parser.Y"
+#line 568 "parser.Y"
     {
 	  Vector r = Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));
 	  (yyval.vector)[0] = r[0];
@@ -5235,7 +5223,7 @@ yyreduce:
     break;
 
   case 91:
-#line 565 "parser.Y"
+#line 575 "parser.Y"
     {
 	  (yyval.vector)[0] = (yyvsp[(1) - (2)].real);
 	  (yyval.vector)[1] = (yyvsp[(2) - (2)].real);
@@ -5244,2382 +5232,2462 @@ yyreduce:
     break;
 
   case 92:
-#line 572 "parser.Y"
-    {(yyval.integer) = currentCoord = IMAGE;;}
+#line 582 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::IMAGE;;}
     break;
 
   case 93:
-#line 573 "parser.Y"
-    {(yyval.integer) = currentCoord = PHYSICAL;;}
+#line 583 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::PHYSICAL;;}
     break;
 
   case 94:
-#line 574 "parser.Y"
-    {(yyval.integer) = currentCoord = DETECTOR;;}
+#line 584 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::DETECTOR;;}
     break;
 
   case 95:
-#line 575 "parser.Y"
-    {(yyval.integer) = currentCoord = AMPLIFIER;;}
+#line 585 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::AMPLIFIER;;}
     break;
 
   case 96:
-#line 576 "parser.Y"
-    {(yyval.integer) = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+#line 586 "parser.Y"
+    {(yyval.integer) = (Coord::CoordSystem)(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 97:
-#line 579 "parser.Y"
-    {(yyval.integer) = currentCoord = WCS;;}
+#line 589 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCS;;}
     break;
 
   case 98:
-#line 580 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSA;;}
+#line 590 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSA;;}
     break;
 
   case 99:
-#line 581 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSB;;}
+#line 591 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSB;;}
     break;
 
   case 100:
-#line 582 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSC;;}
+#line 592 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSC;;}
     break;
 
   case 101:
-#line 583 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSD;;}
+#line 593 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSD;;}
     break;
 
   case 102:
-#line 584 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSE;;}
+#line 594 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSE;;}
     break;
 
   case 103:
-#line 585 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSF;;}
+#line 595 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSF;;}
     break;
 
   case 104:
-#line 586 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSG;;}
+#line 596 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSG;;}
     break;
 
   case 105:
-#line 587 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSH;;}
+#line 597 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSH;;}
     break;
 
   case 106:
-#line 588 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSI;;}
+#line 598 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSI;;}
     break;
 
   case 107:
-#line 589 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSJ;;}
+#line 599 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSJ;;}
     break;
 
   case 108:
-#line 590 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSK;;}
+#line 600 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSK;;}
     break;
 
   case 109:
-#line 591 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSL;;}
+#line 601 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSL;;}
     break;
 
   case 110:
-#line 592 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSM;;}
+#line 602 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSM;;}
     break;
 
   case 111:
-#line 593 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSN;;}
+#line 603 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSN;;}
     break;
 
   case 112:
-#line 594 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSO;;}
+#line 604 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSO;;}
     break;
 
   case 113:
-#line 595 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSP;;}
+#line 605 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSP;;}
     break;
 
   case 114:
-#line 596 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSQ;;}
+#line 606 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSQ;;}
     break;
 
   case 115:
-#line 597 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSR;;}
+#line 607 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSR;;}
     break;
 
   case 116:
-#line 598 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSS;;}
+#line 608 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSS;;}
     break;
 
   case 117:
-#line 599 "parser.Y"
-    {(yyval.integer) = currentCoord = WCST;;}
+#line 609 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCST;;}
     break;
 
   case 118:
-#line 600 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSU;;}
+#line 610 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSU;;}
     break;
 
   case 119:
-#line 601 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSV;;}
+#line 611 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSV;;}
     break;
 
   case 120:
-#line 602 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSW;;}
+#line 612 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSW;;}
     break;
 
   case 121:
-#line 603 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSX;;}
+#line 613 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSX;;}
     break;
 
   case 122:
-#line 604 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSY;;}
+#line 614 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSY;;}
     break;
 
   case 123:
-#line 605 "parser.Y"
-    {(yyval.integer) = currentCoord = WCSZ;;}
+#line 615 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCSZ;;}
     break;
 
   case 124:
-#line 606 "parser.Y"
-    {(yyval.integer) = currentCoord = WCS0;;}
+#line 616 "parser.Y"
+    {(yyval.integer) = currentCoord = Coord::WCS0;;}
     break;
 
   case 125:
-#line 609 "parser.Y"
-    {(yyval.integer) = CANVAS;;}
+#line 619 "parser.Y"
+    {(yyval.integer) = Coord::CANVAS;;}
     break;
 
   case 126:
-#line 610 "parser.Y"
-    {(yyval.integer) = PANNER;;}
+#line 620 "parser.Y"
+    {(yyval.integer) = Coord::PANNER;;}
     break;
 
   case 127:
-#line 613 "parser.Y"
+#line 623 "parser.Y"
     {(yyval.integer) = FrScale::LINEARSCALE;;}
     break;
 
   case 128:
-#line 614 "parser.Y"
+#line 624 "parser.Y"
     {(yyval.integer) = FrScale::LOGSCALE;;}
     break;
 
   case 129:
-#line 615 "parser.Y"
+#line 625 "parser.Y"
     {(yyval.integer) = FrScale::POWSCALE;;}
     break;
 
   case 130:
-#line 616 "parser.Y"
+#line 626 "parser.Y"
     {(yyval.integer) = FrScale::SQRTSCALE;;}
     break;
 
   case 131:
-#line 617 "parser.Y"
+#line 627 "parser.Y"
     {(yyval.integer) = FrScale::SQUAREDSCALE;;}
     break;
 
   case 132:
-#line 618 "parser.Y"
+#line 628 "parser.Y"
     {(yyval.integer) = FrScale::ASINHSCALE;;}
     break;
 
   case 133:
-#line 619 "parser.Y"
+#line 629 "parser.Y"
     {(yyval.integer) = FrScale::SINHSCALE;;}
     break;
 
   case 134:
-#line 620 "parser.Y"
+#line 630 "parser.Y"
     {(yyval.integer) = FrScale::HISTEQUSCALE;;}
     break;
 
   case 135:
-#line 623 "parser.Y"
-    {(yyval.integer) = currentSky = FK5;;}
+#line 633 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::FK5;;}
     break;
 
   case 136:
-#line 624 "parser.Y"
-    {(yyval.integer) = currentSky = FK4;;}
+#line 634 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::FK4;;}
     break;
 
   case 137:
-#line 625 "parser.Y"
-    {(yyval.integer) = currentSky = FK4_NO_E;;}
+#line 635 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::FK4_NO_E;;}
     break;
 
   case 138:
-#line 626 "parser.Y"
-    {(yyval.integer) = currentSky = FK4;;}
+#line 636 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::FK4;;}
     break;
 
   case 139:
-#line 627 "parser.Y"
-    {(yyval.integer) = currentSky = FK5;;}
+#line 637 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::FK5;;}
     break;
 
   case 140:
-#line 628 "parser.Y"
-    {(yyval.integer) = currentSky = FK5;;}
+#line 638 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::FK5;;}
     break;
 
   case 141:
-#line 629 "parser.Y"
-    {(yyval.integer) = currentSky = ICRS;;}
+#line 639 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::ICRS;;}
     break;
 
   case 142:
-#line 630 "parser.Y"
-    {(yyval.integer) = currentSky = GALACTIC;;}
+#line 640 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::GALACTIC;;}
     break;
 
   case 143:
-#line 631 "parser.Y"
-    {(yyval.integer) = currentSky = SUPERGALACTIC;;}
+#line 641 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::SUPERGALACTIC;;}
     break;
 
   case 144:
-#line 632 "parser.Y"
-    {(yyval.integer) = currentSky = ECLIPTIC;;}
+#line 642 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::ECLIPTIC;;}
     break;
 
   case 145:
-#line 633 "parser.Y"
-    {(yyval.integer) = currentSky = HELIOECLIPTIC;;}
+#line 643 "parser.Y"
+    {(yyval.integer) = currentSky = Coord::HELIOECLIPTIC;;}
     break;
 
   case 146:
-#line 636 "parser.Y"
-    {(yyval.integer)=DEGREES;;}
+#line 646 "parser.Y"
+    {(yyval.integer)=Coord::DEGREES;;}
     break;
 
   case 147:
-#line 637 "parser.Y"
-    {(yyval.integer)=DEGREES;;}
+#line 647 "parser.Y"
+    {(yyval.integer)=Coord::DEGREES;;}
     break;
 
   case 148:
-#line 638 "parser.Y"
-    {(yyval.integer)=SEXAGESIMAL;;}
+#line 648 "parser.Y"
+    {(yyval.integer)=Coord::SEXAGESIMAL;;}
     break;
 
   case 149:
-#line 641 "parser.Y"
-    {(yyval.integer)=DEGREE;;}
+#line 651 "parser.Y"
+    {(yyval.integer)=Coord::DEGREE;;}
     break;
 
   case 150:
-#line 642 "parser.Y"
-    {(yyval.integer)=DEGREE;;}
+#line 652 "parser.Y"
+    {(yyval.integer)=Coord::DEGREE;;}
     break;
 
   case 151:
-#line 643 "parser.Y"
-    {(yyval.integer)=ARCMIN;;}
+#line 653 "parser.Y"
+    {(yyval.integer)=Coord::ARCMIN;;}
     break;
 
   case 152:
-#line 644 "parser.Y"
-    {(yyval.integer)=ARCSEC;;}
+#line 654 "parser.Y"
+    {(yyval.integer)=Coord::ARCSEC;;}
     break;
 
   case 153:
-#line 647 "parser.Y"
+#line 657 "parser.Y"
     {(yyval.real) = (yyvsp[(1) - (1)].real);;}
     break;
 
   case 154:
-#line 648 "parser.Y"
+#line 658 "parser.Y"
     {(yyval.real) = FrScale::MINMAX;;}
     break;
 
   case 155:
-#line 649 "parser.Y"
+#line 659 "parser.Y"
     {(yyval.real) = FrScale::ZSCALE;;}
     break;
 
   case 156:
-#line 650 "parser.Y"
+#line 660 "parser.Y"
     {(yyval.real) = FrScale::ZMAX;;}
     break;
 
   case 157:
-#line 651 "parser.Y"
+#line 661 "parser.Y"
     {(yyval.real) = FrScale::USERCLIP;;}
     break;
 
   case 158:
-#line 654 "parser.Y"
+#line 664 "parser.Y"
     {(yyval.integer) = Base::SHMID;;}
     break;
 
   case 159:
-#line 655 "parser.Y"
+#line 665 "parser.Y"
     {(yyval.integer) = Base::SHMID;;}
     break;
 
   case 160:
-#line 656 "parser.Y"
+#line 666 "parser.Y"
     {(yyval.integer) = Base::KEY;;}
     break;
 
   case 161:
-#line 659 "parser.Y"
+#line 669 "parser.Y"
     {(yyval.integer) = Base::LOADALL;;}
     break;
 
   case 162:
-#line 660 "parser.Y"
+#line 670 "parser.Y"
     {(yyval.integer) = Base::LOADALL;;}
     break;
 
   case 163:
-#line 661 "parser.Y"
+#line 671 "parser.Y"
     {(yyval.integer) = Base::INCR;;}
     break;
 
   case 164:
-#line 664 "parser.Y"
+#line 674 "parser.Y"
     {(yyval.integer) = Base::IMG;;}
     break;
 
   case 165:
-#line 665 "parser.Y"
+#line 675 "parser.Y"
     {(yyval.integer) = Base::IMG;;}
     break;
 
   case 166:
-#line 666 "parser.Y"
+#line 676 "parser.Y"
     {(yyval.integer) = Base::MASK;;}
     break;
 
   case 167:
-#line 669 "parser.Y"
+#line 679 "parser.Y"
     {(yyval.integer) = Base::NOCOMPRESS;;}
     break;
 
   case 168:
-#line 670 "parser.Y"
+#line 680 "parser.Y"
     {(yyval.integer) = Base::NOCOMPRESS;;}
     break;
 
   case 169:
-#line 671 "parser.Y"
+#line 681 "parser.Y"
     {(yyval.integer) = Base::GZ;;}
     break;
 
   case 170:
-#line 674 "parser.Y"
-    {(yyval.integer) = POINTSIZE;;}
+#line 684 "parser.Y"
+    {(yyval.integer) = Point::CIRCLE;;}
     break;
 
   case 171:
-#line 675 "parser.Y"
-    {(yyval.integer) = (yyvsp[(1) - (1)].integer);;}
+#line 685 "parser.Y"
+    {(yyval.integer) = Point::CIRCLE;;}
     break;
 
   case 172:
-#line 678 "parser.Y"
-    {(yyval.integer) = FitsFile::BIGENDIAN;;}
+#line 686 "parser.Y"
+    {(yyval.integer) = Point::BOX;;}
     break;
 
   case 173:
-#line 679 "parser.Y"
-    {(yyval.integer) = FitsFile::BIGENDIAN;;}
+#line 687 "parser.Y"
+    {(yyval.integer) = Point::DIAMOND;;}
     break;
 
   case 174:
-#line 680 "parser.Y"
-    {(yyval.integer) = FitsFile::LITTLEENDIAN;;}
+#line 688 "parser.Y"
+    {(yyval.integer) = Point::CROSS;;}
     break;
 
   case 175:
-#line 683 "parser.Y"
-    {fr->set3dViewCmd((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real));;}
+#line 689 "parser.Y"
+    {(yyval.integer) = Point::EX;;}
     break;
 
   case 176:
-#line 684 "parser.Y"
-    {fr->set3dHighliteCmd((yyvsp[(2) - (2)].integer));;}
+#line 690 "parser.Y"
+    {(yyval.integer) = Point::ARROW;;}
     break;
 
   case 177:
-#line 685 "parser.Y"
-    {fr->set3dRenderMethodCmd((yyvsp[(2) - (2)].integer));;}
+#line 691 "parser.Y"
+    {(yyval.integer) = Point::BOXCIRCLE;;}
     break;
 
   case 178:
-#line 686 "parser.Y"
-    {fr->set3dThreadsCmd((yyvsp[(2) - (2)].integer));;}
+#line 694 "parser.Y"
+    {(yyval.integer) = POINTSIZE;;}
     break;
 
   case 179:
-#line 688 "parser.Y"
-    {/* needed for compatibility with old version of backup */;}
+#line 695 "parser.Y"
+    {(yyval.integer) = (yyvsp[(1) - (1)].integer);;}
+    break;
+
+  case 180:
+#line 698 "parser.Y"
+    {(yyval.integer) = Marker::STATS;;}
     break;
 
   case 181:
-#line 692 "parser.Y"
-    {fr->binColsCmd((yyvsp[(2) - (4)].str),(yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
+#line 699 "parser.Y"
+    {(yyval.integer) = Marker::PLOT2D;;}
     break;
 
   case 182:
-#line 693 "parser.Y"
-    {fr->binDepthCmd((yyvsp[(2) - (2)].integer));;}
+#line 700 "parser.Y"
+    {(yyval.integer) = Marker::PLOT3D;;}
+    break;
+
+  case 183:
+#line 703 "parser.Y"
+    {(yyval.integer) = Marker::AVERAGE;;}
+    break;
+
+  case 184:
+#line 704 "parser.Y"
+    {(yyval.integer) = Marker::AVERAGE;;}
     break;
 
   case 185:
-#line 696 "parser.Y"
-    {fr->binBufferSizeCmd((yyvsp[(3) - (3)].integer));;}
+#line 705 "parser.Y"
+    {(yyval.integer) = Marker::SUM;;}
+    break;
+
+  case 186:
+#line 708 "parser.Y"
+    {(yyval.integer) = FitsFile::BIGENDIAN;;}
     break;
 
   case 187:
-#line 698 "parser.Y"
-    {fr->binFilterCmd((yyvsp[(2) - (2)].str));;}
+#line 709 "parser.Y"
+    {(yyval.integer) = FitsFile::BIGENDIAN;;}
     break;
 
   case 188:
-#line 701 "parser.Y"
-    {fr->binAboutCmd();;}
+#line 710 "parser.Y"
+    {(yyval.integer) = FitsFile::LITTLEENDIAN;;}
     break;
 
   case 189:
-#line 702 "parser.Y"
-    {fr->binAboutCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+#line 713 "parser.Y"
+    {fr->set3dViewCmd((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real));;}
     break;
 
   case 190:
-#line 705 "parser.Y"
-    {fr->binFactorCmd(Vector((yyvsp[(1) - (1)].real),(yyvsp[(1) - (1)].real)));;}
+#line 714 "parser.Y"
+    {fr->set3dHighliteCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 191:
-#line 706 "parser.Y"
-    {fr->binFactorCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+#line 715 "parser.Y"
+    {fr->set3dRenderMethodCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 192:
-#line 708 "parser.Y"
-    {fr->binFactorAboutCmd(Vector((yyvsp[(1) - (4)].real),(yyvsp[(1) - (4)].real)), Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+#line 716 "parser.Y"
+    {fr->set3dThreadsCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 193:
-#line 710 "parser.Y"
+#line 718 "parser.Y"
+    {/* needed for compatibility with old version of backup */;}
+    break;
+
+  case 195:
+#line 722 "parser.Y"
+    {fr->binColsCmd((yyvsp[(2) - (4)].str),(yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
+    break;
+
+  case 196:
+#line 723 "parser.Y"
+    {fr->binDepthCmd((yyvsp[(2) - (2)].integer));;}
+    break;
+
+  case 199:
+#line 726 "parser.Y"
+    {fr->binBufferSizeCmd((yyvsp[(3) - (3)].integer));;}
+    break;
+
+  case 201:
+#line 728 "parser.Y"
+    {fr->binFilterCmd((yyvsp[(2) - (2)].str));;}
+    break;
+
+  case 202:
+#line 731 "parser.Y"
+    {fr->binAboutCmd();;}
+    break;
+
+  case 203:
+#line 732 "parser.Y"
+    {fr->binAboutCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+    break;
+
+  case 204:
+#line 735 "parser.Y"
+    {fr->binFactorCmd(Vector((yyvsp[(1) - (1)].real),(yyvsp[(1) - (1)].real)));;}
+    break;
+
+  case 205:
+#line 736 "parser.Y"
+    {fr->binFactorCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+    break;
+
+  case 206:
+#line 738 "parser.Y"
+    {fr->binFactorAboutCmd(Vector((yyvsp[(1) - (4)].real),(yyvsp[(1) - (4)].real)), Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+    break;
+
+  case 207:
+#line 740 "parser.Y"
     {fr->binFactorAboutCmd(Vector((yyvsp[(1) - (5)].real),(yyvsp[(2) - (5)].real)), Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
     break;
 
-  case 194:
-#line 711 "parser.Y"
+  case 208:
+#line 741 "parser.Y"
     {fr->binFactorToCmd(Vector((yyvsp[(2) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 195:
-#line 712 "parser.Y"
+  case 209:
+#line 742 "parser.Y"
     {fr->binFactorToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 196:
-#line 714 "parser.Y"
+  case 210:
+#line 744 "parser.Y"
     {fr->binFactorToAboutCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(2) - (5)].real)), Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
     break;
 
-  case 197:
-#line 716 "parser.Y"
+  case 211:
+#line 746 "parser.Y"
     {fr->binFactorToAboutCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 198:
-#line 719 "parser.Y"
+  case 212:
+#line 749 "parser.Y"
     {fr->binFunctionCmd(FitsHist::AVERAGE);;}
     break;
 
-  case 199:
-#line 720 "parser.Y"
+  case 213:
+#line 750 "parser.Y"
     {fr->binFunctionCmd(FitsHist::SUM);;}
     break;
 
-  case 200:
-#line 723 "parser.Y"
+  case 214:
+#line 753 "parser.Y"
     {fr->binToFitCmd();;}
     break;
 
-  case 201:
-#line 725 "parser.Y"
+  case 215:
+#line 755 "parser.Y"
     {fr->binCmd(Vector((yyvsp[(1) - (7)].real),(yyvsp[(2) - (7)].real)), (yyvsp[(5) - (7)].str), (yyvsp[(6) - (7)].str), (yyvsp[(7) - (7)].str));;}
     break;
 
-  case 202:
-#line 728 "parser.Y"
+  case 216:
+#line 758 "parser.Y"
     {fr->binCmd(Vector((yyvsp[(1) - (11)].real),(yyvsp[(2) - (11)].real)), (yyvsp[(3) - (11)].integer), Vector((yyvsp[(4) - (11)].real),(yyvsp[(5) - (11)].real)), (yyvsp[(8) - (11)].str), (yyvsp[(9) - (11)].str), (yyvsp[(10) - (11)].str), (yyvsp[(11) - (11)].str));;}
     break;
 
-  case 203:
-#line 730 "parser.Y"
+  case 217:
+#line 760 "parser.Y"
     {fr->binCmd(Vector((yyvsp[(1) - (8)].real),(yyvsp[(2) - (8)].real)), Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real)), (yyvsp[(6) - (8)].str), (yyvsp[(7) - (8)].str), (yyvsp[(8) - (8)].str));;}
     break;
 
-  case 204:
-#line 733 "parser.Y"
+  case 218:
+#line 763 "parser.Y"
     {fr->binCmd(Vector((yyvsp[(1) - (12)].real),(yyvsp[(2) - (12)].real)), (yyvsp[(3) - (12)].integer), Vector((yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real)), Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), 
 	    (yyvsp[(9) - (12)].str), (yyvsp[(10) - (12)].str), (yyvsp[(11) - (12)].str), (yyvsp[(12) - (12)].str));;}
     break;
 
-  case 210:
-#line 742 "parser.Y"
+  case 224:
+#line 772 "parser.Y"
     {fr->clipPreserveCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 211:
-#line 745 "parser.Y"
+  case 225:
+#line 775 "parser.Y"
     {fr->clipUserCmd((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));;}
     break;
 
-  case 212:
-#line 746 "parser.Y"
+  case 226:
+#line 776 "parser.Y"
     {fr->clipUserLowCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 213:
-#line 747 "parser.Y"
+  case 227:
+#line 777 "parser.Y"
     {fr->clipUserHighCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 214:
-#line 750 "parser.Y"
+  case 228:
+#line 780 "parser.Y"
     {fr->clipScopeCmd(FrScale::GLOBAL);;}
     break;
 
-  case 215:
-#line 751 "parser.Y"
+  case 229:
+#line 781 "parser.Y"
     {fr->clipScopeCmd(FrScale::LOCAL);;}
     break;
 
-  case 216:
-#line 754 "parser.Y"
+  case 230:
+#line 784 "parser.Y"
     {fr->clipModeCmd((yyvsp[(1) - (1)].real));;}
     break;
 
-  case 217:
-#line 755 "parser.Y"
+  case 231:
+#line 785 "parser.Y"
     {fr->clipModeCmd(FrScale::MINMAX);;}
     break;
 
-  case 218:
-#line 756 "parser.Y"
+  case 232:
+#line 786 "parser.Y"
     {fr->clipModeCmd(FrScale::ZSCALE);;}
     break;
 
-  case 219:
-#line 757 "parser.Y"
+  case 233:
+#line 787 "parser.Y"
     {fr->clipModeCmd(FrScale::ZMAX);;}
     break;
 
-  case 220:
-#line 758 "parser.Y"
+  case 234:
+#line 788 "parser.Y"
     {fr->clipModeCmd(FrScale::USERCLIP);;}
     break;
 
-  case 222:
-#line 762 "parser.Y"
+  case 236:
+#line 792 "parser.Y"
     {fr->clipMinMaxSampleCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 223:
-#line 765 "parser.Y"
+  case 237:
+#line 795 "parser.Y"
     {fr->clipMinMaxModeCmd(FrScale::AUTOSCAN);;}
     break;
 
-  case 224:
-#line 766 "parser.Y"
+  case 238:
+#line 796 "parser.Y"
     {fr->clipMinMaxModeCmd(FrScale::SCAN);;}
     break;
 
-  case 225:
-#line 767 "parser.Y"
+  case 239:
+#line 797 "parser.Y"
     {fr->clipMinMaxModeCmd(FrScale::SAMPLE);;}
     break;
 
-  case 226:
-#line 768 "parser.Y"
+  case 240:
+#line 798 "parser.Y"
     {fr->clipMinMaxModeCmd(FrScale::DATAMIN);;}
     break;
 
-  case 227:
-#line 769 "parser.Y"
+  case 241:
+#line 799 "parser.Y"
     {fr->clipMinMaxModeCmd(FrScale::IRAFMIN);;}
     break;
 
-  case 228:
-#line 772 "parser.Y"
+  case 242:
+#line 802 "parser.Y"
     {fr->clipZScaleContrastCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 229:
-#line 773 "parser.Y"
+  case 243:
+#line 803 "parser.Y"
     {fr->clipZScaleSampleCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 230:
-#line 774 "parser.Y"
+  case 244:
+#line 804 "parser.Y"
     {fr->clipZScaleLineCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 231:
-#line 778 "parser.Y"
+  case 245:
+#line 808 "parser.Y"
     {fr->colormapCmd((yyvsp[(1) - (7)].integer), (yyvsp[(2) - (7)].real), (yyvsp[(3) - (7)].real), (yyvsp[(4) - (7)].integer), (unsigned short*)(yyvsp[(5) - (7)].ptr), 
 	    (unsigned char*)(yyvsp[(6) - (7)].ptr), (yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 232:
-#line 781 "parser.Y"
+  case 246:
+#line 811 "parser.Y"
     {fr->colormapCmd((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].integer),(unsigned char*)(yyvsp[(9) - (10)].ptr),(yyvsp[(10) - (10)].integer));;}
     break;
 
-  case 233:
-#line 782 "parser.Y"
+  case 247:
+#line 812 "parser.Y"
     {fr->colormapBeginCmd();;}
     break;
 
-  case 235:
-#line 784 "parser.Y"
+  case 249:
+#line 814 "parser.Y"
     {fr->colormapEndCmd();;}
     break;
 
-  case 236:
-#line 788 "parser.Y"
+  case 250:
+#line 818 "parser.Y"
     {fr->colormapMotionCmd((yyvsp[(1) - (7)].integer), (yyvsp[(2) - (7)].real), (yyvsp[(3) - (7)].real), (yyvsp[(4) - (7)].integer), (unsigned short*)(yyvsp[(5) - (7)].ptr),
 	    (unsigned char*)(yyvsp[(6) - (7)].ptr), (yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 237:
-#line 791 "parser.Y"
+  case 251:
+#line 821 "parser.Y"
     {fr->colormapMotionCmd((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].integer),
 	    (unsigned char*)(yyvsp[(9) - (10)].ptr),(yyvsp[(10) - (10)].integer));;}
     break;
 
-  case 238:
-#line 794 "parser.Y"
+  case 252:
+#line 824 "parser.Y"
     {fr->colorScaleCmd((FrScale::ColorScaleType)(yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 239:
-#line 795 "parser.Y"
+  case 253:
+#line 825 "parser.Y"
     {fr->colorScaleLogCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 241:
-#line 799 "parser.Y"
+  case 255:
+#line 829 "parser.Y"
     {fr->contourSetColorCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 242:
-#line 801 "parser.Y"
-    {fr->contourCopyCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (SkyFrame)(yyvsp[(3) - (3)].integer));;}
+  case 256:
+#line 831 "parser.Y"
+    {fr->contourCopyCmd((Coord::CoordSystem)(yyvsp[(2) - (3)].integer), (Coord::SkyFrame)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 244:
-#line 803 "parser.Y"
+  case 258:
+#line 833 "parser.Y"
     {fr->contourSetDashCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 245:
-#line 804 "parser.Y"
+  case 259:
+#line 834 "parser.Y"
     {fr->contourDeleteCmd();;}
     break;
 
-  case 246:
-#line 805 "parser.Y"
+  case 260:
+#line 835 "parser.Y"
     {fr->contourDeleteAllCmd();;}
     break;
 
-  case 247:
-#line 807 "parser.Y"
-    {fr->contourLoadCmd((yyvsp[(2) - (7)].str), (yyvsp[(3) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].str), (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFrame)(yyvsp[(7) - (7)].integer));;}
+  case 261:
+#line 837 "parser.Y"
+    {fr->contourLoadCmd((yyvsp[(2) - (7)].str), (yyvsp[(3) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].str), (Coord::CoordSystem)(yyvsp[(6) - (7)].integer), (Coord::SkyFrame)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 248:
-#line 809 "parser.Y"
-    {fr->contourPasteCmd((yyvsp[(2) - (7)].str), (yyvsp[(3) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].ptr), (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFrame)(yyvsp[(7) - (7)].integer));;}
+  case 262:
+#line 839 "parser.Y"
+    {fr->contourPasteCmd((yyvsp[(2) - (7)].str), (yyvsp[(3) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].ptr), (Coord::CoordSystem)(yyvsp[(6) - (7)].integer), (Coord::SkyFrame)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 249:
-#line 811 "parser.Y"
-    {fr->contourSaveCmd((yyvsp[(2) - (4)].str), (CoordSystem)(yyvsp[(3) - (4)].integer), (SkyFrame)(yyvsp[(4) - (4)].integer));;}
+  case 263:
+#line 841 "parser.Y"
+    {fr->contourSaveCmd((yyvsp[(2) - (4)].str), (Coord::CoordSystem)(yyvsp[(3) - (4)].integer), (Coord::SkyFrame)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 250:
-#line 812 "parser.Y"
+  case 264:
+#line 842 "parser.Y"
     {fr->contourSetLineWidthCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 251:
-#line 815 "parser.Y"
+  case 265:
+#line 845 "parser.Y"
     {fr->contourAuxHeadCmd();;}
     break;
 
-  case 252:
-#line 816 "parser.Y"
+  case 266:
+#line 846 "parser.Y"
     {fr->contourAuxNextCmd();;}
     break;
 
-  case 253:
-#line 818 "parser.Y"
-    {fr->contourAuxSaveCmd((yyvsp[(2) - (4)].str), (CoordSystem)(yyvsp[(3) - (4)].integer), (SkyFrame)(yyvsp[(4) - (4)].integer));;}
+  case 267:
+#line 848 "parser.Y"
+    {fr->contourAuxSaveCmd((yyvsp[(2) - (4)].str), (Coord::CoordSystem)(yyvsp[(3) - (4)].integer), (Coord::SkyFrame)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 254:
-#line 822 "parser.Y"
+  case 268:
+#line 852 "parser.Y"
     {fr->contourCreateCmd((yyvsp[(1) - (12)].str),(yyvsp[(2) - (12)].integer),(yyvsp[(3) - (12)].integer),(FVContour::Method)(yyvsp[(4) - (12)].integer),(yyvsp[(5) - (12)].integer),(yyvsp[(6) - (12)].integer),(FrScale::ColorScaleType)(yyvsp[(7) - (12)].integer),(yyvsp[(8) - (12)].real),(yyvsp[(9) - (12)].real),Vector((yyvsp[(10) - (12)].real),(yyvsp[(11) - (12)].real)),(yyvsp[(12) - (12)].str));;}
     break;
 
-  case 255:
-#line 824 "parser.Y"
+  case 269:
+#line 854 "parser.Y"
     {fr->createContourPolygonCmd(currentColor,currentDash,currentWidth, 
 	    currentFont, currentText, currentProps, NULL, taglist,cblist);;}
     break;
 
-  case 256:
-#line 828 "parser.Y"
+  case 270:
+#line 858 "parser.Y"
     {(yyval.integer) = FVContour::SMOOTH;;}
     break;
 
-  case 257:
-#line 829 "parser.Y"
+  case 271:
+#line 859 "parser.Y"
     {(yyval.integer) = FVContour::BLOCK;;}
     break;
 
-  case 258:
-#line 832 "parser.Y"
+  case 272:
+#line 862 "parser.Y"
     {fr->cropCmd();;}
     break;
 
-  case 259:
-#line 834 "parser.Y"
+  case 273:
+#line 864 "parser.Y"
     {fr->cropCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)), Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),
-	    (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFrame)(yyvsp[(6) - (6)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(5) - (6)].integer), (Coord::SkyFrame)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 260:
-#line 837 "parser.Y"
-    {fr->cropCenterCmd(Vector((yyvsp[(2) - (8)].vector)), (CoordSystem)(yyvsp[(3) - (8)].integer), (SkyFrame)(yyvsp[(4) - (8)].integer),
-	    Vector((yyvsp[(5) - (8)].real),(yyvsp[(6) - (8)].real)), (CoordSystem)(yyvsp[(7) - (8)].integer), (SkyDist)(yyvsp[(8) - (8)].integer));;}
+  case 274:
+#line 867 "parser.Y"
+    {fr->cropCenterCmd(Vector((yyvsp[(2) - (8)].vector)), (Coord::CoordSystem)(yyvsp[(3) - (8)].integer), (Coord::SkyFrame)(yyvsp[(4) - (8)].integer),
+	    Vector((yyvsp[(5) - (8)].real),(yyvsp[(6) - (8)].real)), (Coord::CoordSystem)(yyvsp[(7) - (8)].integer), (Coord::SkyDist)(yyvsp[(8) - (8)].integer));;}
     break;
 
-  case 262:
-#line 840 "parser.Y"
+  case 276:
+#line 870 "parser.Y"
     {fr->cropBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 263:
-#line 841 "parser.Y"
+  case 277:
+#line 871 "parser.Y"
     {fr->cropMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 264:
-#line 842 "parser.Y"
+  case 278:
+#line 872 "parser.Y"
     {fr->cropEndCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 265:
-#line 845 "parser.Y"
+  case 279:
+#line 875 "parser.Y"
     {fr->crop3dCmd();;}
     break;
 
-  case 266:
-#line 846 "parser.Y"
-    {fr->crop3dCmd((yyvsp[(1) - (3)].real), (yyvsp[(2) - (3)].real), (CoordSystem)(yyvsp[(3) - (3)].integer));;}
+  case 280:
+#line 876 "parser.Y"
+    {fr->crop3dCmd((yyvsp[(1) - (3)].real), (yyvsp[(2) - (3)].real), (Coord::CoordSystem)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 267:
-#line 847 "parser.Y"
+  case 281:
+#line 877 "parser.Y"
     {fr->crop3dBeginCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 268:
-#line 848 "parser.Y"
+  case 282:
+#line 878 "parser.Y"
     {fr->crop3dMotionCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 269:
-#line 849 "parser.Y"
+  case 283:
+#line 879 "parser.Y"
     {fr->crop3dEndCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 270:
-#line 853 "parser.Y"
-    {fr->crosshairCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (InternalSystem)(yyvsp[(1) - (3)].integer));;}
+  case 284:
+#line 883 "parser.Y"
+    {fr->crosshairCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (Coord::InternalSystem)(yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 271:
-#line 855 "parser.Y"
-    {fr->crosshairCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
+  case 285:
+#line 885 "parser.Y"
+    {fr->crosshairCmd(Vector((yyvsp[(3) - (3)].vector)), (Coord::CoordSystem)(yyvsp[(1) - (3)].integer), (Coord::SkyFrame)(yyvsp[(2) - (3)].integer));;}
     break;
 
-  case 272:
-#line 856 "parser.Y"
+  case 286:
+#line 886 "parser.Y"
     {fr->crosshairCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 273:
-#line 857 "parser.Y"
+  case 287:
+#line 887 "parser.Y"
     {fr->crosshairWarpCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 274:
-#line 860 "parser.Y"
-    {fr->crosshairCmd(Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)), (InternalSystem)(yyvsp[(3) - (5)].integer));;}
+  case 288:
+#line 890 "parser.Y"
+    {fr->crosshairCmd(Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)), (Coord::InternalSystem)(yyvsp[(3) - (5)].integer));;}
     break;
 
-  case 275:
-#line 862 "parser.Y"
-    {fr->crosshairCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (InternalSystem)(yyvsp[(2) - (4)].integer));;}
+  case 289:
+#line 892 "parser.Y"
+    {fr->crosshairCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (Coord::InternalSystem)(yyvsp[(2) - (4)].integer));;}
     break;
 
-  case 276:
-#line 864 "parser.Y"
-    {fr->crosshairCmd(Vector((yyvsp[(4) - (4)].vector)), (CoordSystem)(yyvsp[(3) - (4)].integer));;}
+  case 290:
+#line 894 "parser.Y"
+    {fr->crosshairCmd(Vector((yyvsp[(4) - (4)].vector)), (Coord::CoordSystem)(yyvsp[(3) - (4)].integer));;}
     break;
 
-  case 277:
-#line 866 "parser.Y"
-    {fr->crosshairCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(2) - (3)].integer));;}
+  case 291:
+#line 896 "parser.Y"
+    {fr->crosshairCmd(Vector((yyvsp[(3) - (3)].vector)), (Coord::CoordSystem)(yyvsp[(2) - (3)].integer));;}
     break;
 
-  case 278:
-#line 869 "parser.Y"
+  case 292:
+#line 899 "parser.Y"
     {fr->fitsyHasExtCmd((yyvsp[(3) - (3)].str));;}
     break;
 
-  case 279:
-#line 872 "parser.Y"
+  case 293:
+#line 902 "parser.Y"
     {fr->getBgColorCmd();;}
     break;
 
-  case 283:
-#line 876 "parser.Y"
+  case 297:
+#line 906 "parser.Y"
     {fr->getColorbarCmd();;}
     break;
 
-  case 291:
-#line 884 "parser.Y"
+  case 305:
+#line 914 "parser.Y"
     {fr->getDATASECCmd();;}
     break;
 
-  case 294:
-#line 887 "parser.Y"
+  case 308:
+#line 917 "parser.Y"
     {fr->getHistogramCmd((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 295:
-#line 889 "parser.Y"
-    {fr->getHorzCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(InternalSystem)(yyvsp[(7) - (7)].integer));;}
+  case 309:
+#line 919 "parser.Y"
+    {fr->getHorzCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(Coord::InternalSystem)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 298:
-#line 892 "parser.Y"
+  case 312:
+#line 922 "parser.Y"
     {fr->getMinMaxCmd();;}
     break;
 
-  case 301:
-#line 895 "parser.Y"
+  case 315:
+#line 925 "parser.Y"
     {fr->getNANColorCmd();;}
     break;
 
-  case 302:
-#line 896 "parser.Y"
+  case 316:
+#line 926 "parser.Y"
     {fr->getOrientCmd();;}
     break;
 
-  case 304:
-#line 899 "parser.Y"
-    {fr->getPixelTableCmd(Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real)), (InternalSystem)(yyvsp[(3) - (8)].integer), (yyvsp[(6) - (8)].integer), (yyvsp[(7) - (8)].integer), (yyvsp[(8) - (8)].str));;}
+  case 318:
+#line 929 "parser.Y"
+    {fr->getPixelTableCmd(Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real)), (Coord::InternalSystem)(yyvsp[(3) - (8)].integer), (yyvsp[(6) - (8)].integer), (yyvsp[(7) - (8)].integer), (yyvsp[(8) - (8)].str));;}
     break;
 
-  case 309:
-#line 904 "parser.Y"
+  case 323:
+#line 934 "parser.Y"
     {fr->getTypeCmd();;}
     break;
 
-  case 310:
-#line 906 "parser.Y"
-    {fr->getValueCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(InternalSystem)(yyvsp[(2) - (4)].integer));;}
+  case 324:
+#line 936 "parser.Y"
+    {fr->getValueCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(Coord::InternalSystem)(yyvsp[(2) - (4)].integer));;}
     break;
 
-  case 311:
-#line 908 "parser.Y"
-    {fr->getVertCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(InternalSystem)(yyvsp[(7) - (7)].integer));;}
+  case 325:
+#line 938 "parser.Y"
+    {fr->getVertCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(Coord::InternalSystem)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 314:
-#line 913 "parser.Y"
+  case 328:
+#line 943 "parser.Y"
     {fr->getBinDepthCmd();;}
     break;
 
-  case 315:
-#line 914 "parser.Y"
+  case 329:
+#line 944 "parser.Y"
     {fr->getBinFactorCmd();;}
     break;
 
-  case 316:
-#line 915 "parser.Y"
+  case 330:
+#line 945 "parser.Y"
     {fr->getBinFunctionCmd();;}
     break;
 
-  case 317:
-#line 916 "parser.Y"
+  case 331:
+#line 946 "parser.Y"
     {fr->getBinBufferSizeCmd();;}
     break;
 
-  case 318:
-#line 917 "parser.Y"
+  case 332:
+#line 947 "parser.Y"
     {fr->getBinCursorCmd();;}
     break;
 
-  case 319:
-#line 918 "parser.Y"
+  case 333:
+#line 948 "parser.Y"
     {fr->getBinFilterCmd();;}
     break;
 
-  case 321:
-#line 920 "parser.Y"
+  case 335:
+#line 950 "parser.Y"
     {fr->getBinListCmd();;}
     break;
 
-  case 322:
-#line 923 "parser.Y"
+  case 336:
+#line 953 "parser.Y"
     {fr->getBinColsCmd();;}
     break;
 
-  case 323:
-#line 924 "parser.Y"
+  case 337:
+#line 954 "parser.Y"
     {fr->getBinColsMinMaxCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 324:
-#line 925 "parser.Y"
+  case 338:
+#line 955 "parser.Y"
     {fr->getBinColsDimCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 326:
-#line 929 "parser.Y"
+  case 340:
+#line 959 "parser.Y"
     {fr->getClipScopeCmd();;}
     break;
 
-  case 327:
-#line 930 "parser.Y"
+  case 341:
+#line 960 "parser.Y"
     {fr->getClipModeCmd();;}
     break;
 
-  case 329:
-#line 932 "parser.Y"
+  case 343:
+#line 962 "parser.Y"
     {fr->getClipUserCmd();;}
     break;
 
-  case 331:
-#line 934 "parser.Y"
+  case 345:
+#line 964 "parser.Y"
     {fr->getClipPreserveCmd();;}
     break;
 
-  case 332:
-#line 937 "parser.Y"
+  case 346:
+#line 967 "parser.Y"
     {fr->getClipCmd();;}
     break;
 
-  case 333:
-#line 938 "parser.Y"
+  case 347:
+#line 968 "parser.Y"
     {fr->getClipCmd((yyvsp[(1) - (1)].real));;}
     break;
 
-  case 334:
-#line 939 "parser.Y"
+  case 348:
+#line 969 "parser.Y"
     {fr->getClipCmd(FrScale::MINMAX);;}
     break;
 
-  case 335:
-#line 940 "parser.Y"
+  case 349:
+#line 970 "parser.Y"
     {fr->getClipCmd(FrScale::ZSCALE);;}
     break;
 
-  case 336:
-#line 941 "parser.Y"
+  case 350:
+#line 971 "parser.Y"
     {fr->getClipCmd(FrScale::ZMAX);;}
     break;
 
-  case 337:
-#line 942 "parser.Y"
+  case 351:
+#line 972 "parser.Y"
     {fr->getClipCmd(FrScale::USERCLIP);;}
     break;
 
-  case 338:
-#line 945 "parser.Y"
+  case 352:
+#line 975 "parser.Y"
     {fr->getClipMinMaxModeCmd();;}
     break;
 
-  case 339:
-#line 946 "parser.Y"
+  case 353:
+#line 976 "parser.Y"
     {fr->getClipMinMaxSampleCmd();;}
     break;
 
-  case 340:
-#line 949 "parser.Y"
+  case 354:
+#line 979 "parser.Y"
     {fr->getClipZScaleContrastCmd();;}
     break;
 
-  case 341:
-#line 950 "parser.Y"
+  case 355:
+#line 980 "parser.Y"
     {fr->getClipZScaleSampleCmd();;}
     break;
 
-  case 342:
-#line 951 "parser.Y"
+  case 356:
+#line 981 "parser.Y"
     {fr->getClipZScaleLineCmd();;}
     break;
 
-  case 344:
-#line 957 "parser.Y"
+  case 358:
+#line 987 "parser.Y"
     {fr->getColorMapLevelCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 345:
-#line 959 "parser.Y"
-    {fr->getColorMapLevelCmd((yyvsp[(1) - (4)].integer),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(InternalSystem)(yyvsp[(2) - (4)].integer));;}
+  case 359:
+#line 989 "parser.Y"
+    {fr->getColorMapLevelCmd((yyvsp[(1) - (4)].integer),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(Coord::InternalSystem)(yyvsp[(2) - (4)].integer));;}
     break;
 
-  case 346:
-#line 961 "parser.Y"
+  case 360:
+#line 991 "parser.Y"
     {fr->getColorMapLevelCmd((yyvsp[(1) - (5)].integer),(yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real),(FrScale::ColorScaleType)(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].real));;}
     break;
 
-  case 347:
-#line 964 "parser.Y"
+  case 361:
+#line 994 "parser.Y"
     {fr->getColorScaleCmd();;}
     break;
 
-  case 349:
-#line 966 "parser.Y"
+  case 363:
+#line 996 "parser.Y"
     {fr->getColorScaleLogCmd();;}
     break;
 
-  case 350:
-#line 970 "parser.Y"
+  case 364:
+#line 1000 "parser.Y"
     {fr->getColorScaleLevelCmd((yyvsp[(1) - (5)].integer),(yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real),(FrScale::ColorScaleType)(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].real));;}
     break;
 
-  case 351:
-#line 974 "parser.Y"
-    {fr->getContourCmd((CoordSystem)(yyvsp[(1) - (2)].integer),(SkyFrame)(yyvsp[(2) - (2)].integer));;}
+  case 365:
+#line 1004 "parser.Y"
+    {fr->getContourCmd((Coord::CoordSystem)(yyvsp[(1) - (2)].integer),(Coord::SkyFrame)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 354:
-#line 977 "parser.Y"
+  case 368:
+#line 1007 "parser.Y"
     {fr->getContourColorNameCmd();;}
     break;
 
-  case 355:
-#line 978 "parser.Y"
+  case 369:
+#line 1008 "parser.Y"
     {fr->getContourDashCmd();;}
     break;
 
-  case 356:
-#line 979 "parser.Y"
+  case 370:
+#line 1009 "parser.Y"
     {fr->getContourLevelCmd();;}
     break;
 
-  case 357:
-#line 980 "parser.Y"
+  case 371:
+#line 1010 "parser.Y"
     {fr->getContourNumLevelCmd();;}
     break;
 
-  case 358:
-#line 981 "parser.Y"
+  case 372:
+#line 1011 "parser.Y"
     {fr->getContourMethodCmd();;}
     break;
 
-  case 360:
-#line 983 "parser.Y"
+  case 374:
+#line 1013 "parser.Y"
     {fr->getContourSmoothCmd();;}
     break;
 
-  case 361:
-#line 984 "parser.Y"
+  case 375:
+#line 1014 "parser.Y"
     {fr->getContourLineWidthCmd();;}
     break;
 
-  case 362:
-#line 987 "parser.Y"
+  case 376:
+#line 1017 "parser.Y"
     {fr->getContourAuxColorNameCmd();;}
     break;
 
-  case 363:
-#line 988 "parser.Y"
+  case 377:
+#line 1018 "parser.Y"
     {fr->getContourAuxDashCmd();;}
     break;
 
-  case 364:
-#line 989 "parser.Y"
+  case 378:
+#line 1019 "parser.Y"
     {fr->getContourAuxLineWidthCmd();;}
     break;
 
-  case 365:
-#line 992 "parser.Y"
+  case 379:
+#line 1022 "parser.Y"
     {fr->getContourClipCmd();;}
     break;
 
-  case 366:
-#line 993 "parser.Y"
+  case 380:
+#line 1023 "parser.Y"
     {fr->getContourClipModeCmd();;}
     break;
 
-  case 367:
-#line 996 "parser.Y"
+  case 381:
+#line 1026 "parser.Y"
     {fr->getContourScaleCmd();;}
     break;
 
-  case 368:
-#line 997 "parser.Y"
+  case 382:
+#line 1027 "parser.Y"
     {fr->getContourScaleLogCmd();;}
     break;
 
-  case 369:
-#line 1001 "parser.Y"
-    {fr->getCoordCmd(Vector((yyvsp[(1) - (5)].real),(yyvsp[(2) - (5)].real)), (CoordSystem)(yyvsp[(3) - (5)].integer), (SkyFrame)(yyvsp[(4) - (5)].integer),
-	    (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+  case 383:
+#line 1031 "parser.Y"
+    {fr->getCoordCmd(Vector((yyvsp[(1) - (5)].real),(yyvsp[(2) - (5)].real)), (Coord::CoordSystem)(yyvsp[(3) - (5)].integer), (Coord::SkyFrame)(yyvsp[(4) - (5)].integer),
+	    (Coord::SkyFormat)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 370:
-#line 1004 "parser.Y"
+  case 384:
+#line 1034 "parser.Y"
     {
 	  // backward compatibility
-	  fr->getCoordCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), (CoordSystem)(yyvsp[(4) - (6)].integer), (SkyFrame)(yyvsp[(5) - (6)].integer),
-	    (SkyFormat)(yyvsp[(6) - (6)].integer));
+	  fr->getCoordCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), (Coord::CoordSystem)(yyvsp[(4) - (6)].integer), (Coord::SkyFrame)(yyvsp[(5) - (6)].integer),
+	    (Coord::SkyFormat)(yyvsp[(6) - (6)].integer));
 	;}
     break;
 
-  case 371:
-#line 1010 "parser.Y"
-    {fr->getCoordFromRefCmd((yyvsp[(1) - (3)].real), (CoordSystem)(yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
+  case 385:
+#line 1040 "parser.Y"
+    {fr->getCoordFromRefCmd((yyvsp[(1) - (3)].real), (Coord::CoordSystem)(yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 372:
-#line 1012 "parser.Y"
-    {fr->getCoordFromRefCmd((yyvsp[(2) - (4)].real), (CoordSystem)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer));;}
+  case 386:
+#line 1042 "parser.Y"
+    {fr->getCoordFromRefCmd((yyvsp[(2) - (4)].real), (Coord::CoordSystem)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 373:
-#line 1014 "parser.Y"
-    {fr->getCoordToRefCmd((yyvsp[(2) - (4)].real), (CoordSystem)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer));;}
+  case 387:
+#line 1044 "parser.Y"
+    {fr->getCoordToRefCmd((yyvsp[(2) - (4)].real), (Coord::CoordSystem)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 374:
-#line 1018 "parser.Y"
-    {fr->getCropCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer), (SkyFormat)(yyvsp[(3) - (3)].integer));;}
+  case 388:
+#line 1048 "parser.Y"
+    {fr->getCropCmd((Coord::CoordSystem)(yyvsp[(1) - (3)].integer), (Coord::SkyFrame)(yyvsp[(2) - (3)].integer), (Coord::SkyFormat)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 375:
-#line 1020 "parser.Y"
-    {fr->getCropCenterCmd((CoordSystem)(yyvsp[(2) - (6)].integer), (SkyFrame)(yyvsp[(3) - (6)].integer), (SkyFormat)(yyvsp[(4) - (6)].integer),
-	  (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyDist)(yyvsp[(6) - (6)].integer));;}
+  case 389:
+#line 1050 "parser.Y"
+    {fr->getCropCenterCmd((Coord::CoordSystem)(yyvsp[(2) - (6)].integer), (Coord::SkyFrame)(yyvsp[(3) - (6)].integer), (Coord::SkyFormat)(yyvsp[(4) - (6)].integer),
+	  (Coord::CoordSystem)(yyvsp[(5) - (6)].integer), (Coord::SkyDist)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 376:
-#line 1022 "parser.Y"
-    {fr->getCrop3dCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+  case 390:
+#line 1052 "parser.Y"
+    {fr->getCrop3dCmd((Coord::CoordSystem)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 377:
-#line 1025 "parser.Y"
-    {fr->getCrosshairCmd((InternalSystem)(yyvsp[(1) - (1)].integer));;}
+  case 391:
+#line 1055 "parser.Y"
+    {fr->getCrosshairCmd((Coord::InternalSystem)(yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 378:
-#line 1027 "parser.Y"
-    {fr->getCrosshairCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (SkyFrame)(yyvsp[(2) - (4)].integer), (SkyFormat)(yyvsp[(3) - (4)].integer),
-	    (Precision)(yyvsp[(4) - (4)].integer));}
+  case 392:
+#line 1057 "parser.Y"
+    {fr->getCrosshairCmd((Coord::CoordSystem)(yyvsp[(1) - (4)].integer), (Coord::SkyFrame)(yyvsp[(2) - (4)].integer), (Coord::SkyFormat)(yyvsp[(3) - (4)].integer),
+	    (Base::Precision)(yyvsp[(4) - (4)].integer));}
     break;
 
-  case 379:
-#line 1029 "parser.Y"
+  case 393:
+#line 1059 "parser.Y"
     {fr->getCrosshairStatusCmd();;}
     break;
 
-  case 380:
-#line 1032 "parser.Y"
-    {fr->getCursorCmd((InternalSystem)(yyvsp[(1) - (1)].integer));;}
+  case 394:
+#line 1062 "parser.Y"
+    {fr->getCursorCmd((Coord::InternalSystem)(yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 381:
-#line 1034 "parser.Y"
-    {fr->getCursorCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (SkyFrame)(yyvsp[(2) - (4)].integer), (SkyFormat)(yyvsp[(3) - (4)].integer),
-	    (Precision)(yyvsp[(4) - (4)].integer));;}
+  case 395:
+#line 1064 "parser.Y"
+    {fr->getCursorCmd((Coord::CoordSystem)(yyvsp[(1) - (4)].integer), (Coord::SkyFrame)(yyvsp[(2) - (4)].integer), (Coord::SkyFormat)(yyvsp[(3) - (4)].integer),
+	    (Base::Precision)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 382:
-#line 1039 "parser.Y"
+  case 396:
+#line 1069 "parser.Y"
     {fr->getDataValuesCmd(1, Vector((yyvsp[(3) - (6)].vector)), 
-	    (CoordSystem)(yyvsp[(1) - (6)].integer), (SkyFrame)(yyvsp[(2) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)), (yyvsp[(6) - (6)].str));;}
+	    (Coord::CoordSystem)(yyvsp[(1) - (6)].integer), (Coord::SkyFrame)(yyvsp[(2) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)), (yyvsp[(6) - (6)].str));;}
     break;
 
-  case 383:
-#line 1042 "parser.Y"
+  case 397:
+#line 1072 "parser.Y"
     {fr->getDataValuesCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].vector)), 
-	    (CoordSystem)(yyvsp[(2) - (7)].integer), (SkyFrame)(yyvsp[(3) - (7)].integer), Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)), (yyvsp[(7) - (7)].str));;}
+	    (Coord::CoordSystem)(yyvsp[(2) - (7)].integer), (Coord::SkyFrame)(yyvsp[(3) - (7)].integer), Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)), (yyvsp[(7) - (7)].str));;}
     break;
 
-  case 384:
-#line 1045 "parser.Y"
-    {fr->getDataValuesCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),(InternalSystem)(yyvsp[(1) - (5)].integer),
+  case 398:
+#line 1075 "parser.Y"
+    {fr->getDataValuesCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),(Coord::InternalSystem)(yyvsp[(1) - (5)].integer),
 	    Vector((yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer)));;}
     break;
 
-  case 385:
-#line 1049 "parser.Y"
+  case 399:
+#line 1079 "parser.Y"
     {fr->getInfoCmd((yyvsp[(1) - (1)].str));;}
     break;
 
-  case 386:
-#line 1050 "parser.Y"
+  case 400:
+#line 1080 "parser.Y"
     {fr->getInfoClipCmd();;}
     break;
 
-  case 387:
-#line 1052 "parser.Y"
-    {fr->getInfoCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)), (InternalSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str));;}
+  case 401:
+#line 1082 "parser.Y"
+    {fr->getInfoCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)), (Coord::InternalSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str));;}
     break;
 
-  case 388:
-#line 1055 "parser.Y"
+  case 402:
+#line 1085 "parser.Y"
     {fr->iisGetCmd((char*)(yyvsp[(1) - (5)].ptr),(yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 389:
-#line 1056 "parser.Y"
+  case 403:
+#line 1086 "parser.Y"
     {fr->iisGetCursorCmd();;}
     break;
 
-  case 390:
-#line 1057 "parser.Y"
+  case 404:
+#line 1087 "parser.Y"
     {fr->getWidthCmd();;}
     break;
 
-  case 391:
-#line 1058 "parser.Y"
+  case 405:
+#line 1088 "parser.Y"
     {fr->getHeightCmd();;}
     break;
 
-  case 393:
-#line 1062 "parser.Y"
+  case 407:
+#line 1092 "parser.Y"
     {fr->iisGetFileNameCmd();;}
     break;
 
-  case 394:
-#line 1063 "parser.Y"
+  case 408:
+#line 1093 "parser.Y"
     {fr->iisGetFileNameCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 395:
-#line 1064 "parser.Y"
+  case 409:
+#line 1094 "parser.Y"
     {fr->iisGetFileNameCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 396:
-#line 1067 "parser.Y"
+  case 410:
+#line 1097 "parser.Y"
     {fr->getFitsNAxesCmd();;}
     break;
 
-  case 397:
-#line 1069 "parser.Y"
-    {fr->getFitsCenterCmd((CoordSystem)(yyvsp[(2) - (5)].integer),(SkyFrame)(yyvsp[(3) - (5)].integer),(SkyFormat)(yyvsp[(4) - (5)].integer),
-	      (Precision)(yyvsp[(5) - (5)].integer));;}
+  case 411:
+#line 1099 "parser.Y"
+    {fr->getFitsCenterCmd((Coord::CoordSystem)(yyvsp[(2) - (5)].integer),(Coord::SkyFrame)(yyvsp[(3) - (5)].integer),(Coord::SkyFormat)(yyvsp[(4) - (5)].integer),
+	      (Base::Precision)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 398:
-#line 1071 "parser.Y"
+  case 412:
+#line 1101 "parser.Y"
     {fr->getFitsCountCmd();;}
     break;
 
-  case 400:
-#line 1073 "parser.Y"
+  case 414:
+#line 1103 "parser.Y"
     {fr->getBitpixCmd();;}
     break;
 
-  case 401:
-#line 1075 "parser.Y"
-    {fr->getFitsExtCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(InternalSystem)(yyvsp[(2) - (4)].integer));;}
+  case 415:
+#line 1105 "parser.Y"
+    {fr->getFitsExtCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(Coord::InternalSystem)(yyvsp[(2) - (4)].integer));;}
     break;
 
-  case 404:
-#line 1078 "parser.Y"
+  case 418:
+#line 1108 "parser.Y"
     {fr->getHeightCmd();;}
     break;
 
-  case 405:
-#line 1079 "parser.Y"
+  case 419:
+#line 1109 "parser.Y"
     {fr->getFitsObjectNameCmd();;}
     break;
 
-  case 406:
-#line 1080 "parser.Y"
+  case 420:
+#line 1110 "parser.Y"
     {fr->getFitsSizeCmd();;}
     break;
 
-  case 407:
-#line 1082 "parser.Y"
-    {fr->getFitsSizeCmd((CoordSystem)(yyvsp[(2) - (5)].integer),(SkyFrame)(yyvsp[(3) - (5)].integer),(SkyDist)(yyvsp[(4) - (5)].integer),
-	      (Precision)(yyvsp[(5) - (5)].integer));;}
+  case 421:
+#line 1112 "parser.Y"
+    {fr->getFitsSizeCmd((Coord::CoordSystem)(yyvsp[(2) - (5)].integer),(Coord::SkyFrame)(yyvsp[(3) - (5)].integer),(Coord::SkyDist)(yyvsp[(4) - (5)].integer),
+	      (Base::Precision)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 409:
-#line 1085 "parser.Y"
+  case 423:
+#line 1115 "parser.Y"
     {fr->getWidthCmd();;}
     break;
 
-  case 410:
-#line 1088 "parser.Y"
+  case 424:
+#line 1118 "parser.Y"
     {fr->getFitsHeaderCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 411:
-#line 1089 "parser.Y"
+  case 425:
+#line 1119 "parser.Y"
     {fr->getFitsHeaderKeywordCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 412:
-#line 1090 "parser.Y"
+  case 426:
+#line 1120 "parser.Y"
     {fr->getFitsHeaderWCSCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 413:
-#line 1093 "parser.Y"
+  case 427:
+#line 1123 "parser.Y"
     {fr->getFitsDepthCmd(2);;}
     break;
 
-  case 414:
-#line 1094 "parser.Y"
+  case 428:
+#line 1124 "parser.Y"
     {fr->getFitsDepthCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 415:
-#line 1098 "parser.Y"
+  case 429:
+#line 1128 "parser.Y"
     {fr->getFitsFileNameCmd((Base::FileNameType)(yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 416:
-#line 1100 "parser.Y"
-    {fr->getFitsFileNameCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (InternalSystem)(yyvsp[(2) - (4)].integer),
+  case 430:
+#line 1130 "parser.Y"
+    {fr->getFitsFileNameCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (Coord::InternalSystem)(yyvsp[(2) - (4)].integer),
 	    (Base::FileNameType)(yyvsp[(1) - (4)].integer));;}
     break;
 
-  case 417:
-#line 1103 "parser.Y"
+  case 431:
+#line 1133 "parser.Y"
     {fr->getFitsFileNameCmd((yyvsp[(2) - (2)].integer), (Base::FileNameType)(yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 418:
-#line 1106 "parser.Y"
+  case 432:
+#line 1136 "parser.Y"
     {fr->getFitsSliceCmd(2);;}
     break;
 
-  case 419:
-#line 1107 "parser.Y"
+  case 433:
+#line 1137 "parser.Y"
     {fr->getFitsSliceCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 420:
-#line 1110 "parser.Y"
+  case 434:
+#line 1140 "parser.Y"
     {fr->getGridCmd();;}
     break;
 
-  case 421:
-#line 1111 "parser.Y"
+  case 435:
+#line 1141 "parser.Y"
     {fr->getGridOptionCmd();;}
     break;
 
-  case 422:
-#line 1114 "parser.Y"
+  case 436:
+#line 1144 "parser.Y"
     {fr->getMaskColorCmd();;}
     break;
 
-  case 423:
-#line 1115 "parser.Y"
+  case 437:
+#line 1145 "parser.Y"
     {fr->getMaskMarkCmd();;}
     break;
 
-  case 424:
-#line 1116 "parser.Y"
+  case 438:
+#line 1146 "parser.Y"
     {fr->getMaskTransparencyCmd();;}
     break;
 
-  case 425:
-#line 1119 "parser.Y"
+  case 439:
+#line 1149 "parser.Y"
     {fr->getPanPreserveCmd();;}
     break;
 
-  case 426:
-#line 1122 "parser.Y"
+  case 440:
+#line 1152 "parser.Y"
     {fr->getRGBChannelCmd();;}
     break;
 
-  case 427:
-#line 1123 "parser.Y"
+  case 441:
+#line 1153 "parser.Y"
     {fr->getRGBSystemCmd();;}
     break;
 
-  case 428:
-#line 1124 "parser.Y"
+  case 442:
+#line 1154 "parser.Y"
     {fr->getRGBViewCmd();;}
     break;
 
-  case 429:
-#line 1127 "parser.Y"
-    {fr->getRotateCmd((Precision)(yyvsp[(1) - (1)].integer));;}
+  case 443:
+#line 1157 "parser.Y"
+    {fr->getRotateCmd((Base::Precision)(yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 430:
-#line 1130 "parser.Y"
+  case 444:
+#line 1160 "parser.Y"
     {fr->getSmoothFunctionCmd();;}
     break;
 
-  case 431:
-#line 1131 "parser.Y"
+  case 445:
+#line 1161 "parser.Y"
     {fr->getSmoothRadiusCmd();;}
     break;
 
-  case 432:
-#line 1134 "parser.Y"
+  case 446:
+#line 1164 "parser.Y"
     {fr->get3dViewCmd();;}
     break;
 
-  case 433:
-#line 1135 "parser.Y"
+  case 447:
+#line 1165 "parser.Y"
     {fr->get3dHighliteCmd();;}
     break;
 
-  case 434:
-#line 1136 "parser.Y"
+  case 448:
+#line 1166 "parser.Y"
     {fr->get3dRenderMethodCmd();;}
     break;
 
-  case 435:
-#line 1137 "parser.Y"
+  case 449:
+#line 1167 "parser.Y"
     {fr->get3dThreadsCmd();;}
     break;
 
-  case 436:
-#line 1140 "parser.Y"
+  case 450:
+#line 1170 "parser.Y"
     {fr->getWCSCmd();;}
     break;
 
-  case 438:
-#line 1142 "parser.Y"
-    {fr->getWCSNameCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+  case 452:
+#line 1172 "parser.Y"
+    {fr->getWCSNameCmd((Coord::CoordSystem)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 439:
-#line 1145 "parser.Y"
+  case 453:
+#line 1175 "parser.Y"
     {fr->getWCSAlignCmd();;}
     break;
 
-  case 440:
-#line 1146 "parser.Y"
+  case 454:
+#line 1176 "parser.Y"
     {fr->getWCSAlignPointerCmd();;}
     break;
 
-  case 441:
-#line 1149 "parser.Y"
-    {fr->getZoomCmd((Precision)(yyvsp[(1) - (1)].integer));;}
+  case 455:
+#line 1179 "parser.Y"
+    {fr->getZoomCmd((Base::Precision)(yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 442:
-#line 1153 "parser.Y"
-    {fr->gridCmd((CoordSystem)(yyvsp[(2) - (6)].integer), (SkyFrame)(yyvsp[(3) - (6)].integer), (SkyFormat)(yyvsp[(4) - (6)].integer),
+  case 456:
+#line 1183 "parser.Y"
+    {fr->gridCmd((Coord::CoordSystem)(yyvsp[(2) - (6)].integer), (Coord::SkyFrame)(yyvsp[(3) - (6)].integer), (Coord::SkyFormat)(yyvsp[(4) - (6)].integer),
 	     (Grid2d::GridType)(yyvsp[(5) - (6)].integer), (yyvsp[(6) - (6)].str));;}
     break;
 
-  case 443:
-#line 1155 "parser.Y"
+  case 457:
+#line 1185 "parser.Y"
     {fr->gridDeleteCmd();;}
     break;
 
-  case 444:
-#line 1158 "parser.Y"
+  case 458:
+#line 1188 "parser.Y"
     {(yyval.integer)=Grid2d::ANALYSIS;;}
     break;
 
-  case 445:
-#line 1159 "parser.Y"
+  case 459:
+#line 1189 "parser.Y"
     {(yyval.integer)=Grid2d::PUBLICATION;;}
     break;
 
-  case 446:
-#line 1162 "parser.Y"
+  case 460:
+#line 1192 "parser.Y"
     {fr->hasAmplifierCmd();;}
     break;
 
-  case 448:
-#line 1164 "parser.Y"
+  case 463:
+#line 1195 "parser.Y"
     {fr->hasCropCmd();;}
     break;
 
-  case 449:
-#line 1165 "parser.Y"
+  case 464:
+#line 1196 "parser.Y"
     {fr->hasDATAMINCmd();;}
     break;
 
-  case 450:
-#line 1166 "parser.Y"
+  case 465:
+#line 1197 "parser.Y"
     {fr->hasDATASECCmd();;}
     break;
 
-  case 451:
-#line 1167 "parser.Y"
+  case 466:
+#line 1198 "parser.Y"
     {fr->hasDetectorCmd();;}
     break;
 
-  case 453:
-#line 1169 "parser.Y"
+  case 468:
+#line 1200 "parser.Y"
     {fr->hasGridCmd();;}
     break;
 
-  case 454:
-#line 1170 "parser.Y"
+  case 469:
+#line 1201 "parser.Y"
     {fr->hasIISCmd();;}
     break;
 
-  case 455:
-#line 1171 "parser.Y"
+  case 470:
+#line 1202 "parser.Y"
     {fr->hasIRAFMINCmd();;}
     break;
 
-  case 457:
-#line 1173 "parser.Y"
+  case 472:
+#line 1204 "parser.Y"
     {fr->hasPhysicalCmd();;}
     break;
 
-  case 458:
-#line 1174 "parser.Y"
+  case 473:
+#line 1205 "parser.Y"
     {fr->hasSmoothCmd();;}
     break;
 
-  case 459:
-#line 1175 "parser.Y"
-    {fr->hasSystemCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+  case 474:
+#line 1206 "parser.Y"
+    {fr->hasSystemCmd((Coord::CoordSystem)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 461:
-#line 1179 "parser.Y"
+  case 476:
+#line 1210 "parser.Y"
+    {fr->hasBinColCmd((yyvsp[(2) - (2)].str));;}
+    break;
+
+  case 477:
+#line 1213 "parser.Y"
     {fr->hasContourCmd();;}
     break;
 
-  case 462:
-#line 1180 "parser.Y"
+  case 478:
+#line 1214 "parser.Y"
     {fr->hasContourAuxCmd();;}
     break;
 
-  case 463:
-#line 1183 "parser.Y"
+  case 479:
+#line 1217 "parser.Y"
     {fr->hasFitsCmd();;}
     break;
 
-  case 464:
-#line 1184 "parser.Y"
+  case 480:
+#line 1218 "parser.Y"
     {fr->hasFitsBinCmd();;}
     break;
 
-  case 465:
-#line 1185 "parser.Y"
+  case 481:
+#line 1219 "parser.Y"
     {fr->hasFitsCubeCmd();;}
     break;
 
-  case 466:
-#line 1186 "parser.Y"
+  case 482:
+#line 1220 "parser.Y"
     {fr->hasFitsMosaicCmd();;}
     break;
 
-  case 467:
-#line 1189 "parser.Y"
+  case 483:
+#line 1223 "parser.Y"
     {fr->hasMarkerHighlitedCmd();;}
     break;
 
-  case 468:
-#line 1190 "parser.Y"
+  case 484:
+#line 1224 "parser.Y"
     {fr->hasMarkerSelectedCmd();;}
     break;
 
-  case 469:
-#line 1191 "parser.Y"
+  case 485:
+#line 1225 "parser.Y"
     {fr->hasMarkerPasteCmd();;}
     break;
 
-  case 470:
-#line 1192 "parser.Y"
+  case 486:
+#line 1226 "parser.Y"
     {fr->hasMarkerUndoCmd();;}
     break;
 
-  case 471:
-#line 1195 "parser.Y"
-    {fr->hasWCSCmd((CoordSystem)(yyvsp[(1) - (1)].integer));;}
+  case 487:
+#line 1229 "parser.Y"
+    {fr->hasWCSCmd((Coord::CoordSystem)(yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 472:
-#line 1196 "parser.Y"
-    {fr->hasWCSEquCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+  case 488:
+#line 1230 "parser.Y"
+    {fr->hasWCSEquCmd((Coord::CoordSystem)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 473:
-#line 1197 "parser.Y"
-    {fr->hasWCSCelCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+  case 489:
+#line 1231 "parser.Y"
+    {fr->hasWCSCelCmd((Coord::CoordSystem)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 474:
-#line 1198 "parser.Y"
+  case 490:
+#line 1232 "parser.Y"
     {fr->hasWCSAltCmd();;}
     break;
 
-  case 475:
-#line 1201 "parser.Y"
+  case 491:
+#line 1235 "parser.Y"
     {fr->iisCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 476:
-#line 1202 "parser.Y"
+  case 492:
+#line 1236 "parser.Y"
     {fr->iisEraseCmd();;}
     break;
 
-  case 477:
-#line 1203 "parser.Y"
+  case 493:
+#line 1237 "parser.Y"
     {fr->iisMessageCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 480:
-#line 1207 "parser.Y"
+  case 496:
+#line 1241 "parser.Y"
     {fr->iisSetCmd((const char*)(yyvsp[(2) - (6)].ptr),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 481:
-#line 1208 "parser.Y"
+  case 497:
+#line 1242 "parser.Y"
     {fr->iisUpdateCmd();;}
     break;
 
-  case 482:
-#line 1211 "parser.Y"
+  case 498:
+#line 1245 "parser.Y"
     {fr->iisWCSCmd(Matrix((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real)),Vector((yyvsp[(8) - (10)].real),(yyvsp[(9) - (10)].real)),(yyvsp[(10) - (10)].integer));;}
     break;
 
-  case 483:
-#line 1214 "parser.Y"
+  case 499:
+#line 1248 "parser.Y"
     {fr->iisSetFileNameCmd((yyvsp[(1) - (1)].str));;}
     break;
 
-  case 484:
-#line 1215 "parser.Y"
+  case 500:
+#line 1249 "parser.Y"
     {fr->iisSetFileNameCmd((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 485:
-#line 1219 "parser.Y"
-    {fr->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),CANVAS);;}
+  case 501:
+#line 1253 "parser.Y"
+    {fr->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),Coord::CANVAS);;}
     break;
 
-  case 486:
-#line 1221 "parser.Y"
-    {fr->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),(CoordSystem)(yyvsp[(3) - (3)].integer));;}
+  case 502:
+#line 1255 "parser.Y"
+    {fr->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),(Coord::CoordSystem)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 487:
-#line 1222 "parser.Y"
+  case 503:
+#line 1256 "parser.Y"
     {fr->iisCursorModeCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 491:
-#line 1231 "parser.Y"
-    {fr->loadArrAllocCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
+  case 507:
+#line 1262 "parser.Y"
+    {fr->loadPhotoCmd((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 492:
-#line 1233 "parser.Y"
+  case 508:
+#line 1266 "parser.Y"
+    {fr->loadArrAllocCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 509:
+#line 1268 "parser.Y"
     {fr->loadArrAllocGZCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 493:
-#line 1235 "parser.Y"
+  case 510:
+#line 1270 "parser.Y"
     {fr->loadArrChannelCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 494:
-#line 1237 "parser.Y"
+  case 511:
+#line 1272 "parser.Y"
     {fr->loadArrMMapCmd((yyvsp[(1) - (3)].str), (Base::LayerType)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 495:
-#line 1239 "parser.Y"
+  case 512:
+#line 1274 "parser.Y"
     {fr->loadArrMMapIncrCmd((yyvsp[(1) - (3)].str), (Base::LayerType)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 496:
-#line 1241 "parser.Y"
+  case 513:
+#line 1276 "parser.Y"
     {fr->loadArrShareCmd((Base::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str),
 	    (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 497:
-#line 1244 "parser.Y"
+  case 514:
+#line 1279 "parser.Y"
     {fr->loadArrSocketCmd((yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 498:
-#line 1246 "parser.Y"
+  case 515:
+#line 1281 "parser.Y"
     {fr->loadArrSocketGZCmd((yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 499:
-#line 1248 "parser.Y"
+  case 516:
+#line 1283 "parser.Y"
     {fr->loadArrVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 501:
-#line 1252 "parser.Y"
+  case 518:
+#line 1287 "parser.Y"
     {fr->loadArrRGBCubeAllocCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 502:
-#line 1253 "parser.Y"
+  case 519:
+#line 1288 "parser.Y"
     {fr->loadArrRGBCubeAllocGZCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 503:
-#line 1254 "parser.Y"
+  case 520:
+#line 1289 "parser.Y"
     {fr->loadArrRGBCubeChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 504:
-#line 1255 "parser.Y"
+  case 521:
+#line 1290 "parser.Y"
     {fr->loadArrRGBCubeMMapCmd((yyvsp[(1) - (2)].str));;}
     break;
 
-  case 505:
-#line 1256 "parser.Y"
+  case 522:
+#line 1291 "parser.Y"
     {fr->loadArrRGBCubeMMapIncrCmd((yyvsp[(1) - (2)].str));;}
     break;
 
-  case 506:
-#line 1258 "parser.Y"
+  case 523:
+#line 1293 "parser.Y"
     {fr->loadArrRGBCubeShareCmd((Base::ShmType)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(1) - (4)].str));;}
     break;
 
-  case 507:
-#line 1259 "parser.Y"
+  case 524:
+#line 1294 "parser.Y"
     {fr->loadArrRGBCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 508:
-#line 1260 "parser.Y"
+  case 525:
+#line 1295 "parser.Y"
     {fr->loadArrRGBCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 509:
-#line 1261 "parser.Y"
+  case 526:
+#line 1296 "parser.Y"
     {fr->loadArrRGBCubeVarCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 510:
-#line 1265 "parser.Y"
+  case 527:
+#line 1300 "parser.Y"
     {fr->loadFitsAllocCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 511:
-#line 1267 "parser.Y"
+  case 528:
+#line 1302 "parser.Y"
     {fr->loadFitsAllocGZCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 512:
-#line 1269 "parser.Y"
+  case 529:
+#line 1304 "parser.Y"
     {fr->loadFitsChannelCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 513:
-#line 1271 "parser.Y"
+  case 530:
+#line 1306 "parser.Y"
     {fr->loadFitsMMapCmd((yyvsp[(1) - (4)].str),(Base::LoadMethod)(yyvsp[(3) - (4)].integer),
 	    (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 514:
-#line 1274 "parser.Y"
+  case 531:
+#line 1309 "parser.Y"
     {fr->loadFitsSMMapCmd((yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].str),(Base::LoadMethod)(yyvsp[(4) - (5)].integer),	
 	    (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 515:
-#line 1277 "parser.Y"
+  case 532:
+#line 1312 "parser.Y"
     {fr->loadFitsMMapIncrCmd((yyvsp[(1) - (4)].str),(Base::LoadMethod)(yyvsp[(3) - (4)].integer),
 	    (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 516:
-#line 1280 "parser.Y"
+  case 533:
+#line 1315 "parser.Y"
     {fr->loadFitsShareCmd((Base::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(1) - (6)].str), 
 	    (Base::LoadMethod)(yyvsp[(5) - (6)].integer),(Base::LayerType)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 517:
-#line 1283 "parser.Y"
+  case 534:
+#line 1318 "parser.Y"
     {fr->loadFitsSShareCmd((Base::ShmType)(yyvsp[(3) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer), (yyvsp[(1) - (7)].str), 
 	    (Base::LoadMethod)(yyvsp[(6) - (7)].integer),(Base::LayerType)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 518:
-#line 1286 "parser.Y"
+  case 535:
+#line 1321 "parser.Y"
     {fr->loadFitsSocketCmd((yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 519:
-#line 1288 "parser.Y"
+  case 536:
+#line 1323 "parser.Y"
     {fr->loadFitsSocketGZCmd((yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 520:
-#line 1290 "parser.Y"
+  case 537:
+#line 1325 "parser.Y"
     {fr->loadFitsVarCmd((yyvsp[(3) - (5)].str), (yyvsp[(1) - (5)].str), (Base::LoadMethod)(yyvsp[(4) - (5)].integer),
 	    (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 525:
-#line 1299 "parser.Y"
+  case 542:
+#line 1334 "parser.Y"
     {fr->loadSliceAllocCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 526:
-#line 1301 "parser.Y"
+  case 543:
+#line 1336 "parser.Y"
     {fr->loadSliceAllocGZCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 527:
-#line 1303 "parser.Y"
+  case 544:
+#line 1338 "parser.Y"
     {fr->loadSliceChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 528:
-#line 1305 "parser.Y"
+  case 545:
+#line 1340 "parser.Y"
     {fr->loadSliceMMapCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 529:
-#line 1307 "parser.Y"
+  case 546:
+#line 1342 "parser.Y"
     {fr->loadSliceSMMapCmd((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 530:
-#line 1309 "parser.Y"
+  case 547:
+#line 1344 "parser.Y"
     {fr->loadSliceMMapIncrCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 531:
-#line 1311 "parser.Y"
+  case 548:
+#line 1346 "parser.Y"
     {fr->loadSliceShareCmd((Base::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), (Base::LoadMethod)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 532:
-#line 1313 "parser.Y"
+  case 549:
+#line 1348 "parser.Y"
     {fr->loadSliceSShareCmd((Base::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(1) - (6)].str), (Base::LoadMethod)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 533:
-#line 1315 "parser.Y"
+  case 550:
+#line 1350 "parser.Y"
     {fr->loadSliceSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 534:
-#line 1317 "parser.Y"
+  case 551:
+#line 1352 "parser.Y"
     {fr->loadSliceSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 535:
-#line 1319 "parser.Y"
+  case 552:
+#line 1354 "parser.Y"
     {fr->loadSliceVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 536:
-#line 1323 "parser.Y"
+  case 553:
+#line 1358 "parser.Y"
     {fr->loadExtCubeAllocCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 537:
-#line 1325 "parser.Y"
+  case 554:
+#line 1360 "parser.Y"
     {fr->loadExtCubeAllocGZCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 538:
-#line 1327 "parser.Y"
+  case 555:
+#line 1362 "parser.Y"
     {fr->loadExtCubeChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 539:
-#line 1329 "parser.Y"
+  case 556:
+#line 1364 "parser.Y"
     {fr->loadExtCubeMMapCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 540:
-#line 1331 "parser.Y"
+  case 557:
+#line 1366 "parser.Y"
     {fr->loadExtCubeMMapIncrCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 541:
-#line 1333 "parser.Y"
+  case 558:
+#line 1368 "parser.Y"
     {fr->loadExtCubeShareCmd((Base::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
 	    (Base::LoadMethod)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 542:
-#line 1336 "parser.Y"
+  case 559:
+#line 1371 "parser.Y"
     {fr->loadExtCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 543:
-#line 1338 "parser.Y"
+  case 560:
+#line 1373 "parser.Y"
     {fr->loadExtCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 544:
-#line 1340 "parser.Y"
+  case 561:
+#line 1375 "parser.Y"
     {fr->loadExtCubeVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 550:
-#line 1351 "parser.Y"
-    {fr->loadMosaicImageAllocCmd(Base::IRAF, WCS, 
+  case 567:
+#line 1386 "parser.Y"
+    {fr->loadMosaicImageAllocCmd(Base::IRAF, Coord::WCS, 
 	    (yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 551:
-#line 1354 "parser.Y"
-    {fr->loadMosaicImageAllocGZCmd(Base::IRAF, WCS,
+  case 568:
+#line 1389 "parser.Y"
+    {fr->loadMosaicImageAllocGZCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str),(Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 552:
-#line 1357 "parser.Y"
-    {fr->loadMosaicImageChannelCmd(Base::IRAF, WCS,
+  case 569:
+#line 1392 "parser.Y"
+    {fr->loadMosaicImageChannelCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str),(Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 553:
-#line 1360 "parser.Y"
-    {fr->loadMosaicImageMMapCmd(Base::IRAF, WCS,
+  case 570:
+#line 1395 "parser.Y"
+    {fr->loadMosaicImageMMapCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(1) - (4)].str),(Base::LoadMethod)(yyvsp[(3) - (4)].integer), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 554:
-#line 1363 "parser.Y"
-    {fr->loadMosaicImageMMapIncrCmd(Base::IRAF, WCS,
+  case 571:
+#line 1398 "parser.Y"
+    {fr->loadMosaicImageMMapIncrCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(1) - (4)].str),(Base::LoadMethod)(yyvsp[(3) - (4)].integer), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 555:
-#line 1366 "parser.Y"
-    {fr->loadMosaicImageShareCmd(Base::IRAF, WCS,
+  case 572:
+#line 1401 "parser.Y"
+    {fr->loadMosaicImageShareCmd(Base::IRAF, Coord::WCS,
 	    (Base::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(1) - (6)].str), (Base::LoadMethod)(yyvsp[(5) - (6)].integer),
 	    (Base::LayerType)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 556:
-#line 1370 "parser.Y"
-    {fr->loadMosaicImageSocketCmd(Base::IRAF, WCS,
+  case 573:
+#line 1405 "parser.Y"
+    {fr->loadMosaicImageSocketCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 557:
-#line 1373 "parser.Y"
-    {fr->loadMosaicImageSocketGZCmd(Base::IRAF, WCS,
+  case 574:
+#line 1408 "parser.Y"
+    {fr->loadMosaicImageSocketGZCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 558:
-#line 1376 "parser.Y"
-    {fr->loadMosaicImageVarCmd(Base::IRAF, WCS,
+  case 575:
+#line 1411 "parser.Y"
+    {fr->loadMosaicImageVarCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (5)].str), (yyvsp[(1) - (5)].str), (Base::LoadMethod)(yyvsp[(4) - (5)].integer), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 559:
-#line 1381 "parser.Y"
-    {fr->loadMosaicAllocCmd(Base::IRAF, WCS,
+  case 576:
+#line 1416 "parser.Y"
+    {fr->loadMosaicAllocCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 560:
-#line 1384 "parser.Y"
-    {fr->loadMosaicAllocGZCmd(Base::IRAF, WCS,
+  case 577:
+#line 1419 "parser.Y"
+    {fr->loadMosaicAllocGZCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 561:
-#line 1387 "parser.Y"
-    {fr->loadMosaicChannelCmd(Base::IRAF, WCS,
+  case 578:
+#line 1422 "parser.Y"
+    {fr->loadMosaicChannelCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 562:
-#line 1390 "parser.Y"
-    {fr->loadMosaicMMapCmd(Base::IRAF, WCS,
+  case 579:
+#line 1425 "parser.Y"
+    {fr->loadMosaicMMapCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(1) - (4)].str),(Base::LoadMethod)(yyvsp[(3) - (4)].integer), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 563:
-#line 1393 "parser.Y"
-    {fr->loadMosaicSMMapCmd(Base::IRAF, WCS,
+  case 580:
+#line 1428 "parser.Y"
+    {fr->loadMosaicSMMapCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(1) - (5)].str), (yyvsp[(2) - (5)].str),(Base::LoadMethod)(yyvsp[(4) - (5)].integer), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 564:
-#line 1396 "parser.Y"
-    {fr->loadMosaicMMapIncrCmd(Base::IRAF, WCS,
+  case 581:
+#line 1431 "parser.Y"
+    {fr->loadMosaicMMapIncrCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(1) - (4)].str),(Base::LoadMethod)(yyvsp[(3) - (4)].integer), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 565:
-#line 1399 "parser.Y"
-    {fr->loadMosaicShareCmd(Base::IRAF, WCS,
+  case 582:
+#line 1434 "parser.Y"
+    {fr->loadMosaicShareCmd(Base::IRAF, Coord::WCS,
 	    (Base::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(1) - (6)].str), (Base::LoadMethod)(yyvsp[(5) - (6)].integer), 
 	    (Base::LayerType)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 566:
-#line 1403 "parser.Y"
-    {fr->loadMosaicSShareCmd(Base::IRAF, WCS,
+  case 583:
+#line 1438 "parser.Y"
+    {fr->loadMosaicSShareCmd(Base::IRAF, Coord::WCS,
 	    (Base::ShmType)(yyvsp[(3) - (7)].integer), (yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer), (yyvsp[(1) - (7)].str), (Base::LoadMethod)(yyvsp[(6) - (7)].integer), 
 	    (Base::LayerType)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 567:
-#line 1407 "parser.Y"
-    {fr->loadMosaicSocketCmd(Base::IRAF, WCS,
+  case 584:
+#line 1442 "parser.Y"
+    {fr->loadMosaicSocketCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 568:
-#line 1410 "parser.Y"
-    {fr->loadMosaicSocketGZCmd(Base::IRAF, WCS,
+  case 585:
+#line 1445 "parser.Y"
+    {fr->loadMosaicSocketGZCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str), (Base::LayerType)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 569:
-#line 1413 "parser.Y"
-    {fr->loadMosaicVarCmd(Base::IRAF, WCS,
+  case 586:
+#line 1448 "parser.Y"
+    {fr->loadMosaicVarCmd(Base::IRAF, Coord::WCS,
 	    (yyvsp[(3) - (5)].str), (yyvsp[(1) - (5)].str), (Base::LoadMethod)(yyvsp[(4) - (5)].integer), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 570:
-#line 1418 "parser.Y"
-    {fr->loadMosaicImageAllocCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 587:
+#line 1453 "parser.Y"
+    {fr->loadMosaicImageAllocCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 571:
-#line 1421 "parser.Y"
-    {fr->loadMosaicImageAllocGZCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 588:
+#line 1456 "parser.Y"
+    {fr->loadMosaicImageAllocGZCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 572:
-#line 1424 "parser.Y"
-    {fr->loadMosaicImageChannelCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 589:
+#line 1459 "parser.Y"
+    {fr->loadMosaicImageChannelCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 573:
-#line 1427 "parser.Y"
-    {fr->loadMosaicImageMMapCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 590:
+#line 1462 "parser.Y"
+    {fr->loadMosaicImageMMapCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(2) - (5)].str), (Base::LoadMethod)(yyvsp[(4) - (5)].integer), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 574:
-#line 1430 "parser.Y"
-    {fr->loadMosaicImageMMapIncrCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 591:
+#line 1465 "parser.Y"
+    {fr->loadMosaicImageMMapIncrCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(2) - (5)].str), (Base::LoadMethod)(yyvsp[(4) - (5)].integer), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 575:
-#line 1433 "parser.Y"
-    {fr->loadMosaicImageShareCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (7)].integer), 
+  case 592:
+#line 1468 "parser.Y"
+    {fr->loadMosaicImageShareCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (7)].integer), 
 	    (Base::ShmType)(yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer), (yyvsp[(2) - (7)].str), (Base::LoadMethod)(yyvsp[(6) - (7)].integer),
 	    (Base::LayerType)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 576:
-#line 1437 "parser.Y"
-    {fr->loadMosaicImageSocketCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 593:
+#line 1472 "parser.Y"
+    {fr->loadMosaicImageSocketCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].integer), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 577:
-#line 1440 "parser.Y"
-    {fr->loadMosaicImageSocketGZCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 594:
+#line 1475 "parser.Y"
+    {fr->loadMosaicImageSocketGZCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].integer), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 578:
-#line 1443 "parser.Y"
-    {fr->loadMosaicImageVarCmd(Base::WCSMOSAIC, (CoordSystem)(yyvsp[(1) - (6)].integer),
+  case 595:
+#line 1478 "parser.Y"
+    {fr->loadMosaicImageVarCmd(Base::WCSMOSAIC, (Coord::CoordSystem)(yyvsp[(1) - (6)].integer),
 	    (yyvsp[(4) - (6)].str), (yyvsp[(2) - (6)].str), (Base::LoadMethod)(yyvsp[(5) - (6)].integer), (Base::LayerType)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 579:
-#line 1448 "parser.Y"
-    {fr->loadMosaicAllocCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 596:
+#line 1483 "parser.Y"
+    {fr->loadMosaicAllocCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 580:
-#line 1451 "parser.Y"
-    {fr->loadMosaicAllocGZCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 597:
+#line 1486 "parser.Y"
+    {fr->loadMosaicAllocGZCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 581:
-#line 1454 "parser.Y"
-    {fr->loadMosaicChannelCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 598:
+#line 1489 "parser.Y"
+    {fr->loadMosaicChannelCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 582:
-#line 1457 "parser.Y"
-    {fr->loadMosaicMMapCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 599:
+#line 1492 "parser.Y"
+    {fr->loadMosaicMMapCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(2) - (5)].str), (Base::LoadMethod)(yyvsp[(4) - (5)].integer), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 583:
-#line 1460 "parser.Y"
-    {fr->loadMosaicSMMapCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (6)].integer),
+  case 600:
+#line 1495 "parser.Y"
+    {fr->loadMosaicSMMapCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (6)].integer),
 	    (yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].str), (Base::LoadMethod)(yyvsp[(5) - (6)].integer), (Base::LayerType)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 584:
-#line 1463 "parser.Y"
-    {fr->loadMosaicMMapIncrCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 601:
+#line 1498 "parser.Y"
+    {fr->loadMosaicMMapIncrCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(2) - (5)].str), (Base::LoadMethod)(yyvsp[(4) - (5)].integer), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 585:
-#line 1466 "parser.Y"
-    {fr->loadMosaicShareCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (7)].integer), 
+  case 602:
+#line 1501 "parser.Y"
+    {fr->loadMosaicShareCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (7)].integer), 
 	    (Base::ShmType)(yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer), (yyvsp[(2) - (7)].str), (Base::LoadMethod)(yyvsp[(6) - (7)].integer),
 	    (Base::LayerType)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 586:
-#line 1470 "parser.Y"
-    {fr->loadMosaicSShareCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (8)].integer), 
+  case 603:
+#line 1505 "parser.Y"
+    {fr->loadMosaicSShareCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (8)].integer), 
 	    (Base::ShmType)(yyvsp[(4) - (8)].integer), (yyvsp[(5) - (8)].integer), (yyvsp[(6) - (8)].integer), (yyvsp[(2) - (8)].str), (Base::LoadMethod)(yyvsp[(7) - (8)].integer),
 	    (Base::LayerType)(yyvsp[(8) - (8)].integer));;}
     break;
 
-  case 587:
-#line 1474 "parser.Y"
-    {fr->loadMosaicSocketCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 604:
+#line 1509 "parser.Y"
+    {fr->loadMosaicSocketCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].integer), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 588:
-#line 1477 "parser.Y"
-    {fr->loadMosaicSocketGZCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (5)].integer),
+  case 605:
+#line 1512 "parser.Y"
+    {fr->loadMosaicSocketGZCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (5)].integer),
 	    (yyvsp[(4) - (5)].integer), (yyvsp[(2) - (5)].str), (Base::LayerType)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 589:
-#line 1480 "parser.Y"
-    {fr->loadMosaicVarCmd((Base::WCSMOSAIC), (CoordSystem)(yyvsp[(1) - (6)].integer),
+  case 606:
+#line 1515 "parser.Y"
+    {fr->loadMosaicVarCmd((Base::WCSMOSAIC), (Coord::CoordSystem)(yyvsp[(1) - (6)].integer),
 	    (yyvsp[(4) - (6)].str), (yyvsp[(2) - (6)].str), (Base::LoadMethod)(yyvsp[(5) - (6)].integer), (Base::LayerType)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 590:
-#line 1485 "parser.Y"
+  case 607:
+#line 1520 "parser.Y"
     {fr->loadMosaicImageWFPC2AllocCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 591:
-#line 1487 "parser.Y"
+  case 608:
+#line 1522 "parser.Y"
     {fr->loadMosaicImageWFPC2AllocGZCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 592:
-#line 1489 "parser.Y"
+  case 609:
+#line 1524 "parser.Y"
     {fr->loadMosaicImageWFPC2ChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 593:
-#line 1491 "parser.Y"
+  case 610:
+#line 1526 "parser.Y"
     {fr->loadMosaicImageWFPC2MMapCmd((yyvsp[(1) - (3)].str),(Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 594:
-#line 1493 "parser.Y"
+  case 611:
+#line 1528 "parser.Y"
     {fr->loadMosaicImageWFPC2MMapIncrCmd((yyvsp[(1) - (3)].str),(Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 595:
-#line 1495 "parser.Y"
+  case 612:
+#line 1530 "parser.Y"
     {fr->loadMosaicImageWFPC2ShareCmd((Base::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer),
 	    (yyvsp[(1) - (5)].str), (Base::LoadMethod)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 596:
-#line 1498 "parser.Y"
+  case 613:
+#line 1533 "parser.Y"
     {fr->loadMosaicImageWFPC2SocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 597:
-#line 1500 "parser.Y"
+  case 614:
+#line 1535 "parser.Y"
     {fr->loadMosaicImageWFPC2SocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 598:
-#line 1502 "parser.Y"
+  case 615:
+#line 1537 "parser.Y"
     {fr->loadMosaicImageWFPC2VarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 601:
-#line 1508 "parser.Y"
+  case 618:
+#line 1543 "parser.Y"
     {fr->loadRGBCubeAllocCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 602:
-#line 1509 "parser.Y"
+  case 619:
+#line 1544 "parser.Y"
     {fr->loadRGBCubeAllocGZCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 603:
-#line 1510 "parser.Y"
+  case 620:
+#line 1545 "parser.Y"
     {fr->loadRGBCubeChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 604:
-#line 1512 "parser.Y"
+  case 621:
+#line 1547 "parser.Y"
     {fr->loadRGBCubeMMapCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 605:
-#line 1514 "parser.Y"
+  case 622:
+#line 1549 "parser.Y"
     {fr->loadRGBCubeSMMapCmd((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 606:
-#line 1516 "parser.Y"
+  case 623:
+#line 1551 "parser.Y"
     {fr->loadRGBCubeMMapIncrCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 607:
-#line 1518 "parser.Y"
+  case 624:
+#line 1553 "parser.Y"
     {fr->loadRGBCubeShareCmd((Base::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
 	    (Base::LoadMethod)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 608:
-#line 1521 "parser.Y"
+  case 625:
+#line 1556 "parser.Y"
     {fr->loadRGBCubeSShareCmd((Base::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(1) - (6)].str), 
 	    (Base::LoadMethod)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 609:
-#line 1523 "parser.Y"
+  case 626:
+#line 1558 "parser.Y"
     {fr->loadRGBCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 610:
-#line 1524 "parser.Y"
+  case 627:
+#line 1559 "parser.Y"
     {fr->loadRGBCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 611:
-#line 1526 "parser.Y"
-    {fr->loadRGBCubeVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+  case 628:
+#line 1561 "parser.Y"
+    {fr->loadRGBCubeVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 612:
-#line 1529 "parser.Y"
+  case 629:
+#line 1564 "parser.Y"
     {fr->loadRGBImageAllocCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 613:
-#line 1530 "parser.Y"
+  case 630:
+#line 1565 "parser.Y"
     {fr->loadRGBImageAllocGZCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 614:
-#line 1531 "parser.Y"
+  case 631:
+#line 1566 "parser.Y"
     {fr->loadRGBImageChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 615:
-#line 1533 "parser.Y"
+  case 632:
+#line 1568 "parser.Y"
     {fr->loadRGBImageMMapCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 616:
-#line 1535 "parser.Y"
+  case 633:
+#line 1570 "parser.Y"
     {fr->loadRGBImageMMapIncrCmd((yyvsp[(1) - (3)].str), (Base::LoadMethod)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 617:
-#line 1537 "parser.Y"
+  case 634:
+#line 1572 "parser.Y"
     {fr->loadRGBImageShareCmd((Base::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
 	    (Base::LoadMethod)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 618:
-#line 1539 "parser.Y"
+  case 635:
+#line 1574 "parser.Y"
     {fr->loadRGBImageSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 619:
-#line 1540 "parser.Y"
+  case 636:
+#line 1575 "parser.Y"
     {fr->loadRGBImageSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 620:
-#line 1542 "parser.Y"
+  case 637:
+#line 1577 "parser.Y"
     {fr->loadRGBImageVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (Base::LoadMethod)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 621:
-#line 1545 "parser.Y"
+  case 638:
+#line 1580 "parser.Y"
     {fr->loadIncrDataCmd((yyvsp[(2) - (6)].integer),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 622:
-#line 1546 "parser.Y"
+  case 639:
+#line 1581 "parser.Y"
     {fr->loadIncrMinMaxCmd((yyvsp[(2) - (6)].integer),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 623:
-#line 1547 "parser.Y"
+  case 640:
+#line 1582 "parser.Y"
     {fr->loadIncrEndCmd();;}
     break;
 
-  case 624:
-#line 1550 "parser.Y"
+  case 641:
+#line 1585 "parser.Y"
     {
 #ifdef _MACOSX
 	  fr->macosxPrintCmd();
@@ -7627,1800 +7695,1767 @@ yyreduce:
 	;}
     break;
 
-  case 625:
-#line 1557 "parser.Y"
+  case 642:
+#line 1592 "parser.Y"
     {fr->magnifierCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 626:
-#line 1558 "parser.Y"
+  case 643:
+#line 1593 "parser.Y"
     {fr->magnifierGraphicsCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 627:
-#line 1559 "parser.Y"
+  case 644:
+#line 1594 "parser.Y"
     {fr->magnifierCursorCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 628:
-#line 1560 "parser.Y"
+  case 645:
+#line 1595 "parser.Y"
     {fr->magnifierColorCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 629:
-#line 1561 "parser.Y"
+  case 646:
+#line 1596 "parser.Y"
     {fr->magnifierCmd((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 630:
-#line 1562 "parser.Y"
+  case 647:
+#line 1597 "parser.Y"
     {fr->updateMagnifierCmd(Vector((yyvsp[(2) - (3)].real), (yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 631:
-#line 1563 "parser.Y"
+  case 648:
+#line 1598 "parser.Y"
     {fr->magnifierZoomCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 633:
-#line 1567 "parser.Y"
+  case 650:
+#line 1602 "parser.Y"
     {fr->markerColorCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 634:
-#line 1568 "parser.Y"
+  case 651:
+#line 1603 "parser.Y"
     {fr->markerCopyCmd();;}
     break;
 
-  case 635:
-#line 1570 "parser.Y"
+  case 652:
+#line 1605 "parser.Y"
     {fr->markerCommandCmd((Base::MarkerFormat)(yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 636:
-#line 1572 "parser.Y"
+  case 653:
+#line 1607 "parser.Y"
     {fr->markerCommandVarCmd((Base::MarkerFormat)(yyvsp[(2) - (4)].integer),(yyvsp[(4) - (4)].str));;}
     break;
 
-  case 637:
-#line 1573 "parser.Y"
+  case 654:
+#line 1608 "parser.Y"
     {fr->markerCompositeDeleteCmd();;}
     break;
 
-  case 638:
-#line 1574 "parser.Y"
+  case 655:
+#line 1609 "parser.Y"
     {maperr =0;;}
     break;
 
-  case 640:
-#line 1575 "parser.Y"
+  case 657:
+#line 1610 "parser.Y"
     {fr->markerCutCmd();;}
     break;
 
-  case 641:
-#line 1576 "parser.Y"
+  case 658:
+#line 1611 "parser.Y"
     {fr->markerDeleteCmd();;}
     break;
 
-  case 642:
-#line 1577 "parser.Y"
+  case 659:
+#line 1612 "parser.Y"
     {fr->markerDeleteAllCmd();;}
     break;
 
-  case 644:
-#line 1579 "parser.Y"
+  case 661:
+#line 1614 "parser.Y"
     {fr->markerFontCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 645:
-#line 1581 "parser.Y"
+  case 662:
+#line 1616 "parser.Y"
     {fr->markerHighliteAllCmd();;}
     break;
 
-  case 646:
-#line 1583 "parser.Y"
+  case 663:
+#line 1618 "parser.Y"
     {fr->markerHighliteOnlyCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
     break;
 
-  case 647:
-#line 1585 "parser.Y"
+  case 664:
+#line 1620 "parser.Y"
     {fr->markerHighliteToggleCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
     break;
 
-  case 648:
-#line 1587 "parser.Y"
+  case 665:
+#line 1623 "parser.Y"
+    {fr->markerAnalysisCmd((yyvsp[(1) - (4)].integer), (Marker::AnalysisMethod)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 666:
+#line 1625 "parser.Y"
+    {fr->markerAnalysisParamCmd((yyvsp[(1) - (4)].integer), (Marker::AnalysisParamType)(yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 667:
+#line 1627 "parser.Y"
+    {fr->markerAnalysisSystemCmd((yyvsp[(1) - (5)].integer),(Coord::CoordSystem)(yyvsp[(4) - (5)].integer),(Coord::SkyFrame)(yyvsp[(5) - (5)].integer));;}
+    break;
+
+  case 668:
+#line 1629 "parser.Y"
     {fr->markerAngleCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].real));;}
     break;
 
-  case 649:
-#line 1588 "parser.Y"
+  case 669:
+#line 1630 "parser.Y"
     {fr->markerAngleCmd((yyvsp[(1) - (4)].integer),(yyvsp[(3) - (4)].real));;}
     break;
 
-  case 650:
-#line 1590 "parser.Y"
-    {fr->markerAngleCmd((yyvsp[(1) - (5)].integer),(yyvsp[(3) - (5)].real),(CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+  case 670:
+#line 1632 "parser.Y"
+    {fr->markerAngleCmd((yyvsp[(1) - (5)].integer),(yyvsp[(3) - (5)].real),(Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyFrame)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 651:
-#line 1593 "parser.Y"
-    {fr->markerAnnulusRadiusCmd((yyvsp[(1) - (7)].integer), (yyvsp[(4) - (7)].real), (yyvsp[(5) - (7)].real), (yyvsp[(6) - (7)].integer), (InternalSystem)(yyvsp[(7) - (7)].integer));;}
+  case 671:
+#line 1635 "parser.Y"
+    {fr->markerAnnulusRadiusCmd((yyvsp[(1) - (7)].integer), (yyvsp[(4) - (7)].real), (yyvsp[(5) - (7)].real), (yyvsp[(6) - (7)].integer), (Coord::InternalSystem)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 652:
-#line 1595 "parser.Y"
+  case 672:
+#line 1637 "parser.Y"
     {fr->markerAnnulusRadiusCmd((yyvsp[(1) - (8)].integer), (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].real), (yyvsp[(6) - (8)].integer),
-	    (CoordSystem)(yyvsp[(7) - (8)].integer), (SkyDist)(yyvsp[(8) - (8)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(7) - (8)].integer), (Coord::SkyDist)(yyvsp[(8) - (8)].integer));;}
     break;
 
-  case 653:
-#line 1598 "parser.Y"
-    {fr->markerAnnulusRadiusCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].str),(CoordSystem)(yyvsp[(5) - (6)].integer),(SkyDist)(yyvsp[(6) - (6)].integer));;}
+  case 673:
+#line 1640 "parser.Y"
+    {fr->markerAnnulusRadiusCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].str),(Coord::CoordSystem)(yyvsp[(5) - (6)].integer),(Coord::SkyDist)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 654:
-#line 1601 "parser.Y"
+  case 674:
+#line 1643 "parser.Y"
     {fr->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (8)].integer), Vector((yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].real)), 
-	    Vector((yyvsp[(6) - (8)].real), (yyvsp[(6) - (8)].real)*(yyvsp[(5) - (8)].real)/(yyvsp[(4) - (8)].real)), (yyvsp[(7) - (8)].integer), (InternalSystem)(yyvsp[(8) - (8)].integer));;}
+	    Vector((yyvsp[(6) - (8)].real), (yyvsp[(6) - (8)].real)*(yyvsp[(5) - (8)].real)/(yyvsp[(4) - (8)].real)), (yyvsp[(7) - (8)].integer), (Coord::InternalSystem)(yyvsp[(8) - (8)].integer));;}
     break;
 
-  case 655:
-#line 1605 "parser.Y"
+  case 675:
+#line 1647 "parser.Y"
     {fr->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (9)].integer), Vector((yyvsp[(4) - (9)].real), (yyvsp[(5) - (9)].real)), 
-	    Vector((yyvsp[(6) - (9)].real), (yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer), (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyDist)(yyvsp[(9) - (9)].integer));;}
+	    Vector((yyvsp[(6) - (9)].real), (yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer), (Coord::CoordSystem)(yyvsp[(8) - (9)].integer), (Coord::SkyDist)(yyvsp[(9) - (9)].integer));;}
     break;
 
-  case 656:
-#line 1608 "parser.Y"
-    {fr->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),(yyvsp[(4) - (6)].str),(CoordSystem)(yyvsp[(5) - (6)].integer),(SkyDist)(yyvsp[(6) - (6)].integer));;}
+  case 676:
+#line 1650 "parser.Y"
+    {fr->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),(yyvsp[(4) - (6)].str),(Coord::CoordSystem)(yyvsp[(5) - (6)].integer),(Coord::SkyDist)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 657:
-#line 1611 "parser.Y"
-    {fr->markerBoxRadiusCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)), (InternalSystem)(yyvsp[(6) - (6)].integer));;}
+  case 677:
+#line 1653 "parser.Y"
+    {fr->markerBoxRadiusCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)), (Coord::InternalSystem)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 658:
-#line 1613 "parser.Y"
+  case 678:
+#line 1655 "parser.Y"
     {fr->markerBoxRadiusCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)), 
-	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyDist)(yyvsp[(7) - (7)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(6) - (7)].integer), (Coord::SkyDist)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 659:
-#line 1617 "parser.Y"
+  case 679:
+#line 1658 "parser.Y"
     {fr->markerBpandaEditCmd((yyvsp[(1) - (10)].integer), (yyvsp[(4) - (10)].real), (yyvsp[(5) - (10)].real), (yyvsp[(6) - (10)].integer),
 	    Vector((yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real)), Vector((yyvsp[(9) - (10)].real),(yyvsp[(9) - (10)].real)*(yyvsp[(8) - (10)].real)/(yyvsp[(7) - (10)].real)), (yyvsp[(10) - (10)].integer));;}
     break;
 
-  case 660:
-#line 1621 "parser.Y"
+  case 680:
+#line 1662 "parser.Y"
     {fr->markerBpandaEditCmd((yyvsp[(1) - (11)].integer), (yyvsp[(4) - (11)].real), (yyvsp[(5) - (11)].real), (yyvsp[(6) - (11)].integer),
 	    Vector((yyvsp[(7) - (11)].real),(yyvsp[(8) - (11)].real)), Vector((yyvsp[(9) - (11)].real),(yyvsp[(9) - (11)].real)*(yyvsp[(8) - (11)].real)/(yyvsp[(7) - (11)].real)), (yyvsp[(10) - (11)].integer));;}
     break;
 
-  case 661:
-#line 1625 "parser.Y"
+  case 681:
+#line 1666 "parser.Y"
     {fr->markerBpandaEditCmd((yyvsp[(1) - (12)].integer), (yyvsp[(4) - (12)].real), (yyvsp[(5) - (12)].real), (yyvsp[(6) - (12)].integer),
 	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(8) - (12)].real)/(yyvsp[(7) - (12)].real)), (yyvsp[(10) - (12)].integer),
-	    (CoordSystem)(yyvsp[(11) - (12)].integer), (SkyFrame)(yyvsp[(12) - (12)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(11) - (12)].integer), (Coord::SkyFrame)(yyvsp[(12) - (12)].integer));;}
     break;
 
-  case 662:
-#line 1630 "parser.Y"
+  case 682:
+#line 1671 "parser.Y"
     {fr->markerBpandaEditCmd((yyvsp[(1) - (9)].integer), (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), 
-	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer), (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyDist)(yyvsp[(9) - (9)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(6) - (9)].integer), (Coord::SkyFrame)(yyvsp[(7) - (9)].integer), (Coord::CoordSystem)(yyvsp[(8) - (9)].integer), (Coord::SkyDist)(yyvsp[(9) - (9)].integer));;}
     break;
 
-  case 663:
-#line 1634 "parser.Y"
+  case 683:
+#line 1675 "parser.Y"
     {fr->markerCallBackCmd((yyvsp[(1) - (5)].integer),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
     break;
 
-  case 664:
-#line 1637 "parser.Y"
-    {fr->markerCircleRadiusCmd((yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].real), (InternalSystem)(yyvsp[(5) - (5)].integer));;}
+  case 684:
+#line 1677 "parser.Y"
+    {fr->markerCircleRadiusCmd((yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].real), (Coord::InternalSystem)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 665:
-#line 1639 "parser.Y"
-    {fr->markerCircleRadiusCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyDist)(yyvsp[(6) - (6)].integer));;}
+  case 685:
+#line 1679 "parser.Y"
+    {fr->markerCircleRadiusCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real), (Coord::CoordSystem)(yyvsp[(5) - (6)].integer), (Coord::SkyDist)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 666:
-#line 1641 "parser.Y"
+  case 686:
+#line 1680 "parser.Y"
     {fr->markerColorCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 667:
-#line 1644 "parser.Y"
+  case 687:
+#line 1682 "parser.Y"
     {fr->markerCompassArrowCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 668:
-#line 1646 "parser.Y"
+  case 688:
+#line 1684 "parser.Y"
     {fr->markerCompassLabelCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
     break;
 
-  case 669:
-#line 1648 "parser.Y"
-    {fr->markerCompassRadiusCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].real),(InternalSystem)(yyvsp[(5) - (5)].integer));;}
+  case 689:
+#line 1686 "parser.Y"
+    {fr->markerCompassRadiusCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].real),(Coord::InternalSystem)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 670:
-#line 1650 "parser.Y"
-    {fr->markerCompassRadiusCmd((yyvsp[(1) - (6)].integer),(yyvsp[(4) - (6)].real),(CoordSystem)(yyvsp[(5) - (6)].integer),(SkyDist)(yyvsp[(6) - (6)].integer));;}
+  case 690:
+#line 1688 "parser.Y"
+    {fr->markerCompassRadiusCmd((yyvsp[(1) - (6)].integer),(yyvsp[(4) - (6)].real),(Coord::CoordSystem)(yyvsp[(5) - (6)].integer),(Coord::SkyDist)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 671:
-#line 1652 "parser.Y"
-    {fr->markerCompassSystemCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+  case 691:
+#line 1690 "parser.Y"
+    {fr->markerCompassSystemCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyFrame)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 672:
-#line 1654 "parser.Y"
+  case 692:
+#line 1691 "parser.Y"
     {fr->markerCompositeCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 673:
-#line 1657 "parser.Y"
+  case 693:
+#line 1693 "parser.Y"
     {fr->markerCpandaEditCmd((yyvsp[(1) - (9)].integer), (yyvsp[(4) - (9)].real), (yyvsp[(5) - (9)].real), (yyvsp[(6) - (9)].integer), (yyvsp[(7) - (9)].real), (yyvsp[(8) - (9)].real), (yyvsp[(9) - (9)].integer));;}
     break;
 
-  case 674:
-#line 1659 "parser.Y"
+  case 694:
+#line 1695 "parser.Y"
     {fr->markerCpandaEditCmd((yyvsp[(1) - (10)].integer), (yyvsp[(4) - (10)].real), (yyvsp[(5) - (10)].real), (yyvsp[(6) - (10)].integer), (yyvsp[(7) - (10)].real), (yyvsp[(8) - (10)].real), (yyvsp[(9) - (10)].integer));;}
     break;
 
-  case 675:
-#line 1662 "parser.Y"
+  case 695:
+#line 1698 "parser.Y"
     {fr->markerCpandaEditCmd((yyvsp[(1) - (11)].integer), (yyvsp[(4) - (11)].real), (yyvsp[(5) - (11)].real), (yyvsp[(6) - (11)].integer), (yyvsp[(7) - (11)].real), (yyvsp[(8) - (11)].real), (yyvsp[(9) - (11)].integer),
-	    (CoordSystem)(yyvsp[(10) - (11)].integer), (SkyFrame)(yyvsp[(11) - (11)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(10) - (11)].integer), (Coord::SkyFrame)(yyvsp[(11) - (11)].integer));;}
     break;
 
-  case 676:
-#line 1666 "parser.Y"
-    {fr->markerCpandaEditCmd((yyvsp[(1) - (9)].integer), (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
-	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyDist)(yyvsp[(9) - (9)].integer));;}
+  case 696:
+#line 1702 "parser.Y"
+    {fr->markerCpandaEditCmd((yyvsp[(1) - (9)].integer), (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), (Coord::CoordSystem)(yyvsp[(6) - (9)].integer), (Coord::SkyFrame)(yyvsp[(7) - (9)].integer),
+	    (Coord::CoordSystem)(yyvsp[(8) - (9)].integer), (Coord::SkyDist)(yyvsp[(9) - (9)].integer));;}
     break;
 
-  case 677:
-#line 1670 "parser.Y"
+  case 697:
+#line 1706 "parser.Y"
     {fr->markerAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 678:
-#line 1672 "parser.Y"
+  case 698:
+#line 1708 "parser.Y"
     {fr->markerBoxAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 679:
-#line 1674 "parser.Y"
+  case 699:
+#line 1710 "parser.Y"
     {fr->markerBpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 680:
-#line 1676 "parser.Y"
+  case 700:
+#line 1712 "parser.Y"
     {fr->markerBpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 681:
-#line 1678 "parser.Y"
+  case 701:
+#line 1714 "parser.Y"
     {fr->markerEllipseAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 682:
-#line 1680 "parser.Y"
+  case 702:
+#line 1716 "parser.Y"
     {fr->markerEpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 683:
-#line 1682 "parser.Y"
+  case 703:
+#line 1718 "parser.Y"
     {fr->markerEpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 684:
-#line 1684 "parser.Y"
+  case 704:
+#line 1720 "parser.Y"
     {fr->markerCpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 685:
-#line 1686 "parser.Y"
+  case 705:
+#line 1722 "parser.Y"
     {fr->markerCpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
     break;
 
-  case 686:
-#line 1688 "parser.Y"
+  case 706:
+#line 1724 "parser.Y"
     {fr->markerPolygonCreateVertexCmd((yyvsp[(1) - (7)].integer),(yyvsp[(5) - (7)].integer),Vector((yyvsp[(6) - (7)].real),(yyvsp[(7) - (7)].real)));;}
     break;
 
-  case 687:
-#line 1690 "parser.Y"
+  case 707:
+#line 1726 "parser.Y"
     {fr->markerDeleteCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 688:
-#line 1692 "parser.Y"
+  case 708:
+#line 1728 "parser.Y"
     {fr->markerAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 689:
-#line 1694 "parser.Y"
+  case 709:
+#line 1730 "parser.Y"
     {fr->markerBoxAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 690:
-#line 1695 "parser.Y"
+  case 710:
+#line 1731 "parser.Y"
     {fr->markerBpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 691:
-#line 1697 "parser.Y"
+  case 711:
+#line 1733 "parser.Y"
     {fr->markerEllipseAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 692:
-#line 1699 "parser.Y"
+  case 712:
+#line 1735 "parser.Y"
     {fr->markerDeleteCallBackCmd((yyvsp[(1) - (5)].integer),(CallBack::Type)(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].str));;}
     break;
 
-  case 693:
-#line 1700 "parser.Y"
+  case 713:
+#line 1736 "parser.Y"
     {fr->markerEpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 694:
-#line 1701 "parser.Y"
+  case 714:
+#line 1737 "parser.Y"
     {fr->markerCpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 695:
-#line 1703 "parser.Y"
+  case 715:
+#line 1739 "parser.Y"
     {fr->markerPolygonDeleteVertexCmd((yyvsp[(1) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 696:
-#line 1704 "parser.Y"
+  case 716:
+#line 1740 "parser.Y"
     {fr->markerDeleteTagCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 697:
-#line 1705 "parser.Y"
+  case 717:
+#line 1741 "parser.Y"
     {fr->markerDeleteTagCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].str));;}
     break;
 
-  case 698:
-#line 1706 "parser.Y"
+  case 718:
+#line 1742 "parser.Y"
     {fr->markerDeleteTagCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 699:
-#line 1708 "parser.Y"
+  case 719:
+#line 1744 "parser.Y"
     {fr->markerEditBeginCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 700:
-#line 1711 "parser.Y"
-    {fr->markerEllipseRadiusCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(4) - (6)].real), (yyvsp[(5) - (6)].real)), (InternalSystem)(yyvsp[(6) - (6)].integer));;}
+  case 720:
+#line 1746 "parser.Y"
+    {fr->markerEllipseRadiusCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(4) - (6)].real), (yyvsp[(5) - (6)].real)), (Coord::InternalSystem)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 701:
-#line 1713 "parser.Y"
+  case 721:
+#line 1748 "parser.Y"
     {fr->markerEllipseRadiusCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].real), (yyvsp[(5) - (7)].real)),
-	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyDist)(yyvsp[(7) - (7)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(6) - (7)].integer), (Coord::SkyDist)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 702:
-#line 1718 "parser.Y"
+  case 722:
+#line 1752 "parser.Y"
     {fr->markerEllipseAnnulusRadiusCmd((yyvsp[(1) - (8)].integer), Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real)), 
-	    Vector((yyvsp[(6) - (8)].real),(yyvsp[(6) - (8)].real)*(yyvsp[(5) - (8)].real)/(yyvsp[(4) - (8)].real)), (yyvsp[(7) - (8)].integer), (InternalSystem)(yyvsp[(8) - (8)].integer));;}
+	    Vector((yyvsp[(6) - (8)].real),(yyvsp[(6) - (8)].real)*(yyvsp[(5) - (8)].real)/(yyvsp[(4) - (8)].real)), (yyvsp[(7) - (8)].integer), (Coord::InternalSystem)(yyvsp[(8) - (8)].integer));;}
     break;
 
-  case 703:
-#line 1722 "parser.Y"
+  case 723:
+#line 1756 "parser.Y"
     {fr->markerEllipseAnnulusRadiusCmd((yyvsp[(1) - (9)].integer), Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)), 
-	    Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer), (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyDist)(yyvsp[(9) - (9)].integer));;}
+	    Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer), (Coord::CoordSystem)(yyvsp[(8) - (9)].integer), (Coord::SkyDist)(yyvsp[(9) - (9)].integer));;}
     break;
 
-  case 704:
-#line 1725 "parser.Y"
+  case 724:
+#line 1759 "parser.Y"
     {fr->markerEllipseAnnulusRadiusCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].str),
-	    (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyDist)(yyvsp[(6) - (6)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(5) - (6)].integer), (Coord::SkyDist)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 705:
-#line 1729 "parser.Y"
+  case 725:
+#line 1762 "parser.Y"
     {fr->markerEpandaEditCmd((yyvsp[(1) - (10)].integer), (yyvsp[(4) - (10)].real), (yyvsp[(5) - (10)].real), (yyvsp[(6) - (10)].integer),
 	    Vector((yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real)), Vector((yyvsp[(9) - (10)].real),(yyvsp[(9) - (10)].real)*(yyvsp[(8) - (10)].real)/(yyvsp[(7) - (10)].real)), (yyvsp[(10) - (10)].integer));;}
     break;
 
-  case 706:
-#line 1733 "parser.Y"
+  case 726:
+#line 1766 "parser.Y"
     {fr->markerEpandaEditCmd((yyvsp[(1) - (11)].integer), (yyvsp[(4) - (11)].real), (yyvsp[(5) - (11)].real), (yyvsp[(6) - (11)].integer),
 	    Vector((yyvsp[(7) - (11)].real),(yyvsp[(8) - (11)].real)), Vector((yyvsp[(9) - (11)].real),(yyvsp[(9) - (11)].real)*(yyvsp[(8) - (11)].real)/(yyvsp[(7) - (11)].real)), (yyvsp[(10) - (11)].integer));;}
     break;
 
-  case 707:
-#line 1737 "parser.Y"
+  case 727:
+#line 1770 "parser.Y"
     {fr->markerEpandaEditCmd((yyvsp[(1) - (12)].integer), (yyvsp[(4) - (12)].real), (yyvsp[(5) - (12)].real), (yyvsp[(6) - (12)].integer),
 	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(8) - (12)].real)/(yyvsp[(7) - (12)].real)), (yyvsp[(10) - (12)].integer),
-	    (CoordSystem)(yyvsp[(11) - (12)].integer), (SkyFrame)(yyvsp[(12) - (12)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(11) - (12)].integer), (Coord::SkyFrame)(yyvsp[(12) - (12)].integer));;}
     break;
 
-  case 708:
-#line 1742 "parser.Y"
+  case 728:
+#line 1775 "parser.Y"
     {fr->markerEpandaEditCmd((yyvsp[(1) - (9)].integer), (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), 
-	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
-	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyDist)(yyvsp[(9) - (9)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(6) - (9)].integer), (Coord::SkyFrame)(yyvsp[(7) - (9)].integer),
+	    (Coord::CoordSystem)(yyvsp[(8) - (9)].integer), (Coord::SkyDist)(yyvsp[(9) - (9)].integer));;}
     break;
 
-  case 709:
-#line 1746 "parser.Y"
+  case 729:
+#line 1779 "parser.Y"
     {fr->markerFontCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 710:
-#line 1747 "parser.Y"
+  case 730:
+#line 1780 "parser.Y"
     {fr->markerHighliteCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 711:
-#line 1748 "parser.Y"
+  case 731:
+#line 1781 "parser.Y"
     {fr->markerHighliteOnlyCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 712:
-#line 1750 "parser.Y"
+  case 732:
+#line 1783 "parser.Y"
     {fr->markerLineArrowCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 713:
-#line 1752 "parser.Y"
-    {fr->markerLineCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(5) - (6)].vector)), Vector((yyvsp[(6) - (6)].vector)), (InternalSystem)(yyvsp[(4) - (6)].integer));;}
+  case 733:
+#line 1785 "parser.Y"
+    {fr->markerLineCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(5) - (6)].vector)), Vector((yyvsp[(6) - (6)].vector)), (Coord::InternalSystem)(yyvsp[(4) - (6)].integer));;}
     break;
 
-  case 714:
-#line 1754 "parser.Y"
+  case 734:
+#line 1787 "parser.Y"
     {fr->markerLineCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(6) - (7)].vector)), Vector((yyvsp[(7) - (7)].vector)), 
-	    (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(4) - (7)].integer), (Coord::SkyFrame)(yyvsp[(5) - (7)].integer));;}
     break;
 
-  case 715:
-#line 1758 "parser.Y"
+  case 735:
+#line 1791 "parser.Y"
     {fr->markerMoveCmd((yyvsp[(1) - (4)].integer), Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
     break;
 
-  case 716:
-#line 1759 "parser.Y"
+  case 736:
+#line 1792 "parser.Y"
     {fr->markerFrontCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 717:
-#line 1760 "parser.Y"
+  case 737:
+#line 1793 "parser.Y"
     {fr->markerBackCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 718:
-#line 1762 "parser.Y"
-    {fr->markerMoveToCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)), (InternalSystem)(yyvsp[(4) - (6)].integer));;}
+  case 738:
+#line 1795 "parser.Y"
+    {fr->markerMoveToCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)), (Coord::InternalSystem)(yyvsp[(4) - (6)].integer));;}
     break;
 
-  case 719:
-#line 1764 "parser.Y"
-    {fr->markerMoveToCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(6) - (6)].vector)),(CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
+  case 739:
+#line 1797 "parser.Y"
+    {fr->markerMoveToCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(6) - (6)].vector)),(Coord::CoordSystem)(yyvsp[(4) - (6)].integer),(Coord::SkyFrame)(yyvsp[(5) - (6)].integer));;}
     break;
 
-  case 720:
-#line 1767 "parser.Y"
-    {fr->markerPolygonResetCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),(InternalSystem)(yyvsp[(6) - (6)].integer));;}
+  case 740:
+#line 1800 "parser.Y"
+    {fr->markerPolygonResetCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),(Coord::InternalSystem)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 721:
-#line 1769 "parser.Y"
+  case 741:
+#line 1802 "parser.Y"
     {fr->markerPolygonResetCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
-	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyDist)(yyvsp[(7) - (7)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(6) - (7)].integer), (Coord::SkyDist)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 722:
-#line 1772 "parser.Y"
-    {fr->markerPointSizeCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-    break;
-
-  case 723:
-#line 1775 "parser.Y"
-    {fr->markerProjectionCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].vector)), Vector((yyvsp[(5) - (7)].vector)),
-	    (InternalSystem)(yyvsp[(3) - (7)].integer), (yyvsp[(6) - (7)].real), (yyvsp[(7) - (7)].integer));;}
-    break;
-
-  case 724:
-#line 1779 "parser.Y"
-    {fr->markerProjectionCmd((yyvsp[(1) - (10)].integer), Vector((yyvsp[(5) - (10)].vector)), Vector((yyvsp[(6) - (10)].vector)),
-	    (CoordSystem)(yyvsp[(3) - (10)].integer), (SkyFrame)(yyvsp[(4) - (10)].integer), (yyvsp[(7) - (10)].real), (yyvsp[(8) - (10)].integer),
-	    (CoordSystem)(yyvsp[(9) - (10)].integer), (SkyDist)(yyvsp[(10) - (10)].integer));;}
-    break;
-
-  case 725:
-#line 1783 "parser.Y"
-    {fr->markerProjectionSystemCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFrame)(yyvsp[(5) - (5)].integer));;}
+  case 742:
+#line 1805 "parser.Y"
+    {fr->markerPointShapeCmd((yyvsp[(1) - (4)].integer),(Point::PointShape)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 726:
-#line 1786 "parser.Y"
-    {fr->markerCircle3dCmd((yyvsp[(1) - (5)].integer), (yyvsp[(3) - (5)].real), (InternalSystem)(yyvsp[(4) - (5)].integer), (yyvsp[(5) - (5)].integer));;}
+  case 743:
+#line 1806 "parser.Y"
+    {fr->markerPointSizeCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 727:
-#line 1788 "parser.Y"
-    {fr->markerCircle3dCmd((yyvsp[(1) - (6)].integer), (yyvsp[(3) - (6)].real), (CoordSystem)(yyvsp[(4) - (6)].integer),(SkyDist)(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
+  case 744:
+#line 1809 "parser.Y"
+    {fr->markerProjectionCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(4) - (6)].vector)), Vector((yyvsp[(5) - (6)].vector)),
+	    (Coord::InternalSystem)(yyvsp[(3) - (6)].integer), (yyvsp[(6) - (6)].real));;}
     break;
 
-  case 728:
-#line 1790 "parser.Y"
-    {fr->markerCircle3dSystemCmd((yyvsp[(1) - (4)].integer),(CoordSystem)(yyvsp[(4) - (4)].integer));;}
+  case 745:
+#line 1813 "parser.Y"
+    {fr->markerProjectionCmd((yyvsp[(1) - (9)].integer), Vector((yyvsp[(5) - (9)].vector)), Vector((yyvsp[(6) - (9)].vector)),
+	    (Coord::CoordSystem)(yyvsp[(3) - (9)].integer), (Coord::SkyFrame)(yyvsp[(4) - (9)].integer), (yyvsp[(7) - (9)].real),
+	    (Coord::CoordSystem)(yyvsp[(8) - (9)].integer), (Coord::SkyDist)(yyvsp[(9) - (9)].integer));;}
     break;
 
-  case 729:
-#line 1793 "parser.Y"
+  case 746:
+#line 1817 "parser.Y"
     {fr->markerPropertyCmd((yyvsp[(1) - (4)].integer),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 730:
-#line 1794 "parser.Y"
+  case 747:
+#line 1819 "parser.Y"
     {fr->markerRotateBeginCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 731:
-#line 1797 "parser.Y"
+  case 748:
+#line 1821 "parser.Y"
     {fr->markerRulerPointCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(5) - (6)].vector)), Vector((yyvsp[(6) - (6)].vector)),
-	    (InternalSystem)(yyvsp[(4) - (6)].integer));;}
+	    (Coord::InternalSystem)(yyvsp[(4) - (6)].integer));;}
     break;
 
-  case 732:
-#line 1800 "parser.Y"
+  case 749:
+#line 1824 "parser.Y"
     {fr->markerRulerPointCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(6) - (7)].vector)), Vector((yyvsp[(7) - (7)].vector)),
-	    (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(4) - (7)].integer), (Coord::SkyFrame)(yyvsp[(5) - (7)].integer));;}
     break;
 
-  case 733:
-#line 1803 "parser.Y"
-    {fr->markerRulerSystemCmd((yyvsp[(1) - (7)].integer), (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer),
-	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyDist)(yyvsp[(7) - (7)].integer));;}
+  case 750:
+#line 1827 "parser.Y"
+    {fr->markerRulerSystemCmd((yyvsp[(1) - (7)].integer), (Coord::CoordSystem)(yyvsp[(4) - (7)].integer), (Coord::SkyFrame)(yyvsp[(5) - (7)].integer),
+	    (Coord::CoordSystem)(yyvsp[(6) - (7)].integer), (Coord::SkyDist)(yyvsp[(7) - (7)].integer));;}
     break;
 
-  case 734:
-#line 1806 "parser.Y"
+  case 751:
+#line 1830 "parser.Y"
     {fr->markerSelectCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 735:
-#line 1807 "parser.Y"
+  case 752:
+#line 1831 "parser.Y"
     {fr->markerSelectOnlyCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 736:
-#line 1808 "parser.Y"
+  case 753:
+#line 1833 "parser.Y"
     {fr->markerTagCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 737:
-#line 1809 "parser.Y"
+  case 754:
+#line 1834 "parser.Y"
     {fr->markerTextCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 738:
-#line 1810 "parser.Y"
-    {fr->markerTextRotateCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-    break;
-
-  case 739:
-#line 1811 "parser.Y"
-    {fr->markerUnhighliteCmd((yyvsp[(1) - (2)].integer));;}
-    break;
-
-  case 740:
-#line 1812 "parser.Y"
-    {fr->markerUnselectCmd((yyvsp[(1) - (2)].integer));;}
-    break;
-
-  case 741:
-#line 1814 "parser.Y"
-    {fr->markerVectorArrowCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-    break;
-
-  case 742:
-#line 1816 "parser.Y"
-    {fr->markerVectorCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(5) - (7)].vector)), (InternalSystem)(yyvsp[(4) - (7)].integer), (yyvsp[(6) - (7)].real), (yyvsp[(7) - (7)].real));;}
-    break;
-
-  case 743:
-#line 1819 "parser.Y"
-    {fr->markerVectorCmd((yyvsp[(1) - (10)].integer), Vector((yyvsp[(6) - (10)].vector)), (CoordSystem)(yyvsp[(4) - (10)].integer), (SkyFrame)(yyvsp[(5) - (10)].integer),
-	    (yyvsp[(9) - (10)].real), (CoordSystem)(yyvsp[(7) - (10)].integer), (SkyDist)(yyvsp[(8) - (10)].integer), (yyvsp[(10) - (10)].real));;}
-    break;
-
-  case 744:
-#line 1822 "parser.Y"
-    {fr->markerLineWidthCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-    break;
-
-  case 745:
-#line 1824 "parser.Y"
-    {fr->markerKeyCmd();;}
-    break;
-
-  case 746:
-#line 1825 "parser.Y"
-    {fr->markerKeyCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-    break;
-
-  case 750:
-#line 1830 "parser.Y"
-    {fr->markerPreserveCmd((yyvsp[(2) - (2)].integer));;}
-    break;
-
-  case 751:
-#line 1831 "parser.Y"
-    {fr->markerPropertyCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-    break;
-
-  case 752:
-#line 1833 "parser.Y"
-    {fr->markerPropertyCmd((yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
-    break;
-
-  case 753:
+  case 755:
 #line 1835 "parser.Y"
-    {fr->markerRotateBeginCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+    {fr->markerTextRotateCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 754:
+  case 756:
 #line 1837 "parser.Y"
-    {fr->markerRotateMotionCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real)),(yyvsp[(5) - (5)].integer));;}
+    {fr->markerUnhighliteCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 755:
+  case 757:
 #line 1838 "parser.Y"
-    {fr->markerRotateEndCmd();;}
+    {fr->markerUnselectCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 756:
+  case 758:
 #line 1840 "parser.Y"
-    {fr->markerSaveCmd((yyvsp[(2) - (7)].str), (Base::MarkerFormat)(yyvsp[(3) - (7)].integer),
-	    (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer), (SkyFormat)(yyvsp[(6) - (7)].integer), (yyvsp[(7) - (7)].integer));;}
+    {fr->markerVectorArrowCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 757:
+  case 759:
 #line 1842 "parser.Y"
-    {fr->markerSaveTemplateCmd((yyvsp[(3) - (3)].str));;}
+    {fr->markerVectorCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(5) - (7)].vector)), (Coord::InternalSystem)(yyvsp[(4) - (7)].integer), (yyvsp[(6) - (7)].real), (yyvsp[(7) - (7)].real));;}
     break;
 
   case 760:
-#line 1847 "parser.Y"
-    {fr->markerColorCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
+#line 1845 "parser.Y"
+    {fr->markerVectorCmd((yyvsp[(1) - (10)].integer), Vector((yyvsp[(6) - (10)].vector)), (Coord::CoordSystem)(yyvsp[(4) - (10)].integer), (Coord::SkyFrame)(yyvsp[(5) - (10)].integer),
+	    (yyvsp[(9) - (10)].real), (Coord::CoordSystem)(yyvsp[(7) - (10)].integer), (Coord::SkyDist)(yyvsp[(8) - (10)].integer), (yyvsp[(10) - (10)].real));;}
     break;
 
   case 761:
 #line 1848 "parser.Y"
-    {fr->markerCopyCmd((yyvsp[(1) - (2)].str));;}
+    {fr->markerLineWidthCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
   case 762:
-#line 1849 "parser.Y"
-    {fr->markerDeleteCmd((yyvsp[(1) - (2)].str));;}
-    break;
-
-  case 763:
 #line 1850 "parser.Y"
-    {fr->markerCutCmd((yyvsp[(1) - (2)].str));;}
+    {fr->markerKeyCmd();;}
     break;
 
-  case 764:
+  case 763:
 #line 1851 "parser.Y"
-    {fr->markerFontCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
-    break;
-
-  case 765:
-#line 1852 "parser.Y"
-    {fr->markerHighliteCmd((yyvsp[(1) - (2)].str));;}
-    break;
-
-  case 766:
-#line 1853 "parser.Y"
-    {fr->markerHighliteOnlyCmd((yyvsp[(1) - (3)].str));;}
+    {fr->markerKeyCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
   case 767:
-#line 1854 "parser.Y"
-    {fr->markerMoveCmd((yyvsp[(1) - (4)].str),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+#line 1856 "parser.Y"
+    {fr->markerPreserveCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 768:
-#line 1855 "parser.Y"
-    {fr->markerFrontCmd((yyvsp[(1) - (3)].str));;}
+#line 1857 "parser.Y"
+    {fr->markerPropertyCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
   case 769:
-#line 1856 "parser.Y"
-    {fr->markerBackCmd((yyvsp[(1) - (3)].str));;}
+#line 1859 "parser.Y"
+    {fr->markerPropertyCmd((yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
     break;
 
   case 770:
-#line 1858 "parser.Y"
-    {fr->markerMoveToCmd((yyvsp[(1) - (5)].str),Vector((yyvsp[(5) - (5)].vector)),(InternalSystem)(yyvsp[(4) - (5)].integer));;}
+#line 1861 "parser.Y"
+    {fr->markerRotateBeginCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
     break;
 
   case 771:
-#line 1860 "parser.Y"
-    {fr->markerMoveToCmd((yyvsp[(1) - (6)].str),Vector((yyvsp[(6) - (6)].vector)),(CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
+#line 1863 "parser.Y"
+    {fr->markerRotateMotionCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real)),(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 772:
-#line 1862 "parser.Y"
-    {fr->markerPropertyCmd((yyvsp[(1) - (4)].str),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+#line 1864 "parser.Y"
+    {fr->markerRotateEndCmd();;}
     break;
 
   case 773:
-#line 1863 "parser.Y"
-    {fr->markerSelectCmd((yyvsp[(1) - (2)].str));;}
+#line 1866 "parser.Y"
+    {fr->markerSaveCmd((yyvsp[(2) - (7)].str), (Base::MarkerFormat)(yyvsp[(3) - (7)].integer),
+	    (Coord::CoordSystem)(yyvsp[(4) - (7)].integer), (Coord::SkyFrame)(yyvsp[(5) - (7)].integer), (Coord::SkyFormat)(yyvsp[(6) - (7)].integer), (yyvsp[(7) - (7)].integer));;}
     break;
 
   case 774:
-#line 1864 "parser.Y"
-    {fr->markerSelectOnlyCmd((yyvsp[(1) - (3)].str));;}
-    break;
-
-  case 775:
-#line 1865 "parser.Y"
-    {fr->markerUnhighliteCmd((yyvsp[(1) - (2)].str));;}
-    break;
-
-  case 776:
-#line 1866 "parser.Y"
-    {fr->markerUnselectCmd((yyvsp[(1) - (2)].str));;}
+#line 1868 "parser.Y"
+    {fr->markerSaveTemplateCmd((yyvsp[(3) - (3)].str));;}
     break;
 
   case 777:
-#line 1868 "parser.Y"
-    {fr->markerTagEditCmd((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
+#line 1873 "parser.Y"
+    {fr->markerColorCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
     break;
 
   case 778:
-#line 1869 "parser.Y"
-    {fr->markerTagDeleteCmd((yyvsp[(3) - (3)].str));;}
+#line 1874 "parser.Y"
+    {fr->markerCopyCmd((yyvsp[(1) - (2)].str));;}
     break;
 
   case 779:
-#line 1870 "parser.Y"
-    {fr->markerTagDeleteAllCmd();;}
+#line 1875 "parser.Y"
+    {fr->markerDeleteCmd((yyvsp[(1) - (2)].str));;}
     break;
 
   case 780:
-#line 1871 "parser.Y"
-    {fr->markerTagCmd((yyvsp[(2) - (2)].str));;}
+#line 1876 "parser.Y"
+    {fr->markerCutCmd((yyvsp[(1) - (2)].str));;}
     break;
 
   case 781:
-#line 1872 "parser.Y"
-    {fr->markerTagUpdateCmd((yyvsp[(3) - (3)].str));;}
+#line 1877 "parser.Y"
+    {fr->markerFontCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
     break;
 
   case 782:
-#line 1874 "parser.Y"
-    {fr->markerPasteCmd();;}
+#line 1878 "parser.Y"
+    {fr->markerHighliteCmd((yyvsp[(1) - (2)].str));;}
     break;
 
   case 783:
-#line 1876 "parser.Y"
-    {fr->markerPasteCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (CoordSystem)(yyvsp[(3) - (3)].integer));;}
+#line 1879 "parser.Y"
+    {fr->markerHighliteOnlyCmd((yyvsp[(1) - (3)].str));;}
     break;
 
   case 784:
-#line 1877 "parser.Y"
-    {fr->markerUndoCmd();;}
+#line 1880 "parser.Y"
+    {fr->markerMoveCmd((yyvsp[(1) - (4)].str),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
     break;
 
   case 785:
-#line 1878 "parser.Y"
-    {fr->markerUnhighliteAllCmd();;}
+#line 1881 "parser.Y"
+    {fr->markerFrontCmd((yyvsp[(1) - (3)].str));;}
     break;
 
   case 786:
-#line 1879 "parser.Y"
-    {fr->markerUnselectAllCmd();;}
+#line 1882 "parser.Y"
+    {fr->markerBackCmd((yyvsp[(1) - (3)].str));;}
     break;
 
   case 787:
-#line 1880 "parser.Y"
-    {fr->markerLineWidthCmd((yyvsp[(2) - (2)].integer));;}
+#line 1884 "parser.Y"
+    {fr->markerMoveToCmd((yyvsp[(1) - (5)].str),Vector((yyvsp[(5) - (5)].vector)),(Coord::InternalSystem)(yyvsp[(4) - (5)].integer));;}
     break;
 
   case 788:
-#line 1883 "parser.Y"
-    {(yyval.integer) = CallBack::SELECTCB;;}
+#line 1886 "parser.Y"
+    {fr->markerMoveToCmd((yyvsp[(1) - (6)].str),Vector((yyvsp[(6) - (6)].vector)),(Coord::CoordSystem)(yyvsp[(4) - (6)].integer),(Coord::SkyFrame)(yyvsp[(5) - (6)].integer));;}
     break;
 
   case 789:
-#line 1884 "parser.Y"
-    {(yyval.integer) = CallBack::UNSELECTCB;;}
+#line 1888 "parser.Y"
+    {fr->markerPropertyCmd((yyvsp[(1) - (4)].str),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 790:
-#line 1885 "parser.Y"
-    {(yyval.integer) = CallBack::HIGHLITECB;;}
+#line 1889 "parser.Y"
+    {fr->markerSelectCmd((yyvsp[(1) - (2)].str));;}
     break;
 
   case 791:
-#line 1886 "parser.Y"
-    {(yyval.integer) = CallBack::UNHIGHLITECB;;}
+#line 1890 "parser.Y"
+    {fr->markerSelectOnlyCmd((yyvsp[(1) - (3)].str));;}
     break;
 
   case 792:
-#line 1887 "parser.Y"
-    {(yyval.integer) = CallBack::MOVEBEGINCB;;}
+#line 1891 "parser.Y"
+    {fr->markerUnhighliteCmd((yyvsp[(1) - (2)].str));;}
     break;
 
   case 793:
-#line 1888 "parser.Y"
-    {(yyval.integer) = CallBack::MOVECB;;}
+#line 1892 "parser.Y"
+    {fr->markerUnselectCmd((yyvsp[(1) - (2)].str));;}
     break;
 
   case 794:
-#line 1889 "parser.Y"
-    {(yyval.integer) = CallBack::MOVEENDCB;;}
+#line 1894 "parser.Y"
+    {fr->markerTagEditCmd((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
     break;
 
   case 795:
-#line 1890 "parser.Y"
-    {(yyval.integer) = CallBack::EDITBEGINCB;;}
+#line 1895 "parser.Y"
+    {fr->markerTagDeleteCmd((yyvsp[(3) - (3)].str));;}
     break;
 
   case 796:
-#line 1891 "parser.Y"
-    {(yyval.integer) = CallBack::EDITCB;;}
+#line 1896 "parser.Y"
+    {fr->markerTagDeleteAllCmd();;}
     break;
 
   case 797:
-#line 1892 "parser.Y"
-    {(yyval.integer) = CallBack::EDITENDCB;;}
+#line 1897 "parser.Y"
+    {fr->markerTagCmd((yyvsp[(2) - (2)].str));;}
     break;
 
   case 798:
-#line 1893 "parser.Y"
-    {(yyval.integer) = CallBack::ROTATEBEGINCB;;}
+#line 1898 "parser.Y"
+    {fr->markerTagUpdateCmd((yyvsp[(3) - (3)].str));;}
     break;
 
   case 799:
-#line 1894 "parser.Y"
-    {(yyval.integer) = CallBack::ROTATECB;;}
+#line 1900 "parser.Y"
+    {fr->markerPasteCmd();;}
     break;
 
   case 800:
-#line 1895 "parser.Y"
-    {(yyval.integer) = CallBack::ROTATEENDCB;;}
+#line 1902 "parser.Y"
+    {fr->markerPasteCmd((Coord::CoordSystem)(yyvsp[(2) - (3)].integer), (Coord::CoordSystem)(yyvsp[(3) - (3)].integer));;}
     break;
 
   case 801:
-#line 1896 "parser.Y"
-    {(yyval.integer) = CallBack::DELETECB;;}
+#line 1903 "parser.Y"
+    {fr->markerUndoCmd();;}
     break;
 
   case 802:
-#line 1897 "parser.Y"
-    {(yyval.integer) = CallBack::TEXTCB;;}
+#line 1904 "parser.Y"
+    {fr->markerUnhighliteAllCmd();;}
     break;
 
   case 803:
-#line 1898 "parser.Y"
-    {(yyval.integer) = CallBack::COLORCB;;}
+#line 1905 "parser.Y"
+    {fr->markerUnselectAllCmd();;}
     break;
 
   case 804:
-#line 1899 "parser.Y"
-    {(yyval.integer) = CallBack::LINEWIDTHCB;;}
+#line 1906 "parser.Y"
+    {fr->markerLineWidthCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 805:
-#line 1900 "parser.Y"
-    {(yyval.integer) = CallBack::PROPERTYCB;;}
+#line 1909 "parser.Y"
+    {(yyval.integer) = CallBack::SELECTCB;;}
     break;
 
   case 806:
-#line 1901 "parser.Y"
-    {(yyval.integer) = CallBack::FONTCB;;}
+#line 1910 "parser.Y"
+    {(yyval.integer) = CallBack::UNSELECTCB;;}
     break;
 
   case 807:
-#line 1902 "parser.Y"
-    {(yyval.integer) = CallBack::KEYCB;;}
+#line 1911 "parser.Y"
+    {(yyval.integer) = CallBack::HIGHLITECB;;}
     break;
 
   case 808:
-#line 1903 "parser.Y"
-    {(yyval.integer) = CallBack::UPDATECB;;}
+#line 1912 "parser.Y"
+    {(yyval.integer) = CallBack::UNHIGHLITECB;;}
     break;
 
   case 809:
-#line 1906 "parser.Y"
-    {fr->markerCentroidCmd();;}
+#line 1913 "parser.Y"
+    {(yyval.integer) = CallBack::MOVEBEGINCB;;}
     break;
 
   case 810:
-#line 1907 "parser.Y"
-    {fr->markerCentroidCmd((yyvsp[(1) - (1)].integer));;}
+#line 1914 "parser.Y"
+    {(yyval.integer) = CallBack::MOVECB;;}
     break;
 
   case 811:
-#line 1908 "parser.Y"
-    {fr->markerCentroidAutoCmd((yyvsp[(2) - (2)].integer));;}
+#line 1915 "parser.Y"
+    {(yyval.integer) = CallBack::MOVEENDCB;;}
     break;
 
   case 812:
-#line 1909 "parser.Y"
-    {fr->markerCentroidRadiusCmd((yyvsp[(2) - (2)].real));;}
+#line 1916 "parser.Y"
+    {(yyval.integer) = CallBack::EDITBEGINCB;;}
     break;
 
   case 813:
-#line 1910 "parser.Y"
-    {fr->markerCentroidIterationCmd((yyvsp[(2) - (2)].integer));;}
+#line 1917 "parser.Y"
+    {(yyval.integer) = CallBack::EDITCB;;}
     break;
 
   case 814:
-#line 1911 "parser.Y"
-    {
-	  fr->markerCentroidIterationCmd((yyvsp[(2) - (3)].integer));
-	  fr->markerCentroidRadiusCmd((yyvsp[(3) - (3)].real));
-	  ;}
+#line 1918 "parser.Y"
+    {(yyval.integer) = CallBack::EDITENDCB;;}
     break;
 
   case 815:
-#line 1921 "parser.Y"
-    {fr->createCircleCmd(fr->mapToRef(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),CANVAS),
-	    (yyvsp[(4) - (5)].real),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1919 "parser.Y"
+    {(yyval.integer) = CallBack::ROTATEBEGINCB;;}
     break;
 
   case 816:
-#line 1928 "parser.Y"
-    {fr->createAnnulusCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),CANVAS),
-	    (yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].integer),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1920 "parser.Y"
+    {(yyval.integer) = CallBack::ROTATECB;;}
     break;
 
   case 817:
-#line 1936 "parser.Y"
-    {fr->createCpandaCmd(fr->mapToRef(Vector((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real)),CANVAS),
-	    (yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].integer),
-	    (yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(yyvsp[(9) - (10)].integer),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1921 "parser.Y"
+    {(yyval.integer) = CallBack::ROTATEENDCB;;}
     break;
 
   case 818:
-#line 1946 "parser.Y"
-    {fr->createEllipseCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),CANVAS),
-	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
-	    (yyvsp[(6) - (7)].real),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1922 "parser.Y"
+    {(yyval.integer) = CallBack::DELETECB;;}
     break;
 
   case 819:
-#line 1955 "parser.Y"
-    {fr->createEllipseAnnulusCmd(fr->mapToRef(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real)),CANVAS),
-	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)), 
-	    Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
-	    (yyvsp[(8) - (9)].real),
-	    currentColor,currentDash,currentWidth,currentFont, 
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1923 "parser.Y"
+    {(yyval.integer) = CallBack::TEXTCB;;}
     break;
 
   case 820:
-#line 1966 "parser.Y"
-    {fr->createEpandaCmd(fr->mapToRef(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real)),CANVAS),
-	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
-	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
-	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
-	    (yyvsp[(11) - (12)].real),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1924 "parser.Y"
+    {(yyval.integer) = CallBack::COLORCB;;}
     break;
 
   case 821:
-#line 1978 "parser.Y"
-    {fr->createBoxCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),CANVAS),
-	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
-	    (yyvsp[(6) - (7)].real),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1925 "parser.Y"
+    {(yyval.integer) = CallBack::LINEWIDTHCB;;}
     break;
 
   case 822:
-#line 1987 "parser.Y"
-    {fr->createBoxAnnulusCmd(fr->mapToRef(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real)),CANVAS),
-	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)),Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
-	    (yyvsp[(8) - (9)].real),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1926 "parser.Y"
+    {(yyval.integer) = CallBack::PROPERTYCB;;}
     break;
 
   case 823:
-#line 1997 "parser.Y"
-    {fr->createBpandaCmd(fr->mapToRef(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real)),CANVAS),
-	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
-	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
-	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
-	    (yyvsp[(11) - (12)].real),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1927 "parser.Y"
+    {(yyval.integer) = CallBack::FONTCB;;}
     break;
 
   case 824:
-#line 2008 "parser.Y"
-    {fr->createLineCmd(fr->mapToRef(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)),CANVAS),
-	    fr->mapToRef(Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),CANVAS),
-	    0, 0,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1928 "parser.Y"
+    {(yyval.integer) = CallBack::KEYCB;;}
     break;
 
   case 825:
-#line 2016 "parser.Y"
-    {fr->createVectCmd(fr->mapToRef(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)),CANVAS),
-	    fr->mapToRef(Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),CANVAS),
-	    1,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1929 "parser.Y"
+    {(yyval.integer) = CallBack::UPDATECB;;}
     break;
 
   case 826:
-#line 2025 "parser.Y"
-    {fr->createProjectionCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),CANVAS),
-	    fr->mapToRef(Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),CANVAS),
-	    (yyvsp[(6) - (7)].real),
-	    NULL,NULL,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1932 "parser.Y"
+    {fr->markerCentroidCmd();;}
     break;
 
   case 827:
-#line 2036 "parser.Y"
-    {fr->createProjectionCmd(fr->mapToRef(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real)),CANVAS),
-	    fr->mapToRef(Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)),CANVAS),
-	    (yyvsp[(6) - (9)].real),
-	    (yyvsp[(7) - (9)].str),(yyvsp[(8) - (9)].str),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1933 "parser.Y"
+    {fr->markerCentroidCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
   case 828:
-#line 2045 "parser.Y"
-    {fr->createCircle3dCmd(fr->mapToRef(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),CANVAS),
-	    (yyvsp[(4) - (5)].real),
-	    NULL,NULL,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1934 "parser.Y"
+    {fr->markerCentroidAutoCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 829:
-#line 2054 "parser.Y"
-    {fr->createCircle3dCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),CANVAS),
-	    (yyvsp[(4) - (7)].real),
-	    (yyvsp[(5) - (7)].str),(yyvsp[(6) - (7)].str),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1935 "parser.Y"
+    {fr->markerCentroidRadiusCmd((yyvsp[(2) - (2)].real));;}
     break;
 
   case 830:
-#line 2063 "parser.Y"
-    {fr->createRulerCmd(fr->mapToRef(Vector((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real)),CANVAS),
-	    fr->mapToRef(Vector((yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real)),CANVAS),
-	    (CoordSystem)(yyvsp[(6) - (10)].integer), (SkyFrame)(yyvsp[(7) - (10)].integer), (CoordSystem)(yyvsp[(8) - (10)].integer), (SkyDist)(yyvsp[(9) - (10)].integer),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1936 "parser.Y"
+    {fr->markerCentroidIterationCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
   case 831:
-#line 2071 "parser.Y"
-    {fr->createCirclePointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),CANVAS), (yyvsp[(5) - (6)].integer),
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);;}
+#line 1937 "parser.Y"
+    {
+	  fr->markerCentroidIterationCmd((yyvsp[(2) - (3)].integer));
+	  fr->markerCentroidRadiusCmd((yyvsp[(3) - (3)].real));
+	  ;}
     break;
 
   case 832:
-#line 2076 "parser.Y"
-    {fr->createBoxPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),CANVAS), (yyvsp[(5) - (6)].integer),
+#line 1947 "parser.Y"
+    {fr->createCircleCmd(fr->mapToRef(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),Coord::CANVAS),
+	    (yyvsp[(4) - (5)].real),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 833:
-#line 2081 "parser.Y"
-    {fr->createDiamondPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),CANVAS), (yyvsp[(5) - (6)].integer),
+#line 1955 "parser.Y"
+    {fr->createEllipseCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),Coord::CANVAS),
+	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
+	    (yyvsp[(6) - (7)].real),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 834:
-#line 2086 "parser.Y"
-    {fr->createCrossPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),CANVAS), (yyvsp[(5) - (6)].integer),
+#line 1964 "parser.Y"
+    {fr->createBoxCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),Coord::CANVAS),
+	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
+	    (yyvsp[(6) - (7)].real),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 835:
-#line 2091 "parser.Y"
-    {fr->createExPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),CANVAS), (yyvsp[(5) - (6)].integer),
+#line 1972 "parser.Y"
+    {fr->createPolygonCmd(fr->mapToRef(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)),Coord::CANVAS),
+	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 836:
-#line 2096 "parser.Y"
-    {fr->createArrowPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),CANVAS), (yyvsp[(5) - (6)].integer),
+#line 1979 "parser.Y"
+    {fr->createLineCmd(fr->mapToRef(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)),Coord::CANVAS),
+	    fr->mapToRef(Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),Coord::CANVAS),
+	    0, 0,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 837:
-#line 2101 "parser.Y"
-    {fr->createBoxCirclePointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),CANVAS), (yyvsp[(5) - (6)].integer),
+#line 1987 "parser.Y"
+    {fr->createVectCmd(fr->mapToRef(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)),Coord::CANVAS),
+	    fr->mapToRef(Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),Coord::CANVAS),
+	    1,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 838:
-#line 2108 "parser.Y"
-    {fr->createTextCmd(fr->mapToRef(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),CANVAS),
+#line 1995 "parser.Y"
+    {fr->createTextCmd(fr->mapToRef(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),Coord::CANVAS),
 	    (yyvsp[(4) - (5)].real), 1,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 839:
-#line 2116 "parser.Y"
-    {fr->createPolygonCmd(fr->mapToRef(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)),CANVAS),
-	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),
+#line 2000 "parser.Y"
+    {fr->createPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),Coord::CANVAS),
+	    Point::CIRCLE, (yyvsp[(5) - (6)].integer),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 840:
-#line 2125 "parser.Y"
-    {fr->createCompassCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),CANVAS), 
-	    (yyvsp[(4) - (7)].real),
-	    "N", "E", 1, 1,
-	    (CoordSystem)(yyvsp[(5) - (7)].integer), (SkyFrame)(yyvsp[(6) - (7)].integer),
+#line 2005 "parser.Y"
+    {fr->createPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),Coord::CANVAS),
+	    Point::BOX, (yyvsp[(5) - (6)].integer),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 841:
-#line 2133 "parser.Y"
-    {fr->createCompositeCmd(
+#line 2010 "parser.Y"
+    {fr->createPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),Coord::CANVAS),
+	    Point::DIAMOND, (yyvsp[(5) - (6)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
+    break;
+
+  case 842:
+#line 2015 "parser.Y"
+    {fr->createPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),Coord::CANVAS),
+	    Point::CROSS, (yyvsp[(5) - (6)].integer),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 843:
-#line 2141 "parser.Y"
-    {fr->createTemplateCmd(fr->mapToRef(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)),CANVAS), (yyvsp[(1) - (3)].str));;}
+#line 2020 "parser.Y"
+    {fr->createPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),Coord::CANVAS),
+	    Point::EX, (yyvsp[(5) - (6)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 844:
-#line 2143 "parser.Y"
-    {fr->createTemplateVarCmd(fr->mapToRef(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),CANVAS), (yyvsp[(2) - (4)].str));;}
+#line 2025 "parser.Y"
+    {fr->createPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),Coord::CANVAS),
+	    Point::ARROW, (yyvsp[(5) - (6)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 845:
-#line 2145 "parser.Y"
-    { 
-	    // backward compatibility
-	    fr->createTemplateVarCmd(fr->mapToRef(Vector((yyvsp[(1) - (4)].real),(yyvsp[(2) - (4)].real)),CANVAS), (yyvsp[(4) - (4)].str));
-	  ;}
+#line 2030 "parser.Y"
+    {fr->createPointCmd(fr->mapToRef(Vector((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real)),Coord::CANVAS),
+	    Point::BOXCIRCLE, (yyvsp[(5) - (6)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 846:
-#line 2150 "parser.Y"
-    {fr->createTemplateCmd(Vector((yyvsp[(4) - (4)].vector)),(CoordSystem)(yyvsp[(2) - (4)].integer),(SkyFrame)(yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str));;}
+#line 2039 "parser.Y"
+    {fr->createRulerCmd(fr->mapToRef(Vector((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real)),Coord::CANVAS),
+	    fr->mapToRef(Vector((yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real)),Coord::CANVAS),
+	    (Coord::CoordSystem)(yyvsp[(6) - (10)].integer), (Coord::SkyFrame)(yyvsp[(7) - (10)].integer), (Coord::CoordSystem)(yyvsp[(8) - (10)].integer), (Coord::SkyDist)(yyvsp[(9) - (10)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 847:
-#line 2153 "parser.Y"
-    {(yyval.dash)[0] = (yyvsp[(1) - (2)].integer); (yyval.dash)[1] = (yyvsp[(2) - (2)].integer);;}
+#line 2048 "parser.Y"
+    {fr->createCompassCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),Coord::CANVAS), 
+	    (yyvsp[(4) - (7)].real),
+	    "N", "E", 1, 1,
+	    (Coord::CoordSystem)(yyvsp[(5) - (7)].integer), (Coord::SkyFrame)(yyvsp[(6) - (7)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 848:
-#line 2157 "parser.Y"
-    {fr->markerEditBeginCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
+#line 2058 "parser.Y"
+    {fr->createProjectionCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),Coord::CANVAS),
+	    fr->mapToRef(Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),Coord::CANVAS),
+	    (yyvsp[(6) - (7)].real),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 849:
-#line 2159 "parser.Y"
-    {fr->markerEditMotionCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
+#line 2067 "parser.Y"
+    {fr->createAnnulusCmd(fr->mapToRef(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),Coord::CANVAS),
+	    (yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 850:
-#line 2160 "parser.Y"
-    {fr->markerEditEndCmd();;}
+#line 2075 "parser.Y"
+    {fr->createEllipseAnnulusCmd(fr->mapToRef(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real)),Coord::CANVAS),
+	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)), 
+	    Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
+	    (yyvsp[(8) - (9)].real),
+	    currentColor,currentDash,currentWidth,currentFont, 
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 851:
-#line 2163 "parser.Y"
-    {(yyval.integer) = Base::DS9;;}
+#line 2085 "parser.Y"
+    {fr->createBoxAnnulusCmd(fr->mapToRef(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real)),Coord::CANVAS),
+	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)),Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
+	    (yyvsp[(8) - (9)].real),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 852:
-#line 2164 "parser.Y"
-    {(yyval.integer) = Base::XML;;}
+#line 2095 "parser.Y"
+    {fr->createCpandaCmd(fr->mapToRef(Vector((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real)),Coord::CANVAS),
+	    (yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].integer),
+	    (yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(yyvsp[(9) - (10)].integer),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 853:
-#line 2165 "parser.Y"
-    {(yyval.integer) = Base::CIAO;;}
+#line 2105 "parser.Y"
+    {fr->createEpandaCmd(fr->mapToRef(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real)),Coord::CANVAS),
+	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
+	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
+	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
+	    (yyvsp[(11) - (12)].real),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 854:
-#line 2166 "parser.Y"
-    {(yyval.integer) = Base::SAOTNG;;}
+#line 2117 "parser.Y"
+    {fr->createBpandaCmd(fr->mapToRef(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real)),Coord::CANVAS),
+	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
+	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
+	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
+	    (yyvsp[(11) - (12)].real),
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
   case 855:
-#line 2167 "parser.Y"
-    {(yyval.integer) = Base::SAOIMAGE;;}
+#line 2126 "parser.Y"
+    {fr->createCompositeCmd(
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);;}
     break;
 
-  case 856:
-#line 2168 "parser.Y"
-    {(yyval.integer) = Base::PROS;;}
+  case 857:
+#line 2134 "parser.Y"
+    {fr->createTemplateCmd(fr->mapToRef(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)),Coord::CANVAS), (yyvsp[(1) - (3)].str));;}
     break;
 
-  case 857:
-#line 2169 "parser.Y"
-    {(yyval.integer) = Base::RAWXY;;}
+  case 858:
+#line 2136 "parser.Y"
+    {fr->createTemplateVarCmd(fr->mapToRef(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),Coord::CANVAS), (yyvsp[(2) - (4)].str));;}
     break;
 
   case 859:
-#line 2173 "parser.Y"
-    {fr->getMarkerColorCmd();;}
+#line 2138 "parser.Y"
+    { 
+	    // backward compatibility
+	    fr->createTemplateVarCmd(fr->mapToRef(Vector((yyvsp[(1) - (4)].real),(yyvsp[(2) - (4)].real)),Coord::CANVAS), (yyvsp[(4) - (4)].str));
+	  ;}
     break;
 
   case 860:
-#line 2174 "parser.Y"
-    {fr->getMarkerFontCmd();;}
+#line 2143 "parser.Y"
+    {fr->createTemplateCmd(Vector((yyvsp[(4) - (4)].vector)),(Coord::CoordSystem)(yyvsp[(2) - (4)].integer),(Coord::SkyFrame)(yyvsp[(3) - (4)].integer), (yyvsp[(1) - (4)].str));;}
     break;
 
   case 861:
-#line 2175 "parser.Y"
-    {fr->getMarkerHandleCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+#line 2146 "parser.Y"
+    {(yyval.dash)[0] = (yyvsp[(1) - (2)].integer); (yyval.dash)[1] = (yyvsp[(2) - (2)].integer);;}
     break;
 
   case 862:
-#line 2176 "parser.Y"
-    {fr->getMarkerIdCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+#line 2150 "parser.Y"
+    {fr->markerEditBeginCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 863:
-#line 2177 "parser.Y"
-    {fr->getMarkerIdAllCmd();;}
+#line 2152 "parser.Y"
+    {fr->markerEditMotionCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 864:
-#line 2178 "parser.Y"
-    {fr->getMarkerAngleCmd((yyvsp[(1) - (2)].integer));;}
+#line 2153 "parser.Y"
+    {fr->markerEditEndCmd();;}
     break;
 
   case 865:
-#line 2179 "parser.Y"
-    {fr->getMarkerAngleCmd((yyvsp[(1) - (3)].integer));;}
+#line 2156 "parser.Y"
+    {(yyval.integer) = Base::DS9;;}
     break;
 
   case 866:
-#line 2181 "parser.Y"
-    {fr->getMarkerAngleCmd((yyvsp[(1) - (4)].integer),(CoordSystem)(yyvsp[(3) - (4)].integer), (SkyFrame)(yyvsp[(4) - (4)].integer));;}
+#line 2157 "parser.Y"
+    {(yyval.integer) = Base::XML;;}
     break;
 
   case 867:
-#line 2183 "parser.Y"
-    {fr->getMarkerAnnulusRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2158 "parser.Y"
+    {(yyval.integer) = Base::CIAO;;}
     break;
 
   case 868:
-#line 2185 "parser.Y"
-    {fr->getMarkerAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2159 "parser.Y"
+    {(yyval.integer) = Base::SAOTNG;;}
     break;
 
   case 869:
-#line 2187 "parser.Y"
-    {fr->getMarkerBoxAnnulusRadiusCmd((yyvsp[(1) - (4)].integer),(InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2160 "parser.Y"
+    {(yyval.integer) = Base::SAOIMAGE;;}
     break;
 
   case 870:
-#line 2189 "parser.Y"
-    {fr->getMarkerBoxAnnulusRadiusCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2161 "parser.Y"
+    {(yyval.integer) = Base::PROS;;}
     break;
 
   case 871:
-#line 2191 "parser.Y"
-    {fr->getMarkerBoxRadiusCmd((yyvsp[(1) - (4)].integer),(InternalSystem)(yyvsp[(4) - (4)].integer));;}
-    break;
-
-  case 872:
-#line 2193 "parser.Y"
-    {fr->getMarkerBoxRadiusCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2162 "parser.Y"
+    {(yyval.integer) = Base::RAWXY;;}
     break;
 
   case 873:
-#line 2194 "parser.Y"
-    {fr->getMarkerBpandaAnglesCmd((yyvsp[(1) - (3)].integer));;}
+#line 2166 "parser.Y"
+    {fr->getMarkerColorCmd();;}
     break;
 
   case 874:
-#line 2195 "parser.Y"
-    {fr->getMarkerBpandaAnglesCmd((yyvsp[(1) - (4)].integer));;}
+#line 2167 "parser.Y"
+    {fr->getMarkerFontCmd();;}
     break;
 
   case 875:
-#line 2197 "parser.Y"
-    {fr->getMarkerBpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+#line 2168 "parser.Y"
+    {fr->getMarkerHandleCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
   case 876:
-#line 2199 "parser.Y"
-    {fr->getMarkerBpandaRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2169 "parser.Y"
+    {fr->getMarkerIdCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
   case 877:
-#line 2201 "parser.Y"
-    {fr->getMarkerBpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2172 "parser.Y"
+    {fr->getMarkerAnalysisPlot2dCmd((yyvsp[(1) - (7)].integer),(yyvsp[(4) - (7)].str),(yyvsp[(5) - (7)].str),(yyvsp[(6) - (7)].str),(yyvsp[(7) - (7)].str));;}
     break;
 
   case 878:
-#line 2203 "parser.Y"
-    {fr->getMarkerCenterCmd((yyvsp[(1) - (3)].integer), (InternalSystem)(yyvsp[(3) - (3)].integer));;}
+#line 2174 "parser.Y"
+    {fr->getMarkerAnalysisPlot3dCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
     break;
 
   case 879:
-#line 2205 "parser.Y"
-    {fr->getMarkerCenterCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(3) - (5)].integer), (SkyFrame)(yyvsp[(4) - (5)].integer), 
-	    (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+#line 2175 "parser.Y"
+    {fr->getMarkerAnalysisParamCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 880:
-#line 2208 "parser.Y"
-    {fr->getMarkerCircleRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2176 "parser.Y"
+    {fr->getMarkerAnalysisSystemCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 881:
-#line 2210 "parser.Y"
-    {fr->getMarkerCircleRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2178 "parser.Y"
+    {fr->getMarkerIdAllCmd();;}
     break;
 
   case 882:
-#line 2211 "parser.Y"
-    {fr->getMarkerColorCmd((yyvsp[(1) - (2)].integer));;}
+#line 2179 "parser.Y"
+    {fr->getMarkerAngleCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
   case 883:
-#line 2212 "parser.Y"
-    {fr->getMarkerCompassArrowCmd((yyvsp[(1) - (3)].integer));;}
+#line 2180 "parser.Y"
+    {fr->getMarkerAngleCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 884:
-#line 2213 "parser.Y"
-    {fr->getMarkerCompassLabelCmd((yyvsp[(1) - (3)].integer));;}
+#line 2182 "parser.Y"
+    {fr->getMarkerAngleCmd((yyvsp[(1) - (4)].integer),(Coord::CoordSystem)(yyvsp[(3) - (4)].integer), (Coord::SkyFrame)(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 885:
-#line 2215 "parser.Y"
-    {fr->getMarkerCompassRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2184 "parser.Y"
+    {fr->getMarkerAnnulusRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 886:
-#line 2217 "parser.Y"
-    {fr->getMarkerCompassRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2186 "parser.Y"
+    {fr->getMarkerAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 887:
-#line 2218 "parser.Y"
-    {fr->getMarkerCompassSystemCmd((yyvsp[(1) - (3)].integer));;}
+#line 2189 "parser.Y"
+    {fr->getMarkerBoxAnnulusRadiusCmd((yyvsp[(1) - (4)].integer),(Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 888:
-#line 2219 "parser.Y"
-    {fr->getMarkerCompositeCmd((yyvsp[(1) - (3)].integer));;}
+#line 2191 "parser.Y"
+    {fr->getMarkerBoxAnnulusRadiusCmd((yyvsp[(1) - (5)].integer),(Coord::CoordSystem)(yyvsp[(4) - (5)].integer),(Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 889:
-#line 2220 "parser.Y"
-    {fr->getMarkerCpandaAnglesCmd((yyvsp[(1) - (3)].integer));;}
+#line 2193 "parser.Y"
+    {fr->getMarkerBoxRadiusCmd((yyvsp[(1) - (4)].integer),(Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 890:
-#line 2221 "parser.Y"
-    {fr->getMarkerCpandaAnglesCmd((yyvsp[(1) - (4)].integer));;}
+#line 2195 "parser.Y"
+    {fr->getMarkerBoxRadiusCmd((yyvsp[(1) - (5)].integer),(Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 891:
-#line 2223 "parser.Y"
-    {fr->getMarkerCpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+#line 2196 "parser.Y"
+    {fr->getMarkerBpandaAnglesCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 892:
-#line 2225 "parser.Y"
-    {fr->getMarkerCpandaRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2197 "parser.Y"
+    {fr->getMarkerBpandaAnglesCmd((yyvsp[(1) - (4)].integer));;}
     break;
 
   case 893:
-#line 2227 "parser.Y"
-    {fr->getMarkerCpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2199 "parser.Y"
+    {fr->getMarkerBpandaAnglesCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyFrame)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 894:
-#line 2229 "parser.Y"
-    {fr->getMarkerEllipseRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2201 "parser.Y"
+    {fr->getMarkerBpandaRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 895:
-#line 2231 "parser.Y"
-    {fr->getMarkerEllipseRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2203 "parser.Y"
+    {fr->getMarkerBpandaRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 896:
-#line 2233 "parser.Y"
-    {fr->getMarkerEllipseAnnulusRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2206 "parser.Y"
+    {fr->getMarkerCenterCmd((yyvsp[(1) - (3)].integer), (Coord::InternalSystem)(yyvsp[(3) - (3)].integer));;}
     break;
 
   case 897:
-#line 2235 "parser.Y"
-    {fr->getMarkerEllipseAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), 
-	    (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2208 "parser.Y"
+    {fr->getMarkerCenterCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(3) - (5)].integer), (Coord::SkyFrame)(yyvsp[(4) - (5)].integer), 
+	    (Coord::SkyFormat)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 898:
-#line 2237 "parser.Y"
-    {fr->getMarkerEpandaAnglesCmd((yyvsp[(1) - (3)].integer));;}
+#line 2211 "parser.Y"
+    {fr->getMarkerCircleRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 899:
-#line 2238 "parser.Y"
-    {fr->getMarkerEpandaAnglesCmd((yyvsp[(1) - (4)].integer));;}
+#line 2213 "parser.Y"
+    {fr->getMarkerCircleRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 900:
-#line 2240 "parser.Y"
-    {fr->getMarkerEpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+#line 2214 "parser.Y"
+    {fr->getMarkerColorCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
   case 901:
-#line 2242 "parser.Y"
-    {fr->getMarkerEpandaRadiusCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2215 "parser.Y"
+    {fr->getMarkerCompassArrowCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 902:
-#line 2244 "parser.Y"
-    {fr->getMarkerEpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2216 "parser.Y"
+    {fr->getMarkerCompassLabelCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 903:
-#line 2245 "parser.Y"
-    {fr->getMarkerFontCmd((yyvsp[(1) - (2)].integer));;}
+#line 2218 "parser.Y"
+    {fr->getMarkerCompassRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
   case 904:
-#line 2246 "parser.Y"
-    {fr->getMarkerHighlitedCmd((yyvsp[(1) - (2)].integer));;}
+#line 2220 "parser.Y"
+    {fr->getMarkerCompassRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 905:
-#line 2247 "parser.Y"
-    {fr->getMarkerLineArrowCmd((yyvsp[(1) - (3)].integer));;}
+#line 2221 "parser.Y"
+    {fr->getMarkerCompassSystemCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 906:
-#line 2249 "parser.Y"
-    {fr->getMarkerLineLengthCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+#line 2222 "parser.Y"
+    {fr->getMarkerCompositeCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 907:
-#line 2251 "parser.Y"
-    {fr->getMarkerLineCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+#line 2223 "parser.Y"
+    {fr->getMarkerCpandaAnglesCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
   case 908:
-#line 2253 "parser.Y"
-    {fr->getMarkerLineCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+#line 2224 "parser.Y"
+    {fr->getMarkerCpandaAnglesCmd((yyvsp[(1) - (4)].integer));;}
     break;
 
   case 909:
-#line 2256 "parser.Y"
-    {fr->getMarkerMapLenFromRefCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real),
-	    (CoordSystem)(yyvsp[(5) - (6)].integer),(SkyDist)(yyvsp[(6) - (6)].integer));;}
+#line 2226 "parser.Y"
+    {fr->getMarkerCpandaAnglesCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyFrame)(yyvsp[(5) - (5)].integer));;}
     break;
 
   case 910:
-#line 2258 "parser.Y"
-    {fr->getMarkerPointSizeCmd((yyvsp[(1) - (3)].integer));;}
+#line 2228 "parser.Y"
+    {fr->getMarkerCpandaRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 911:
+#line 2230 "parser.Y"
+    {fr->getMarkerCpandaRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
+    break;
+
+  case 912:
+#line 2232 "parser.Y"
+    {fr->getMarkerEllipseRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 913:
+#line 2234 "parser.Y"
+    {fr->getMarkerEllipseRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
+    break;
+
+  case 914:
+#line 2236 "parser.Y"
+    {fr->getMarkerEllipseAnnulusRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 915:
+#line 2238 "parser.Y"
+    {fr->getMarkerEllipseAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), 
+	    (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
+    break;
+
+  case 916:
+#line 2240 "parser.Y"
+    {fr->getMarkerEpandaAnglesCmd((yyvsp[(1) - (3)].integer));;}
+    break;
+
+  case 917:
+#line 2241 "parser.Y"
+    {fr->getMarkerEpandaAnglesCmd((yyvsp[(1) - (4)].integer));;}
+    break;
+
+  case 918:
+#line 2243 "parser.Y"
+    {fr->getMarkerEpandaAnglesCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyFrame)(yyvsp[(5) - (5)].integer));;}
+    break;
+
+  case 919:
+#line 2245 "parser.Y"
+    {fr->getMarkerEpandaRadiusCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 920:
+#line 2247 "parser.Y"
+    {fr->getMarkerEpandaRadiusCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
+    break;
+
+  case 921:
+#line 2248 "parser.Y"
+    {fr->getMarkerFontCmd((yyvsp[(1) - (2)].integer));;}
+    break;
+
+  case 922:
+#line 2249 "parser.Y"
+    {fr->getMarkerHighlitedCmd((yyvsp[(1) - (2)].integer));;}
+    break;
+
+  case 923:
+#line 2250 "parser.Y"
+    {fr->getMarkerLineArrowCmd((yyvsp[(1) - (3)].integer));;}
+    break;
+
+  case 924:
+#line 2252 "parser.Y"
+    {fr->getMarkerLineLengthCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
+    break;
+
+  case 925:
+#line 2254 "parser.Y"
+    {fr->getMarkerLineCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
+    break;
+
+  case 926:
+#line 2256 "parser.Y"
+    {fr->getMarkerLineCmd((yyvsp[(1) - (6)].integer), (Coord::CoordSystem)(yyvsp[(4) - (6)].integer),
+	    (Coord::SkyFrame)(yyvsp[(5) - (6)].integer), (Coord::SkyFormat)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 911:
-#line 2260 "parser.Y"
-    {fr->getMarkerProjectionCmd((yyvsp[(1) - (6)].integer),(yyvsp[(3) - (6)].str),(yyvsp[(4) - (6)].str),(yyvsp[(5) - (6)].str),(yyvsp[(6) - (6)].str));;}
+  case 927:
+#line 2259 "parser.Y"
+    {fr->getMarkerMapLenFromRefCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real),
+	    (Coord::CoordSystem)(yyvsp[(5) - (6)].integer),(Coord::SkyDist)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 912:
+  case 928:
 #line 2262 "parser.Y"
-    {fr->getMarkerProjectionPointsCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+    {fr->getMarkerPointShapeCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 913:
-#line 2264 "parser.Y"
-    {fr->getMarkerProjectionPointsCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+  case 929:
+#line 2263 "parser.Y"
+    {fr->getMarkerPointSizeCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 914:
-#line 2267 "parser.Y"
-    {fr->getMarkerProjectionLengthCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), 
-	    (SkyDist)(yyvsp[(5) - (5)].integer));;}
+  case 930:
+#line 2265 "parser.Y"
+    {fr->getMarkerProjectionPointsCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 915:
-#line 2269 "parser.Y"
-    {fr->getMarkerProjectionMethodCmd((yyvsp[(1) - (3)].integer));;}
+  case 931:
+#line 2267 "parser.Y"
+    {fr->getMarkerProjectionPointsCmd((yyvsp[(1) - (6)].integer), (Coord::CoordSystem)(yyvsp[(4) - (6)].integer),
+	    (Coord::SkyFrame)(yyvsp[(5) - (6)].integer), (Coord::SkyFormat)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 916:
-#line 2271 "parser.Y"
-    {fr->getMarkerProjectionWidthCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+  case 932:
+#line 2270 "parser.Y"
+    {fr->getMarkerProjectionLengthCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), 
+	    (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 917:
+  case 933:
 #line 2273 "parser.Y"
-    {fr->getMarkerProjectionWidthCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyDist)(yyvsp[(5) - (5)].integer));;}
+    {fr->getMarkerProjectionWidthCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 918:
-#line 2274 "parser.Y"
-    {fr->getMarkerProjectionSystemCmd((yyvsp[(1) - (3)].integer));;}
+  case 934:
+#line 2275 "parser.Y"
+    {fr->getMarkerProjectionWidthCmd((yyvsp[(1) - (5)].integer),(Coord::CoordSystem)(yyvsp[(4) - (5)].integer),(Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 919:
+  case 935:
 #line 2276 "parser.Y"
-    {fr->getMarkerCircle3dCmd((yyvsp[(1) - (5)].integer),(yyvsp[(3) - (5)].str),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
+    {fr->getMarkerPropertyCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 920:
+  case 936:
 #line 2277 "parser.Y"
-    {fr->getMarkerCircle3dMethodCmd((yyvsp[(1) - (3)].integer));;}
+    {fr->getMarkerPropertyCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 921:
+  case 937:
 #line 2279 "parser.Y"
-    {fr->getMarkerCircle3dRadiusCmd((yyvsp[(1) - (5)].integer), 
-	    (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+    {fr->getMarkerRulerLengthCmd((yyvsp[(1) - (5)].integer),(Coord::CoordSystem)(yyvsp[(4) - (5)].integer),(Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 922:
+  case 938:
 #line 2281 "parser.Y"
-    {fr->getMarkerCircle3dSystemCmd((yyvsp[(1) - (3)].integer));;}
-    break;
-
-  case 923:
-#line 2282 "parser.Y"
-    {fr->getMarkerPropertyCmd((yyvsp[(1) - (2)].integer));;}
+    {fr->getMarkerRulerPointCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 924:
+  case 939:
 #line 2283 "parser.Y"
-    {fr->getMarkerPropertyCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+    {fr->getMarkerRulerPointCmd((yyvsp[(1) - (6)].integer), (Coord::CoordSystem)(yyvsp[(4) - (6)].integer),
+	    (Coord::SkyFrame)(yyvsp[(5) - (6)].integer), (Coord::SkyFormat)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 925:
+  case 940:
 #line 2285 "parser.Y"
-    {fr->getMarkerRulerLengthCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyDist)(yyvsp[(5) - (5)].integer));;}
-    break;
-
-  case 926:
-#line 2287 "parser.Y"
-    {fr->getMarkerRulerPointCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
-    break;
-
-  case 927:
-#line 2289 "parser.Y"
-    {fr->getMarkerRulerPointCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-    break;
-
-  case 928:
-#line 2291 "parser.Y"
     {fr->getMarkerRulerSystemCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 929:
-#line 2292 "parser.Y"
+  case 941:
+#line 2286 "parser.Y"
     {fr->getMarkerSelectedCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 930:
-#line 2293 "parser.Y"
+  case 942:
+#line 2288 "parser.Y"
     {fr->getMarkerTagCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 931:
-#line 2294 "parser.Y"
+  case 943:
+#line 2289 "parser.Y"
     {fr->getMarkerTagCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 932:
-#line 2295 "parser.Y"
+  case 944:
+#line 2290 "parser.Y"
     {fr->getMarkerTextCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 933:
-#line 2296 "parser.Y"
+  case 945:
+#line 2291 "parser.Y"
     {fr->getMarkerTextRotateCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 934:
-#line 2297 "parser.Y"
+  case 946:
+#line 2292 "parser.Y"
     {fr->getMarkerTypeCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 935:
-#line 2298 "parser.Y"
+  case 947:
+#line 2294 "parser.Y"
     {fr->getMarkerVectorArrowCmd((yyvsp[(1) - (3)].integer));;}
     break;
 
-  case 936:
-#line 2300 "parser.Y"
-    {fr->getMarkerVectorLengthCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyDist)(yyvsp[(5) - (5)].integer));;}
+  case 948:
+#line 2296 "parser.Y"
+    {fr->getMarkerVectorLengthCmd((yyvsp[(1) - (5)].integer), (Coord::CoordSystem)(yyvsp[(4) - (5)].integer), (Coord::SkyDist)(yyvsp[(5) - (5)].integer));;}
     break;
 
-  case 937:
-#line 2302 "parser.Y"
-    {fr->getMarkerVectorCmd((yyvsp[(1) - (4)].integer), (InternalSystem)(yyvsp[(4) - (4)].integer));;}
+  case 949:
+#line 2298 "parser.Y"
+    {fr->getMarkerVectorCmd((yyvsp[(1) - (4)].integer), (Coord::InternalSystem)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 938:
-#line 2304 "parser.Y"
-    {fr->getMarkerVectorCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+  case 950:
+#line 2300 "parser.Y"
+    {fr->getMarkerVectorCmd((yyvsp[(1) - (6)].integer), (Coord::CoordSystem)(yyvsp[(4) - (6)].integer),
+	    (Coord::SkyFrame)(yyvsp[(5) - (6)].integer), (Coord::SkyFormat)(yyvsp[(6) - (6)].integer));;}
     break;
 
-  case 939:
-#line 2306 "parser.Y"
+  case 951:
+#line 2302 "parser.Y"
     {fr->getMarkerLineWidthCmd((yyvsp[(1) - (2)].integer));;}
     break;
 
-  case 941:
-#line 2308 "parser.Y"
+  case 953:
+#line 2304 "parser.Y"
     {fr->getMarkerHighlitedNumberCmd();;}
     break;
 
-  case 942:
-#line 2309 "parser.Y"
+  case 954:
+#line 2305 "parser.Y"
     {fr->getMarkerNumberCmd();;}
     break;
 
-  case 943:
-#line 2311 "parser.Y"
+  case 955:
+#line 2307 "parser.Y"
     {fr->getMarkerPolygonSegmentCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
     break;
 
-  case 944:
-#line 2312 "parser.Y"
+  case 956:
+#line 2308 "parser.Y"
     {fr->getMarkerPreserveCmd();;}
     break;
 
-  case 945:
-#line 2313 "parser.Y"
+  case 957:
+#line 2309 "parser.Y"
     {fr->getMarkerPropertyCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 947:
-#line 2315 "parser.Y"
+  case 959:
+#line 2311 "parser.Y"
     {fr->getMarkerSelectedNumberCmd();;}
     break;
 
-  case 949:
-#line 2319 "parser.Y"
+  case 961:
+#line 2315 "parser.Y"
     {fr->getMarkerColorCmd((yyvsp[(1) - (2)].str));;}
     break;
 
-  case 950:
-#line 2320 "parser.Y"
+  case 962:
+#line 2316 "parser.Y"
     {fr->getMarkerFontCmd((yyvsp[(1) - (2)].str));;}
     break;
 
-  case 951:
-#line 2321 "parser.Y"
+  case 963:
+#line 2317 "parser.Y"
     {fr->getMarkerIdCmd((yyvsp[(1) - (2)].str));;}
     break;
 
-  case 952:
-#line 2322 "parser.Y"
+  case 964:
+#line 2318 "parser.Y"
     {fr->getMarkerPropertyCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 953:
-#line 2323 "parser.Y"
+  case 965:
+#line 2319 "parser.Y"
     {fr->getMarkerTagCmd((yyvsp[(1) - (2)].str));;}
     break;
 
-  case 954:
-#line 2324 "parser.Y"
+  case 966:
+#line 2320 "parser.Y"
     {fr->getMarkerTagNumberCmd((yyvsp[(1) - (3)].str));;}
     break;
 
-  case 955:
-#line 2326 "parser.Y"
+  case 967:
+#line 2322 "parser.Y"
     {fr->getMarkerTagsCmd();;}
     break;
 
-  case 956:
-#line 2327 "parser.Y"
+  case 968:
+#line 2323 "parser.Y"
     {fr->getMarkerTagDefaultNameCmd();;}
     break;
 
-  case 957:
-#line 2329 "parser.Y"
+  case 969:
+#line 2325 "parser.Y"
     {fr->getMarkerLineWidthCmd();;}
     break;
 
-  case 958:
-#line 2332 "parser.Y"
+  case 970:
+#line 2328 "parser.Y"
     {fr->getMarkerCentroidAutoCmd();;}
     break;
 
-  case 959:
-#line 2333 "parser.Y"
+  case 971:
+#line 2329 "parser.Y"
     {fr->getMarkerCentroidRadiusCmd();;}
     break;
 
-  case 960:
-#line 2334 "parser.Y"
+  case 972:
+#line 2330 "parser.Y"
     {fr->getMarkerCentroidIterationCmd();;}
     break;
 
-  case 961:
-#line 2335 "parser.Y"
+  case 973:
+#line 2331 "parser.Y"
     {fr->getMarkerCentroidOptionCmd();;}
     break;
 
-  case 962:
-#line 2338 "parser.Y"
+  case 974:
+#line 2334 "parser.Y"
     {fr->getMarkerHighlitedCmd();;}
     break;
 
-  case 963:
-#line 2339 "parser.Y"
+  case 975:
+#line 2335 "parser.Y"
     {fr->getMarkerHighlitedCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 964:
-#line 2342 "parser.Y"
+  case 976:
+#line 2338 "parser.Y"
     {fr->getMarkerSelectedCmd();;}
     break;
 
-  case 965:
-#line 2343 "parser.Y"
+  case 977:
+#line 2339 "parser.Y"
     {fr->getMarkerSelectedCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 966:
-#line 2346 "parser.Y"
+  case 978:
+#line 2342 "parser.Y"
     {fr->getMarkerShowCmd();;}
     break;
 
-  case 967:
-#line 2347 "parser.Y"
+  case 979:
+#line 2343 "parser.Y"
     {fr->getMarkerShowTextCmd();;}
     break;
 
-  case 968:
-#line 2350 "parser.Y"
+  case 980:
+#line 2346 "parser.Y"
     {
 	  strncpy(currentFont, "helvetica 10 normal roman", 32);
 	  strncpy(currentColor, "green", 16);
@@ -9434,709 +9469,714 @@ yyreduce:
 	;}
     break;
 
-  case 969:
-#line 2363 "parser.Y"
+  case 981:
+#line 2359 "parser.Y"
     {fr->markerLayerCmd(Base::USER);;}
     break;
 
-  case 970:
-#line 2364 "parser.Y"
+  case 982:
+#line 2360 "parser.Y"
     {fr->markerLayerCmd(Base::USER);;}
     break;
 
-  case 971:
-#line 2365 "parser.Y"
+  case 983:
+#line 2361 "parser.Y"
     {fr->markerLayerCmd(Base::USER);;}
     break;
 
-  case 972:
-#line 2366 "parser.Y"
+  case 984:
+#line 2362 "parser.Y"
     {fr->markerLayerCmd(Base::CATALOG);;}
     break;
 
-  case 973:
-#line 2371 "parser.Y"
+  case 985:
+#line 2367 "parser.Y"
     {fr->markerListCmd((Base::MarkerFormat)(yyvsp[(1) - (7)].integer),
-	    (CoordSystem)(yyvsp[(2) - (7)].integer), (SkyFrame)(yyvsp[(3) - (7)].integer), (SkyFormat)(yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer),
+	    (Coord::CoordSystem)(yyvsp[(2) - (7)].integer), (Coord::SkyFrame)(yyvsp[(3) - (7)].integer), (Coord::SkyFormat)(yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer),
 	    0, propQMask, propQValue, taglist);;}
     break;
 
-  case 974:
-#line 2376 "parser.Y"
+  case 986:
+#line 2372 "parser.Y"
     {fr->markerListCmd((Base::MarkerFormat)(yyvsp[(2) - (8)].integer), 
-	    (CoordSystem)(yyvsp[(3) - (8)].integer), (SkyFrame)(yyvsp[(4) - (8)].integer), (SkyFormat)(yyvsp[(5) - (8)].integer), (yyvsp[(6) - (8)].integer),
+	    (Coord::CoordSystem)(yyvsp[(3) - (8)].integer), (Coord::SkyFrame)(yyvsp[(4) - (8)].integer), (Coord::SkyFormat)(yyvsp[(5) - (8)].integer), (yyvsp[(6) - (8)].integer),
 	    1, propQMask, propQValue, taglist);;}
     break;
 
-  case 975:
-#line 2382 "parser.Y"
+  case 987:
+#line 2378 "parser.Y"
     {fr->markerLoadCmd((Base::MarkerFormat)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].str));;}
     break;
 
-  case 976:
-#line 2384 "parser.Y"
+  case 988:
+#line 2380 "parser.Y"
     {fr->markerLoadCmd((Base::MarkerFormat)(yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].str),
-	    (CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(3) - (4)].integer),(Coord::SkyFrame)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 977:
-#line 2387 "parser.Y"
+  case 989:
+#line 2383 "parser.Y"
     {fr->markerLoadCmd((Base::MarkerFormat)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 978:
-#line 2389 "parser.Y"
+  case 990:
+#line 2385 "parser.Y"
     {fr->markerLoadCmd((Base::MarkerFormat)(yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].integer),
-	    (CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(3) - (4)].integer),(Coord::SkyFrame)(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 979:
-#line 2392 "parser.Y"
+  case 991:
+#line 2388 "parser.Y"
     {fr->markerLoadFitsCmd((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].dash), (yyvsp[(5) - (6)].integer), (yyvsp[(6) - (6)].str));;}
     break;
 
-  case 980:
-#line 2395 "parser.Y"
+  case 992:
+#line 2391 "parser.Y"
     {fr->markerMoveCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 981:
-#line 2396 "parser.Y"
+  case 993:
+#line 2392 "parser.Y"
     {fr->markerFrontCmd();;}
     break;
 
-  case 982:
-#line 2397 "parser.Y"
+  case 994:
+#line 2393 "parser.Y"
     {fr->markerBackCmd();;}
     break;
 
-  case 983:
-#line 2398 "parser.Y"
+  case 995:
+#line 2394 "parser.Y"
     {fr->markerMoveBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 984:
-#line 2399 "parser.Y"
+  case 996:
+#line 2395 "parser.Y"
     {fr->markerMoveMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 985:
-#line 2400 "parser.Y"
+  case 997:
+#line 2396 "parser.Y"
     {fr->markerMoveEndCmd();;}
     break;
 
-  case 986:
-#line 2402 "parser.Y"
-    {fr->markerMoveToCmd(Vector((yyvsp[(3) - (3)].vector)), (InternalSystem)(yyvsp[(2) - (3)].integer));;}
+  case 998:
+#line 2398 "parser.Y"
+    {fr->markerMoveToCmd(Vector((yyvsp[(3) - (3)].vector)), (Coord::InternalSystem)(yyvsp[(2) - (3)].integer));;}
     break;
 
-  case 987:
-#line 2404 "parser.Y"
-    {fr->markerMoveToCmd(Vector((yyvsp[(4) - (4)].vector)), (CoordSystem)(yyvsp[(2) - (4)].integer), (SkyFrame)(yyvsp[(3) - (4)].integer));;}
+  case 999:
+#line 2400 "parser.Y"
+    {fr->markerMoveToCmd(Vector((yyvsp[(4) - (4)].vector)), (Coord::CoordSystem)(yyvsp[(2) - (4)].integer), (Coord::SkyFrame)(yyvsp[(3) - (4)].integer));;}
     break;
 
-  case 990:
-#line 2411 "parser.Y"
+  case 1002:
+#line 2407 "parser.Y"
     {setProps(&currentProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 991:
-#line 2412 "parser.Y"
+  case 1003:
+#line 2408 "parser.Y"
     {strncpy(currentColor,(yyvsp[(3) - (3)].str),16);;}
     break;
 
-  case 992:
-#line 2413 "parser.Y"
+  case 1004:
+#line 2409 "parser.Y"
     {currentDash[0]=(yyvsp[(3) - (4)].integer);currentDash[1]=(yyvsp[(4) - (4)].integer);;}
     break;
 
-  case 993:
-#line 2414 "parser.Y"
+  case 1005:
+#line 2410 "parser.Y"
     {currentWidth = (yyvsp[(3) - (3)].integer);;}
     break;
 
-  case 994:
-#line 2415 "parser.Y"
+  case 1006:
+#line 2411 "parser.Y"
     {strncpy(currentFont,(yyvsp[(3) - (3)].str),32);;}
     break;
 
-  case 995:
-#line 2416 "parser.Y"
+  case 1007:
+#line 2412 "parser.Y"
     {strncpy(currentText,(yyvsp[(3) - (3)].str),80);;}
     break;
 
-  case 998:
-#line 2421 "parser.Y"
+  case 1010:
+#line 2417 "parser.Y"
     {(yyval.integer) = Marker::NONE;;}
     break;
 
-  case 999:
-#line 2422 "parser.Y"
+  case 1011:
+#line 2418 "parser.Y"
     {(yyval.integer) = Marker::SELECT;;}
     break;
 
-  case 1000:
-#line 2423 "parser.Y"
+  case 1012:
+#line 2419 "parser.Y"
     {(yyval.integer) = Marker::HIGHLITE;;}
     break;
 
-  case 1001:
-#line 2424 "parser.Y"
+  case 1013:
+#line 2420 "parser.Y"
     {(yyval.integer) = Marker::DASH;;}
     break;
 
-  case 1002:
-#line 2425 "parser.Y"
+  case 1014:
+#line 2421 "parser.Y"
     {(yyval.integer) = Marker::FIXED;;}
     break;
 
-  case 1003:
-#line 2426 "parser.Y"
+  case 1015:
+#line 2422 "parser.Y"
     {(yyval.integer) = Marker::EDIT;;}
     break;
 
-  case 1004:
-#line 2427 "parser.Y"
+  case 1016:
+#line 2423 "parser.Y"
     {(yyval.integer) = Marker::MOVE;;}
     break;
 
-  case 1005:
-#line 2428 "parser.Y"
+  case 1017:
+#line 2424 "parser.Y"
     {(yyval.integer) = Marker::ROTATE;;}
     break;
 
-  case 1006:
-#line 2429 "parser.Y"
+  case 1018:
+#line 2425 "parser.Y"
     {(yyval.integer) = Marker::DELETE;;}
     break;
 
-  case 1007:
-#line 2430 "parser.Y"
+  case 1019:
+#line 2426 "parser.Y"
     {(yyval.integer) = Marker::INCLUDE;;}
     break;
 
-  case 1008:
-#line 2431 "parser.Y"
+  case 1020:
+#line 2427 "parser.Y"
     {(yyval.integer) = Marker::SOURCE;;}
     break;
 
-  case 1011:
-#line 2438 "parser.Y"
+  case 1023:
+#line 2434 "parser.Y"
     {propQMask=0;propQValue=0;;}
     break;
 
-  case 1012:
-#line 2439 "parser.Y"
+  case 1024:
+#line 2435 "parser.Y"
     {propQMask=0;propQValue=0;;}
     break;
 
-  case 1014:
-#line 2442 "parser.Y"
+  case 1026:
+#line 2438 "parser.Y"
     {fr->markerSelectAllCmd();;}
     break;
 
-  case 1015:
-#line 2443 "parser.Y"
+  case 1027:
+#line 2439 "parser.Y"
     {fr->markerSelectOnlyCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1016:
-#line 2444 "parser.Y"
+  case 1028:
+#line 2440 "parser.Y"
     {fr->markerSelectToggleCmd();;}
     break;
 
-  case 1017:
-#line 2445 "parser.Y"
+  case 1029:
+#line 2441 "parser.Y"
     {fr->markerSelectToggleCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1018:
-#line 2448 "parser.Y"
+  case 1030:
+#line 2444 "parser.Y"
     {fr->markerShowCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 1019:
-#line 2449 "parser.Y"
+  case 1031:
+#line 2445 "parser.Y"
     {fr->markerShowTextCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1022:
-#line 2457 "parser.Y"
+  case 1034:
+#line 2453 "parser.Y"
     {propQMask |= (yyvsp[(1) - (3)].integer); setProps(&propQValue,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1023:
-#line 2460 "parser.Y"
+  case 1035:
+#line 2456 "parser.Y"
     {taglist.deleteAll();}
     break;
 
-  case 1024:
-#line 2461 "parser.Y"
+  case 1036:
+#line 2457 "parser.Y"
     {taglist.deleteAll();}
     break;
 
-  case 1028:
-#line 2468 "parser.Y"
+  case 1040:
+#line 2464 "parser.Y"
     {taglist.append(new Tag((yyvsp[(3) - (3)].str)));;}
     break;
 
-  case 1029:
-#line 2471 "parser.Y"
+  case 1041:
+#line 2467 "parser.Y"
     {cblist.append(
 	new CallBack(fr->getInterp(),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str)));;}
     break;
 
-  case 1030:
-#line 2475 "parser.Y"
+  case 1042:
+#line 2471 "parser.Y"
     {fr->maskClearCmd();;}
     break;
 
-  case 1031:
-#line 2476 "parser.Y"
+  case 1043:
+#line 2472 "parser.Y"
     {fr->maskColorCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 1032:
-#line 2477 "parser.Y"
+  case 1044:
+#line 2473 "parser.Y"
     {fr->maskMarkCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1033:
-#line 2478 "parser.Y"
+  case 1045:
+#line 2474 "parser.Y"
     {fr->maskTransparencyCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 1034:
-#line 2481 "parser.Y"
-    {fr->orientCmd(XX);;}
+  case 1046:
+#line 2477 "parser.Y"
+    {fr->orientCmd(Coord::XX);;}
     break;
 
-  case 1035:
-#line 2482 "parser.Y"
-    {fr->orientCmd(YY);;}
+  case 1047:
+#line 2478 "parser.Y"
+    {fr->orientCmd(Coord::YY);;}
     break;
 
-  case 1036:
-#line 2483 "parser.Y"
-    {fr->orientCmd(XY);;}
+  case 1048:
+#line 2479 "parser.Y"
+    {fr->orientCmd(Coord::XY);;}
     break;
 
-  case 1037:
-#line 2484 "parser.Y"
-    {fr->orientCmd(NORMAL);;}
+  case 1049:
+#line 2480 "parser.Y"
+    {fr->orientCmd(Coord::NORMAL);;}
     break;
 
-  case 1038:
-#line 2488 "parser.Y"
+  case 1050:
+#line 2484 "parser.Y"
     {fr->panCmd(Vector((yyvsp[(1) - (4)].real),(yyvsp[(2) - (4)].real)),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
     break;
 
-  case 1039:
-#line 2489 "parser.Y"
+  case 1051:
+#line 2485 "parser.Y"
     {fr->panCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 1040:
-#line 2491 "parser.Y"
+  case 1052:
+#line 2487 "parser.Y"
     {
 	  // backward compatibility
 	  fr->panCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));
 	;}
     break;
 
-  case 1041:
-#line 2496 "parser.Y"
-    {fr->panCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
+  case 1053:
+#line 2492 "parser.Y"
+    {fr->panCmd(Vector((yyvsp[(3) - (3)].vector)), (Coord::CoordSystem)(yyvsp[(1) - (3)].integer), (Coord::SkyFrame)(yyvsp[(2) - (3)].integer));;}
     break;
 
-  case 1043:
-#line 2498 "parser.Y"
+  case 1055:
+#line 2494 "parser.Y"
     {fr->panBBoxCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1045:
-#line 2500 "parser.Y"
+  case 1057:
+#line 2496 "parser.Y"
     {fr->panPreserveCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1046:
-#line 2503 "parser.Y"
+  case 1058:
+#line 2499 "parser.Y"
     {fr->panToCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 1047:
-#line 2505 "parser.Y"
+  case 1059:
+#line 2501 "parser.Y"
     {
 	  // backward compatibility
 	  fr->panToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));
 	;}
     break;
 
-  case 1048:
-#line 2510 "parser.Y"
-    {fr->panToCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
+  case 1060:
+#line 2506 "parser.Y"
+    {fr->panToCmd(Vector((yyvsp[(3) - (3)].vector)), (Coord::CoordSystem)(yyvsp[(1) - (3)].integer), (Coord::SkyFrame)(yyvsp[(2) - (3)].integer));;}
     break;
 
-  case 1049:
-#line 2513 "parser.Y"
+  case 1061:
+#line 2509 "parser.Y"
     {fr->panBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1050:
-#line 2514 "parser.Y"
+  case 1062:
+#line 2510 "parser.Y"
     {fr->panMotionCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 1051:
-#line 2515 "parser.Y"
+  case 1063:
+#line 2511 "parser.Y"
     {fr->panEndCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1052:
-#line 2518 "parser.Y"
+  case 1064:
+#line 2514 "parser.Y"
     {fr->pannerCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 1053:
-#line 2520 "parser.Y"
-    {fr->pannerCmd((CoordSystem)(yyvsp[(2) - (3)].integer),(SkyFrame)(yyvsp[(3) - (3)].integer));;}
+  case 1065:
+#line 2516 "parser.Y"
+    {fr->pannerCmd((Coord::CoordSystem)(yyvsp[(2) - (3)].integer),(Coord::SkyFrame)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1054:
-#line 2521 "parser.Y"
+  case 1066:
+#line 2517 "parser.Y"
     {fr->pannerCmd((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1055:
-#line 2522 "parser.Y"
+  case 1067:
+#line 2518 "parser.Y"
     {fr->updatePannerCmd();;}
     break;
 
-  case 1056:
-#line 2526 "parser.Y"
+  case 1068:
+#line 2522 "parser.Y"
     {fr->psColorSpaceCmd((Widget::PSColorSpace)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1057:
-#line 2527 "parser.Y"
+  case 1069:
+#line 2523 "parser.Y"
     {fr->psLevelCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1058:
-#line 2528 "parser.Y"
+  case 1070:
+#line 2524 "parser.Y"
     {fr->psResolutionCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1059:
-#line 2529 "parser.Y"
+  case 1071:
+#line 2525 "parser.Y"
     {fr->psScaleCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 1060:
-#line 2532 "parser.Y"
+  case 1072:
+#line 2528 "parser.Y"
     {(yyval.integer) = Widget::BW;;}
     break;
 
-  case 1061:
-#line 2533 "parser.Y"
+  case 1073:
+#line 2529 "parser.Y"
     {(yyval.integer) = Widget::GRAY;;}
     break;
 
-  case 1062:
-#line 2534 "parser.Y"
+  case 1074:
+#line 2530 "parser.Y"
     {(yyval.integer) = Widget::RGB;;}
     break;
 
-  case 1063:
-#line 2535 "parser.Y"
+  case 1075:
+#line 2531 "parser.Y"
     {(yyval.integer) = Widget::CMYK;;}
     break;
 
-  case 1066:
-#line 2543 "parser.Y"
+  case 1078:
+#line 2539 "parser.Y"
     {fr->regionHighliteBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1067:
-#line 2545 "parser.Y"
+  case 1079:
+#line 2541 "parser.Y"
     {fr->regionHighliteMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1068:
-#line 2546 "parser.Y"
+  case 1080:
+#line 2542 "parser.Y"
     {fr->regionHighliteEndCmd();;}
     break;
 
-  case 1069:
-#line 2547 "parser.Y"
+  case 1081:
+#line 2543 "parser.Y"
     {fr->regionHighliteShiftEndCmd();;}
     break;
 
-  case 1070:
-#line 2551 "parser.Y"
+  case 1082:
+#line 2547 "parser.Y"
     {fr->regionSelectBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1071:
-#line 2552 "parser.Y"
+  case 1083:
+#line 2548 "parser.Y"
     {fr->regionSelectMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1072:
-#line 2553 "parser.Y"
+  case 1084:
+#line 2549 "parser.Y"
     {fr->regionSelectEndCmd();;}
     break;
 
-  case 1073:
-#line 2554 "parser.Y"
+  case 1085:
+#line 2550 "parser.Y"
     {fr->regionSelectShiftEndCmd();;}
     break;
 
-  case 1074:
-#line 2557 "parser.Y"
+  case 1086:
+#line 2553 "parser.Y"
     {(yyval.integer) = Frame3dBase::MIP;;}
     break;
 
-  case 1075:
-#line 2558 "parser.Y"
+  case 1087:
+#line 2554 "parser.Y"
     {(yyval.integer) = Frame3dBase::AIP;;}
     break;
 
-  case 1076:
-#line 2561 "parser.Y"
+  case 1088:
+#line 2557 "parser.Y"
     {fr->setRGBChannelCmd((yyvsp[(2) - (2)].str));;}
     break;
 
-  case 1077:
-#line 2562 "parser.Y"
-    {fr->setRGBSystemCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+  case 1089:
+#line 2558 "parser.Y"
+    {fr->setRGBSystemCmd((Coord::CoordSystem)(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1078:
-#line 2563 "parser.Y"
+  case 1090:
+#line 2559 "parser.Y"
     {fr->setRGBViewCmd((yyvsp[(2) - (4)].integer),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
     break;
 
-  case 1079:
-#line 2566 "parser.Y"
+  case 1091:
+#line 2562 "parser.Y"
     {fr->rotateCmd(degToRad((yyvsp[(1) - (1)].real)));;}
     break;
 
-  case 1080:
-#line 2567 "parser.Y"
+  case 1092:
+#line 2563 "parser.Y"
     {fr->rotateCmd(degToRad((yyvsp[(1) - (2)].real)));;}
     break;
 
-  case 1082:
-#line 2569 "parser.Y"
+  case 1094:
+#line 2565 "parser.Y"
     {fr->rotateToCmd(degToRad((yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 1083:
-#line 2570 "parser.Y"
+  case 1095:
+#line 2566 "parser.Y"
     {fr->rotateToCmd(degToRad((yyvsp[(2) - (3)].real)));;}
     break;
 
-  case 1084:
-#line 2573 "parser.Y"
+  case 1096:
+#line 2569 "parser.Y"
     {fr->rotateBeginCmd();;}
     break;
 
-  case 1085:
-#line 2574 "parser.Y"
+  case 1097:
+#line 2570 "parser.Y"
     {fr->rotateMotionCmd(degToRad((yyvsp[(1) - (1)].real)));;}
     break;
 
-  case 1086:
-#line 2575 "parser.Y"
+  case 1098:
+#line 2571 "parser.Y"
     {fr->rotateEndCmd();;}
     break;
 
-  case 1089:
-#line 2583 "parser.Y"
+  case 1101:
+#line 2576 "parser.Y"
+    {fr->savePhotoCmd((yyvsp[(2) - (2)].str));;}
+    break;
+
+  case 1102:
+#line 2580 "parser.Y"
     {fr->saveArrayFileCmd((yyvsp[(2) - (3)].str), (FitsFile::ArchType)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1090:
-#line 2585 "parser.Y"
+  case 1103:
+#line 2582 "parser.Y"
     {fr->saveArrayChannelCmd((yyvsp[(2) - (3)].str), (FitsFile::ArchType)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1091:
-#line 2587 "parser.Y"
+  case 1104:
+#line 2584 "parser.Y"
     {fr->saveArraySocketCmd((yyvsp[(2) - (3)].integer), (FitsFile::ArchType)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1095:
-#line 2595 "parser.Y"
+  case 1108:
+#line 2592 "parser.Y"
     {fr->saveFitsImageFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1096:
-#line 2596 "parser.Y"
+  case 1109:
+#line 2593 "parser.Y"
     {fr->saveFitsImageChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1097:
-#line 2597 "parser.Y"
+  case 1110:
+#line 2594 "parser.Y"
     {fr->saveFitsImageSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1098:
-#line 2600 "parser.Y"
+  case 1111:
+#line 2597 "parser.Y"
     {fr->saveFitsTableFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1099:
-#line 2601 "parser.Y"
+  case 1112:
+#line 2598 "parser.Y"
     {fr->saveFitsTableChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1100:
-#line 2602 "parser.Y"
+  case 1113:
+#line 2599 "parser.Y"
     {fr->saveFitsTableSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1101:
-#line 2606 "parser.Y"
+  case 1114:
+#line 2603 "parser.Y"
     {fr->saveFitsResampleFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1102:
-#line 2608 "parser.Y"
+  case 1115:
+#line 2605 "parser.Y"
     {fr->saveFitsResampleChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1103:
-#line 2610 "parser.Y"
+  case 1116:
+#line 2607 "parser.Y"
     {fr->saveFitsResampleSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1104:
-#line 2613 "parser.Y"
+  case 1117:
+#line 2610 "parser.Y"
     {fr->smoothCmd((FitsImage::SmoothFunction)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1105:
-#line 2614 "parser.Y"
+  case 1118:
+#line 2611 "parser.Y"
     {fr->smoothDeleteCmd();;}
     break;
 
-  case 1106:
-#line 2617 "parser.Y"
+  case 1119:
+#line 2614 "parser.Y"
     {(yyval.integer) = FitsImage::BOXCAR;;}
     break;
 
-  case 1107:
-#line 2618 "parser.Y"
+  case 1120:
+#line 2615 "parser.Y"
     {(yyval.integer) = FitsImage::GAUSSIAN;;}
     break;
 
-  case 1108:
-#line 2619 "parser.Y"
+  case 1121:
+#line 2616 "parser.Y"
     {(yyval.integer) = FitsImage::TOPHAT;;}
     break;
 
-  case 1109:
-#line 2622 "parser.Y"
+  case 1122:
+#line 2619 "parser.Y"
     {fr->updateFitsCmd(0);;}
     break;
 
-  case 1110:
-#line 2624 "parser.Y"
+  case 1123:
+#line 2621 "parser.Y"
     {fr->updateFitsCmd((yyvsp[(1) - (5)].integer),BBox((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)),0);;}
     break;
 
-  case 1111:
-#line 2625 "parser.Y"
+  case 1124:
+#line 2622 "parser.Y"
     {fr->updateFitsCmd(1);;}
     break;
 
-  case 1112:
-#line 2627 "parser.Y"
+  case 1125:
+#line 2624 "parser.Y"
     {fr->updateFitsCmd((yyvsp[(2) - (6)].integer),BBox((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)),1);;}
     break;
 
-  case 1114:
-#line 2631 "parser.Y"
+  case 1127:
+#line 2628 "parser.Y"
     {fr->sliceCmd(2, (yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 1115:
-#line 2632 "parser.Y"
+  case 1128:
+#line 2629 "parser.Y"
     {fr->sliceCmd((yyvsp[(1) - (2)].integer), (yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1116:
-#line 2635 "parser.Y"
+  case 1129:
+#line 2632 "parser.Y"
     {fr->warpCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 1117:
-#line 2636 "parser.Y"
+  case 1130:
+#line 2633 "parser.Y"
     {fr->warpToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
     break;
 
-  case 1118:
-#line 2640 "parser.Y"
-    {fr->wcsCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer), (SkyFormat)(yyvsp[(3) - (3)].integer));;}
+  case 1131:
+#line 2637 "parser.Y"
+    {fr->wcsCmd((Coord::CoordSystem)(yyvsp[(1) - (3)].integer), (Coord::SkyFrame)(yyvsp[(2) - (3)].integer), (Coord::SkyFormat)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1120:
-#line 2642 "parser.Y"
+  case 1133:
+#line 2639 "parser.Y"
     {fr->wcsResetCmd((yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1123:
-#line 2647 "parser.Y"
+  case 1136:
+#line 2644 "parser.Y"
     {fr->wcsAppendCmd((yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1124:
-#line 2648 "parser.Y"
+  case 1137:
+#line 2645 "parser.Y"
     {fr->wcsAppendCmd((yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].str));;}
     break;
 
-  case 1125:
-#line 2649 "parser.Y"
+  case 1138:
+#line 2646 "parser.Y"
     {fr->wcsAppendTxtCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 1126:
-#line 2652 "parser.Y"
+  case 1139:
+#line 2649 "parser.Y"
     {fr->wcsReplaceCmd((yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
     break;
 
-  case 1127:
-#line 2653 "parser.Y"
+  case 1140:
+#line 2650 "parser.Y"
     {fr->wcsReplaceCmd((yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].str));;}
     break;
 
-  case 1128:
-#line 2654 "parser.Y"
+  case 1141:
+#line 2651 "parser.Y"
     {fr->wcsReplaceTxtCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].str));;}
     break;
 
-  case 1129:
-#line 2657 "parser.Y"
+  case 1142:
+#line 2654 "parser.Y"
     {fr->wcsAlignCmd((yyvsp[(1) - (1)].integer));;}
     break;
 
-  case 1130:
-#line 2659 "parser.Y"
+  case 1143:
+#line 2656 "parser.Y"
     {
 	    // used by backup
-	    fr->wcsAlignCmd((yyvsp[(1) - (3)].integer), (CoordSystem)(yyvsp[(2) - (3)].integer), (SkyFrame)(yyvsp[(3) - (3)].integer));
+	    fr->wcsAlignCmd((yyvsp[(1) - (3)].integer), (Coord::CoordSystem)(yyvsp[(2) - (3)].integer), (Coord::SkyFrame)(yyvsp[(3) - (3)].integer));
 	  ;}
     break;
 
-  case 1131:
-#line 2664 "parser.Y"
-    {fr->wcsAlignCmd((yyvsp[(1) - (3)].integer), (FitsImage*)(yyvsp[(2) - (3)].ptr), (CoordSystem)(yyvsp[(3) - (3)].integer));;}
+  case 1144:
+#line 2661 "parser.Y"
+    {fr->wcsAlignCmd((yyvsp[(1) - (3)].integer), (FitsImage*)(yyvsp[(2) - (3)].ptr), (Coord::CoordSystem)(yyvsp[(3) - (3)].integer));;}
     break;
 
-  case 1132:
-#line 2667 "parser.Y"
+  case 1145:
+#line 2664 "parser.Y"
     {
 #ifdef _WIN32
 	  fr->win32PrintCmd();
@@ -10144,67 +10184,67 @@ yyreduce:
 	;}
     break;
 
-  case 1133:
-#line 2674 "parser.Y"
+  case 1146:
+#line 2671 "parser.Y"
     {fr->zoomCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 1134:
-#line 2676 "parser.Y"
+  case 1147:
+#line 2673 "parser.Y"
     {fr->zoomAboutCmd(Vector((yyvsp[(1) - (5)].real),(yyvsp[(2) - (5)].real)),Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
     break;
 
-  case 1135:
-#line 2678 "parser.Y"
+  case 1148:
+#line 2675 "parser.Y"
     {
 	  // backward compatibility
 	  fr->zoomAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));
 	;}
     break;
 
-  case 1136:
-#line 2683 "parser.Y"
+  case 1149:
+#line 2680 "parser.Y"
     {fr->zoomAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(6) - (6)].vector)),
-	    (CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(4) - (6)].integer),(Coord::SkyFrame)(yyvsp[(5) - (6)].integer));;}
     break;
 
-  case 1138:
-#line 2688 "parser.Y"
+  case 1151:
+#line 2685 "parser.Y"
     {fr->zoomToFitCmd(1);;}
     break;
 
-  case 1139:
-#line 2689 "parser.Y"
+  case 1152:
+#line 2686 "parser.Y"
     {fr->zoomToFitCmd((yyvsp[(2) - (2)].real));;}
     break;
 
-  case 1140:
-#line 2690 "parser.Y"
+  case 1153:
+#line 2687 "parser.Y"
     {fr->zoomToCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
     break;
 
-  case 1141:
-#line 2692 "parser.Y"
+  case 1154:
+#line 2689 "parser.Y"
     {fr->zoomToAboutCmd(Vector((yyvsp[(1) - (5)].real),(yyvsp[(2) - (5)].real)),Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
     break;
 
-  case 1142:
-#line 2694 "parser.Y"
+  case 1155:
+#line 2691 "parser.Y"
     {
 	  // backward compatibility
 	  fr->zoomToAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));
 	;}
     break;
 
-  case 1143:
-#line 2699 "parser.Y"
+  case 1156:
+#line 2696 "parser.Y"
     {fr->zoomToAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)), Vector((yyvsp[(6) - (6)].vector)),
-	    (CoordSystem)(yyvsp[(4) - (6)].integer), (SkyFrame)(yyvsp[(5) - (6)].integer));;}
+	    (Coord::CoordSystem)(yyvsp[(4) - (6)].integer), (Coord::SkyFrame)(yyvsp[(5) - (6)].integer));;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 10208 "parser.C"
+#line 10248 "parser.C"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -10418,7 +10458,7 @@ yyreturn:
 }
 
 
-#line 2703 "parser.Y"
+#line 2700 "parser.Y"
 
 
 static void setProps(unsigned short* props, unsigned short prop, int value)
diff --git a/saotk/frame/parser.H b/saotk/frame/parser.H
index 8695ee8..1f88f21 100644
--- a/saotk/frame/parser.H
+++ b/saotk/frame/parser.H
@@ -79,288 +79,295 @@
      BIN_ = 295,
      BITPIX_ = 296,
      BLOCK_ = 297,
-     BOX_ = 298,
-     BOXANNULUS_ = 299,
-     BOXCAR_ = 300,
-     BOXCIRCLE_ = 301,
-     BPANDA_ = 302,
-     BUFFER_ = 303,
-     BW_ = 304,
-     CALLBACK_ = 305,
-     CANVAS_ = 306,
-     CATALOG_ = 307,
-     CELESTRIAL_ = 308,
-     CENTER_ = 309,
-     CENTROID_ = 310,
-     CHANNEL_ = 311,
-     CIRCLE_ = 312,
-     CIAO_ = 313,
-     CLEAR_ = 314,
-     CLIP_ = 315,
-     COLOR_ = 316,
-     COLORBAR_ = 317,
-     COLORMAP_ = 318,
-     COLORSCALE_ = 319,
-     COLORSPACE_ = 320,
-     COLS_ = 321,
-     COMMAND_ = 322,
-     COMPASS_ = 323,
-     COMPOSITE_ = 324,
-     COMPRESS_ = 325,
-     CONTOUR_ = 326,
-     CONTRAST_ = 327,
-     COORDINATES_ = 328,
-     COPY_ = 329,
-     COUNT_ = 330,
-     CPANDA_ = 331,
-     CREATE_ = 332,
-     CROP_ = 333,
-     CROSS_ = 334,
-     CROSSHAIR_ = 335,
-     CUBE_ = 336,
-     CURSOR_ = 337,
-     CUT_ = 338,
-     CMYK_ = 339,
-     DASH_ = 340,
-     DASHLIST_ = 341,
-     DATA_ = 342,
-     DATAMIN_ = 343,
-     DATASEC_ = 344,
-     DEBUG_ = 345,
-     DEGREES_ = 346,
-     DEFAULT_ = 347,
-     DELETE_ = 348,
-     DEPTH_ = 349,
-     DETECTOR_ = 350,
-     DIAMOND_ = 351,
-     DIM_ = 352,
-     DS9_ = 353,
-     EDIT_ = 354,
-     ECLIPTIC_ = 355,
-     ELLIPSE_ = 356,
-     ELLIPSEANNULUS_ = 357,
-     END_ = 358,
-     EPANDA_ = 359,
-     EQUATORIAL_ = 360,
-     ERASE_ = 361,
-     EXT_ = 362,
-     FACTOR_ = 363,
-     FALSE_ = 364,
-     FILE_ = 365,
-     FILTER_ = 366,
-     FIT_ = 367,
-     FITS_ = 368,
-     FITSY_ = 369,
-     FIXED_ = 370,
-     FK4_ = 371,
-     FK4_NO_E_ = 372,
-     FK5_ = 373,
-     FONT_ = 374,
-     FROM_ = 375,
-     FRONT_ = 376,
-     FULL_ = 377,
-     FUNCTION_ = 378,
-     GALACTIC_ = 379,
-     GAUSSIAN_ = 380,
-     GET_ = 381,
-     GLOBAL_ = 382,
-     GRAPHICS_ = 383,
-     GRAY_ = 384,
-     GRID_ = 385,
-     GZ_ = 386,
-     HANDLE_ = 387,
-     HAS_ = 388,
-     HEAD_ = 389,
-     HEADER_ = 390,
-     HEIGHT_ = 391,
-     HELIOECLIPTIC_ = 392,
-     HIDE_ = 393,
-     HIGH_ = 394,
-     HIGHLITE_ = 395,
-     HISTEQU_ = 396,
-     HISTOGRAM_ = 397,
-     HORIZONTAL_ = 398,
-     ICRS_ = 399,
-     ID_ = 400,
-     IIS_ = 401,
-     IMAGE_ = 402,
-     INCLUDE_ = 403,
-     INCR_ = 404,
-     INFO_ = 405,
-     INTEGER_ = 406,
-     ITERATION_ = 407,
-     IRAF_ = 408,
-     IRAFMIN_ = 409,
-     J2000_ = 410,
-     KEY_ = 411,
-     KEYWORD_ = 412,
-     LABEL_ = 413,
-     LENGTH_ = 414,
-     LEVEL_ = 415,
-     LITTLEENDIAN_ = 416,
-     LINE_ = 417,
-     LINEAR_ = 418,
-     LIST_ = 419,
-     LOAD_ = 420,
-     LOCAL_ = 421,
-     LOG_ = 422,
-     LOW_ = 423,
-     MACOSX_ = 424,
-     MAGNIFIER_ = 425,
-     MAP_ = 426,
-     MARK_ = 427,
-     MARKER_ = 428,
-     MASK_ = 429,
-     MESSAGE_ = 430,
-     METHOD_ = 431,
-     MINMAX_ = 432,
-     MIP_ = 433,
-     MMAP_ = 434,
-     MMAPINCR_ = 435,
-     MOSAIC_ = 436,
-     MODE_ = 437,
-     MOTION_ = 438,
-     MOVE_ = 439,
-     NAME_ = 440,
-     NAN_ = 441,
-     NAXES_ = 442,
-     NEW_ = 443,
-     NEXT_ = 444,
-     NO_ = 445,
-     NONE_ = 446,
-     NOW_ = 447,
-     NUMBER_ = 448,
-     OBJECT_ = 449,
-     OFF_ = 450,
-     ON_ = 451,
-     ONLY_ = 452,
-     OPTION_ = 453,
-     ORIENT_ = 454,
-     PAN_ = 455,
-     PANNER_ = 456,
-     PARSER_ = 457,
-     PASTE_ = 458,
-     PERF_ = 459,
-     PHYSICAL_ = 460,
-     PIXEL_ = 461,
-     POINT_ = 462,
-     POINTER_ = 463,
-     POLYGON_ = 464,
-     POSTSCRIPT_ = 465,
-     POW_ = 466,
-     PRINT_ = 467,
-     PRESERVE_ = 468,
-     PROJECTION_ = 469,
-     CIRCLE3D_ = 470,
-     PROPERTY_ = 471,
-     PUBLICATION_ = 472,
-     PROS_ = 473,
-     RADIUS_ = 474,
-     REGION_ = 475,
-     REPLACE_ = 476,
-     RESAMPLE_ = 477,
-     RESET_ = 478,
-     RESOLUTION_ = 479,
-     RGB_ = 480,
-     ROOT_ = 481,
-     ROTATE_ = 482,
-     RULER_ = 483,
-     SAMPLE_ = 484,
-     SAOIMAGE_ = 485,
-     SAOTNG_ = 486,
-     SAVE_ = 487,
-     SCALE_ = 488,
-     SCAN_ = 489,
-     SCIENTIFIC_ = 490,
-     SCOPE_ = 491,
-     SEGMENT_ = 492,
-     SELECT_ = 493,
-     SET_ = 494,
-     SEXAGESIMAL_ = 495,
-     SHARED_ = 496,
-     SHIFT_ = 497,
-     SHMID_ = 498,
-     SHOW_ = 499,
-     SINH_ = 500,
-     SIZE_ = 501,
-     SLICE_ = 502,
-     SMMAP_ = 503,
-     SMOOTH_ = 504,
-     SOCKET_ = 505,
-     SOCKETGZ_ = 506,
-     SOURCE_ = 507,
-     SQRT_ = 508,
-     SQUARED_ = 509,
-     SSHARED_ = 510,
-     STATUS_ = 511,
-     SUPERGALACTIC_ = 512,
-     SUM_ = 513,
-     SYSTEM_ = 514,
-     TABLE_ = 515,
-     TAG_ = 516,
-     TEMPLATE_ = 517,
-     TEXT_ = 518,
-     THREADS_ = 519,
-     THREED_ = 520,
-     THRESHOLD_ = 521,
-     THICK_ = 522,
-     TRANSPARENCY_ = 523,
-     TO_ = 524,
-     TOGGLE_ = 525,
-     TOPHAT_ = 526,
-     TRUE_ = 527,
-     TYPE_ = 528,
-     UNDO_ = 529,
-     UNHIGHLITE_ = 530,
-     UNLOAD_ = 531,
-     UNSELECT_ = 532,
-     UPDATE_ = 533,
-     USER_ = 534,
-     VALUE_ = 535,
-     VAR_ = 536,
-     VIEW_ = 537,
-     VECTOR_ = 538,
-     VERSION_ = 539,
-     VERTEX_ = 540,
-     VERTICAL_ = 541,
-     WARP_ = 542,
-     WCS_ = 543,
-     WCSA_ = 544,
-     WCSB_ = 545,
-     WCSC_ = 546,
-     WCSD_ = 547,
-     WCSE_ = 548,
-     WCSF_ = 549,
-     WCSG_ = 550,
-     WCSH_ = 551,
-     WCSI_ = 552,
-     WCSJ_ = 553,
-     WCSK_ = 554,
-     WCSL_ = 555,
-     WCSM_ = 556,
-     WCSN_ = 557,
-     WCSO_ = 558,
-     WCSP_ = 559,
-     WCSQ_ = 560,
-     WCSR_ = 561,
-     WCSS_ = 562,
-     WCST_ = 563,
-     WCSU_ = 564,
-     WCSV_ = 565,
-     WCSW_ = 566,
-     WCSX_ = 567,
-     WCSY_ = 568,
-     WCSZ_ = 569,
-     WCS0_ = 570,
-     WFPC2_ = 571,
-     WIDTH_ = 572,
-     WIN32_ = 573,
-     XML_ = 574,
-     XY_ = 575,
-     YES_ = 576,
-     ZMAX_ = 577,
-     ZSCALE_ = 578,
-     ZOOM_ = 579
+     BLT_ = 298,
+     BOX_ = 299,
+     BOXANNULUS_ = 300,
+     BOXCAR_ = 301,
+     BOXCIRCLE_ = 302,
+     BPANDA_ = 303,
+     BUFFER_ = 304,
+     BW_ = 305,
+     CALLBACK_ = 306,
+     CANVAS_ = 307,
+     CATALOG_ = 308,
+     CELESTRIAL_ = 309,
+     CENTER_ = 310,
+     CENTROID_ = 311,
+     CHANNEL_ = 312,
+     CIRCLE_ = 313,
+     CIAO_ = 314,
+     CLEAR_ = 315,
+     CLIP_ = 316,
+     COLOR_ = 317,
+     COLORBAR_ = 318,
+     COLORMAP_ = 319,
+     COLORSCALE_ = 320,
+     COLORSPACE_ = 321,
+     COLS_ = 322,
+     COLUMN_ = 323,
+     COMMAND_ = 324,
+     COMPASS_ = 325,
+     COMPOSITE_ = 326,
+     COMPRESS_ = 327,
+     CONTOUR_ = 328,
+     CONTRAST_ = 329,
+     COORDINATES_ = 330,
+     COPY_ = 331,
+     COUNT_ = 332,
+     CPANDA_ = 333,
+     CREATE_ = 334,
+     CROP_ = 335,
+     CROSS_ = 336,
+     CROSSHAIR_ = 337,
+     CUBE_ = 338,
+     CURSOR_ = 339,
+     CUT_ = 340,
+     CMYK_ = 341,
+     DASH_ = 342,
+     DASHLIST_ = 343,
+     DATA_ = 344,
+     DATAMIN_ = 345,
+     DATASEC_ = 346,
+     DEBUG_ = 347,
+     DEGREES_ = 348,
+     DEFAULT_ = 349,
+     DELETE_ = 350,
+     DEPTH_ = 351,
+     DETECTOR_ = 352,
+     DIAMOND_ = 353,
+     DIM_ = 354,
+     DS9_ = 355,
+     EDIT_ = 356,
+     ECLIPTIC_ = 357,
+     ELLIPSE_ = 358,
+     ELLIPSEANNULUS_ = 359,
+     END_ = 360,
+     EPANDA_ = 361,
+     EQUATORIAL_ = 362,
+     ERASE_ = 363,
+     EXT_ = 364,
+     FACTOR_ = 365,
+     FALSE_ = 366,
+     FILE_ = 367,
+     FILTER_ = 368,
+     FIT_ = 369,
+     FITS_ = 370,
+     FITSY_ = 371,
+     FIXED_ = 372,
+     FK4_ = 373,
+     FK4_NO_E_ = 374,
+     FK5_ = 375,
+     FONT_ = 376,
+     FROM_ = 377,
+     FRONT_ = 378,
+     FULL_ = 379,
+     FUNCTION_ = 380,
+     GALACTIC_ = 381,
+     GAUSSIAN_ = 382,
+     GET_ = 383,
+     GLOBAL_ = 384,
+     GRAPHICS_ = 385,
+     GRAY_ = 386,
+     GRID_ = 387,
+     GZ_ = 388,
+     HANDLE_ = 389,
+     HAS_ = 390,
+     HEAD_ = 391,
+     HEADER_ = 392,
+     HEIGHT_ = 393,
+     HELIOECLIPTIC_ = 394,
+     HIDE_ = 395,
+     HIGH_ = 396,
+     HIGHLITE_ = 397,
+     HISTEQU_ = 398,
+     HISTOGRAM_ = 399,
+     HORIZONTAL_ = 400,
+     ICRS_ = 401,
+     ID_ = 402,
+     IIS_ = 403,
+     IMAGE_ = 404,
+     INCLUDE_ = 405,
+     INCR_ = 406,
+     INFO_ = 407,
+     INTEGER_ = 408,
+     ITERATION_ = 409,
+     IRAF_ = 410,
+     IRAFMIN_ = 411,
+     J2000_ = 412,
+     KEY_ = 413,
+     KEYWORD_ = 414,
+     LABEL_ = 415,
+     LENGTH_ = 416,
+     LEVEL_ = 417,
+     LITTLEENDIAN_ = 418,
+     LINE_ = 419,
+     LINEAR_ = 420,
+     LIST_ = 421,
+     LOAD_ = 422,
+     LOCAL_ = 423,
+     LOG_ = 424,
+     LOW_ = 425,
+     MACOSX_ = 426,
+     MAGNIFIER_ = 427,
+     MAP_ = 428,
+     MARK_ = 429,
+     MARKER_ = 430,
+     MASK_ = 431,
+     MESSAGE_ = 432,
+     METHOD_ = 433,
+     MINMAX_ = 434,
+     MIP_ = 435,
+     MMAP_ = 436,
+     MMAPINCR_ = 437,
+     MOSAIC_ = 438,
+     MODE_ = 439,
+     MOTION_ = 440,
+     MOVE_ = 441,
+     NAME_ = 442,
+     NAN_ = 443,
+     NAXES_ = 444,
+     NEW_ = 445,
+     NEXT_ = 446,
+     NO_ = 447,
+     NONE_ = 448,
+     NOW_ = 449,
+     NUMBER_ = 450,
+     OBJECT_ = 451,
+     OFF_ = 452,
+     ON_ = 453,
+     ONLY_ = 454,
+     OPTION_ = 455,
+     ORIENT_ = 456,
+     PAN_ = 457,
+     PANNER_ = 458,
+     PARAM_ = 459,
+     PARSER_ = 460,
+     PASTE_ = 461,
+     PERF_ = 462,
+     PHOTO_ = 463,
+     PHYSICAL_ = 464,
+     PIXEL_ = 465,
+     PLOT2D_ = 466,
+     PLOT3D_ = 467,
+     POINT_ = 468,
+     POINTER_ = 469,
+     POLYGON_ = 470,
+     POSTSCRIPT_ = 471,
+     POW_ = 472,
+     PRINT_ = 473,
+     PRESERVE_ = 474,
+     PROJECTION_ = 475,
+     PROPERTY_ = 476,
+     PUBLICATION_ = 477,
+     PROS_ = 478,
+     RADIUS_ = 479,
+     REGION_ = 480,
+     REPLACE_ = 481,
+     RESAMPLE_ = 482,
+     RESET_ = 483,
+     RESOLUTION_ = 484,
+     RGB_ = 485,
+     ROOT_ = 486,
+     ROTATE_ = 487,
+     RULER_ = 488,
+     SAMPLE_ = 489,
+     SAOIMAGE_ = 490,
+     SAOTNG_ = 491,
+     SAVE_ = 492,
+     SCALE_ = 493,
+     SCAN_ = 494,
+     SCIENTIFIC_ = 495,
+     SCOPE_ = 496,
+     SEGMENT_ = 497,
+     SELECT_ = 498,
+     SET_ = 499,
+     SEXAGESIMAL_ = 500,
+     SHAPE_ = 501,
+     SHARED_ = 502,
+     SHIFT_ = 503,
+     SHMID_ = 504,
+     SHOW_ = 505,
+     SINH_ = 506,
+     SIZE_ = 507,
+     SLICE_ = 508,
+     SMMAP_ = 509,
+     SMOOTH_ = 510,
+     SOCKET_ = 511,
+     SOCKETGZ_ = 512,
+     SOURCE_ = 513,
+     SQRT_ = 514,
+     SQUARED_ = 515,
+     SSHARED_ = 516,
+     STATS_ = 517,
+     STATUS_ = 518,
+     SUPERGALACTIC_ = 519,
+     SUM_ = 520,
+     SYSTEM_ = 521,
+     TABLE_ = 522,
+     TAG_ = 523,
+     TEMPLATE_ = 524,
+     TEXT_ = 525,
+     THREADS_ = 526,
+     THREED_ = 527,
+     THRESHOLD_ = 528,
+     THICK_ = 529,
+     TRANSPARENCY_ = 530,
+     TO_ = 531,
+     TOGGLE_ = 532,
+     TOPHAT_ = 533,
+     TRUE_ = 534,
+     TYPE_ = 535,
+     UNDO_ = 536,
+     UNHIGHLITE_ = 537,
+     UNLOAD_ = 538,
+     UNSELECT_ = 539,
+     UPDATE_ = 540,
+     USER_ = 541,
+     VALUE_ = 542,
+     VAR_ = 543,
+     VIEW_ = 544,
+     VECTOR_ = 545,
+     VERSION_ = 546,
+     VERTEX_ = 547,
+     VERTICAL_ = 548,
+     WARP_ = 549,
+     WCS_ = 550,
+     WCSA_ = 551,
+     WCSB_ = 552,
+     WCSC_ = 553,
+     WCSD_ = 554,
+     WCSE_ = 555,
+     WCSF_ = 556,
+     WCSG_ = 557,
+     WCSH_ = 558,
+     WCSI_ = 559,
+     WCSJ_ = 560,
+     WCSK_ = 561,
+     WCSL_ = 562,
+     WCSM_ = 563,
+     WCSN_ = 564,
+     WCSO_ = 565,
+     WCSP_ = 566,
+     WCSQ_ = 567,
+     WCSR_ = 568,
+     WCSS_ = 569,
+     WCST_ = 570,
+     WCSU_ = 571,
+     WCSV_ = 572,
+     WCSW_ = 573,
+     WCSX_ = 574,
+     WCSY_ = 575,
+     WCSZ_ = 576,
+     WCS0_ = 577,
+     WFPC2_ = 578,
+     WIDTH_ = 579,
+     WIN32_ = 580,
+     XML_ = 581,
+     XY_ = 582,
+     YES_ = 583,
+     ZMAX_ = 584,
+     ZSCALE_ = 585,
+     ZOOM_ = 586
    };
 #endif
 /* Tokens.  */
@@ -404,288 +411,295 @@
 #define BIN_ 295
 #define BITPIX_ 296
 #define BLOCK_ 297
-#define BOX_ 298
-#define BOXANNULUS_ 299
-#define BOXCAR_ 300
-#define BOXCIRCLE_ 301
-#define BPANDA_ 302
-#define BUFFER_ 303
-#define BW_ 304
-#define CALLBACK_ 305
-#define CANVAS_ 306
-#define CATALOG_ 307
-#define CELESTRIAL_ 308
-#define CENTER_ 309
-#define CENTROID_ 310
-#define CHANNEL_ 311
-#define CIRCLE_ 312
-#define CIAO_ 313
-#define CLEAR_ 314
-#define CLIP_ 315
-#define COLOR_ 316
-#define COLORBAR_ 317
-#define COLORMAP_ 318
-#define COLORSCALE_ 319
-#define COLORSPACE_ 320
-#define COLS_ 321
-#define COMMAND_ 322
-#define COMPASS_ 323
-#define COMPOSITE_ 324
-#define COMPRESS_ 325
-#define CONTOUR_ 326
-#define CONTRAST_ 327
-#define COORDINATES_ 328
-#define COPY_ 329
-#define COUNT_ 330
-#define CPANDA_ 331
-#define CREATE_ 332
-#define CROP_ 333
-#define CROSS_ 334
-#define CROSSHAIR_ 335
-#define CUBE_ 336
-#define CURSOR_ 337
-#define CUT_ 338
-#define CMYK_ 339
-#define DASH_ 340
-#define DASHLIST_ 341
-#define DATA_ 342
-#define DATAMIN_ 343
-#define DATASEC_ 344
-#define DEBUG_ 345
-#define DEGREES_ 346
-#define DEFAULT_ 347
-#define DELETE_ 348
-#define DEPTH_ 349
-#define DETECTOR_ 350
-#define DIAMOND_ 351
-#define DIM_ 352
-#define DS9_ 353
-#define EDIT_ 354
-#define ECLIPTIC_ 355
-#define ELLIPSE_ 356
-#define ELLIPSEANNULUS_ 357
-#define END_ 358
-#define EPANDA_ 359
-#define EQUATORIAL_ 360
-#define ERASE_ 361
-#define EXT_ 362
-#define FACTOR_ 363
-#define FALSE_ 364
-#define FILE_ 365
-#define FILTER_ 366
-#define FIT_ 367
-#define FITS_ 368
-#define FITSY_ 369
-#define FIXED_ 370
-#define FK4_ 371
-#define FK4_NO_E_ 372
-#define FK5_ 373
-#define FONT_ 374
-#define FROM_ 375
-#define FRONT_ 376
-#define FULL_ 377
-#define FUNCTION_ 378
-#define GALACTIC_ 379
-#define GAUSSIAN_ 380
-#define GET_ 381
-#define GLOBAL_ 382
-#define GRAPHICS_ 383
-#define GRAY_ 384
-#define GRID_ 385
-#define GZ_ 386
-#define HANDLE_ 387
-#define HAS_ 388
-#define HEAD_ 389
-#define HEADER_ 390
-#define HEIGHT_ 391
-#define HELIOECLIPTIC_ 392
-#define HIDE_ 393
-#define HIGH_ 394
-#define HIGHLITE_ 395
-#define HISTEQU_ 396
-#define HISTOGRAM_ 397
-#define HORIZONTAL_ 398
-#define ICRS_ 399
-#define ID_ 400
-#define IIS_ 401
-#define IMAGE_ 402
-#define INCLUDE_ 403
-#define INCR_ 404
-#define INFO_ 405
-#define INTEGER_ 406
-#define ITERATION_ 407
-#define IRAF_ 408
-#define IRAFMIN_ 409
-#define J2000_ 410
-#define KEY_ 411
-#define KEYWORD_ 412
-#define LABEL_ 413
-#define LENGTH_ 414
-#define LEVEL_ 415
-#define LITTLEENDIAN_ 416
-#define LINE_ 417
-#define LINEAR_ 418
-#define LIST_ 419
-#define LOAD_ 420
-#define LOCAL_ 421
-#define LOG_ 422
-#define LOW_ 423
-#define MACOSX_ 424
-#define MAGNIFIER_ 425
-#define MAP_ 426
-#define MARK_ 427
-#define MARKER_ 428
-#define MASK_ 429
-#define MESSAGE_ 430
-#define METHOD_ 431
-#define MINMAX_ 432
-#define MIP_ 433
-#define MMAP_ 434
-#define MMAPINCR_ 435
-#define MOSAIC_ 436
-#define MODE_ 437
-#define MOTION_ 438
-#define MOVE_ 439
-#define NAME_ 440
-#define NAN_ 441
-#define NAXES_ 442
-#define NEW_ 443
-#define NEXT_ 444
-#define NO_ 445
-#define NONE_ 446
-#define NOW_ 447
-#define NUMBER_ 448
-#define OBJECT_ 449
-#define OFF_ 450
-#define ON_ 451
-#define ONLY_ 452
-#define OPTION_ 453
-#define ORIENT_ 454
-#define PAN_ 455
-#define PANNER_ 456
-#define PARSER_ 457
-#define PASTE_ 458
-#define PERF_ 459
-#define PHYSICAL_ 460
-#define PIXEL_ 461
-#define POINT_ 462
-#define POINTER_ 463
-#define POLYGON_ 464
-#define POSTSCRIPT_ 465
-#define POW_ 466
-#define PRINT_ 467
-#define PRESERVE_ 468
-#define PROJECTION_ 469
-#define CIRCLE3D_ 470
-#define PROPERTY_ 471
-#define PUBLICATION_ 472
-#define PROS_ 473
-#define RADIUS_ 474
-#define REGION_ 475
-#define REPLACE_ 476
-#define RESAMPLE_ 477
-#define RESET_ 478
-#define RESOLUTION_ 479
-#define RGB_ 480
-#define ROOT_ 481
-#define ROTATE_ 482
-#define RULER_ 483
-#define SAMPLE_ 484
-#define SAOIMAGE_ 485
-#define SAOTNG_ 486
-#define SAVE_ 487
-#define SCALE_ 488
-#define SCAN_ 489
-#define SCIENTIFIC_ 490
-#define SCOPE_ 491
-#define SEGMENT_ 492
-#define SELECT_ 493
-#define SET_ 494
-#define SEXAGESIMAL_ 495
-#define SHARED_ 496
-#define SHIFT_ 497
-#define SHMID_ 498
-#define SHOW_ 499
-#define SINH_ 500
-#define SIZE_ 501
-#define SLICE_ 502
-#define SMMAP_ 503
-#define SMOOTH_ 504
-#define SOCKET_ 505
-#define SOCKETGZ_ 506
-#define SOURCE_ 507
-#define SQRT_ 508
-#define SQUARED_ 509
-#define SSHARED_ 510
-#define STATUS_ 511
-#define SUPERGALACTIC_ 512
-#define SUM_ 513
-#define SYSTEM_ 514
-#define TABLE_ 515
-#define TAG_ 516
-#define TEMPLATE_ 517
-#define TEXT_ 518
-#define THREADS_ 519
-#define THREED_ 520
-#define THRESHOLD_ 521
-#define THICK_ 522
-#define TRANSPARENCY_ 523
-#define TO_ 524
-#define TOGGLE_ 525
-#define TOPHAT_ 526
-#define TRUE_ 527
-#define TYPE_ 528
-#define UNDO_ 529
-#define UNHIGHLITE_ 530
-#define UNLOAD_ 531
-#define UNSELECT_ 532
-#define UPDATE_ 533
-#define USER_ 534
-#define VALUE_ 535
-#define VAR_ 536
-#define VIEW_ 537
-#define VECTOR_ 538
-#define VERSION_ 539
-#define VERTEX_ 540
-#define VERTICAL_ 541
-#define WARP_ 542
-#define WCS_ 543
-#define WCSA_ 544
-#define WCSB_ 545
-#define WCSC_ 546
-#define WCSD_ 547
-#define WCSE_ 548
-#define WCSF_ 549
-#define WCSG_ 550
-#define WCSH_ 551
-#define WCSI_ 552
-#define WCSJ_ 553
-#define WCSK_ 554
-#define WCSL_ 555
-#define WCSM_ 556
-#define WCSN_ 557
-#define WCSO_ 558
-#define WCSP_ 559
-#define WCSQ_ 560
-#define WCSR_ 561
-#define WCSS_ 562
-#define WCST_ 563
-#define WCSU_ 564
-#define WCSV_ 565
-#define WCSW_ 566
-#define WCSX_ 567
-#define WCSY_ 568
-#define WCSZ_ 569
-#define WCS0_ 570
-#define WFPC2_ 571
-#define WIDTH_ 572
-#define WIN32_ 573
-#define XML_ 574
-#define XY_ 575
-#define YES_ 576
-#define ZMAX_ 577
-#define ZSCALE_ 578
-#define ZOOM_ 579
+#define BLT_ 298
+#define BOX_ 299
+#define BOXANNULUS_ 300
+#define BOXCAR_ 301
+#define BOXCIRCLE_ 302
+#define BPANDA_ 303
+#define BUFFER_ 304
+#define BW_ 305
+#define CALLBACK_ 306
+#define CANVAS_ 307
+#define CATALOG_ 308
+#define CELESTRIAL_ 309
+#define CENTER_ 310
+#define CENTROID_ 311
+#define CHANNEL_ 312
+#define CIRCLE_ 313
+#define CIAO_ 314
+#define CLEAR_ 315
+#define CLIP_ 316
+#define COLOR_ 317
+#define COLORBAR_ 318
+#define COLORMAP_ 319
+#define COLORSCALE_ 320
+#define COLORSPACE_ 321
+#define COLS_ 322
+#define COLUMN_ 323
+#define COMMAND_ 324
+#define COMPASS_ 325
+#define COMPOSITE_ 326
+#define COMPRESS_ 327
+#define CONTOUR_ 328
+#define CONTRAST_ 329
+#define COORDINATES_ 330
+#define COPY_ 331
+#define COUNT_ 332
+#define CPANDA_ 333
+#define CREATE_ 334
+#define CROP_ 335
+#define CROSS_ 336
+#define CROSSHAIR_ 337
+#define CUBE_ 338
+#define CURSOR_ 339
+#define CUT_ 340
+#define CMYK_ 341
+#define DASH_ 342
+#define DASHLIST_ 343
+#define DATA_ 344
+#define DATAMIN_ 345
+#define DATASEC_ 346
+#define DEBUG_ 347
+#define DEGREES_ 348
+#define DEFAULT_ 349
+#define DELETE_ 350
+#define DEPTH_ 351
+#define DETECTOR_ 352
+#define DIAMOND_ 353
+#define DIM_ 354
+#define DS9_ 355
+#define EDIT_ 356
+#define ECLIPTIC_ 357
+#define ELLIPSE_ 358
+#define ELLIPSEANNULUS_ 359
+#define END_ 360
+#define EPANDA_ 361
+#define EQUATORIAL_ 362
+#define ERASE_ 363
+#define EXT_ 364
+#define FACTOR_ 365
+#define FALSE_ 366
+#define FILE_ 367
+#define FILTER_ 368
+#define FIT_ 369
+#define FITS_ 370
+#define FITSY_ 371
+#define FIXED_ 372
+#define FK4_ 373
+#define FK4_NO_E_ 374
+#define FK5_ 375
+#define FONT_ 376
+#define FROM_ 377
+#define FRONT_ 378
+#define FULL_ 379
+#define FUNCTION_ 380
+#define GALACTIC_ 381
+#define GAUSSIAN_ 382
+#define GET_ 383
+#define GLOBAL_ 384
+#define GRAPHICS_ 385
+#define GRAY_ 386
+#define GRID_ 387
+#define GZ_ 388
+#define HANDLE_ 389
+#define HAS_ 390
+#define HEAD_ 391
+#define HEADER_ 392
+#define HEIGHT_ 393
+#define HELIOECLIPTIC_ 394
+#define HIDE_ 395
+#define HIGH_ 396
+#define HIGHLITE_ 397
+#define HISTEQU_ 398
+#define HISTOGRAM_ 399
+#define HORIZONTAL_ 400
+#define ICRS_ 401
+#define ID_ 402
+#define IIS_ 403
+#define IMAGE_ 404
+#define INCLUDE_ 405
+#define INCR_ 406
+#define INFO_ 407
+#define INTEGER_ 408
+#define ITERATION_ 409
+#define IRAF_ 410
+#define IRAFMIN_ 411
+#define J2000_ 412
+#define KEY_ 413
+#define KEYWORD_ 414
+#define LABEL_ 415
+#define LENGTH_ 416
+#define LEVEL_ 417
+#define LITTLEENDIAN_ 418
+#define LINE_ 419
+#define LINEAR_ 420
+#define LIST_ 421
+#define LOAD_ 422
+#define LOCAL_ 423
+#define LOG_ 424
+#define LOW_ 425
+#define MACOSX_ 426
+#define MAGNIFIER_ 427
+#define MAP_ 428
+#define MARK_ 429
+#define MARKER_ 430
+#define MASK_ 431
+#define MESSAGE_ 432
+#define METHOD_ 433
+#define MINMAX_ 434
+#define MIP_ 435
+#define MMAP_ 436
+#define MMAPINCR_ 437
+#define MOSAIC_ 438
+#define MODE_ 439
+#define MOTION_ 440
+#define MOVE_ 441
+#define NAME_ 442
+#define NAN_ 443
+#define NAXES_ 444
+#define NEW_ 445
+#define NEXT_ 446
+#define NO_ 447
+#define NONE_ 448
+#define NOW_ 449
+#define NUMBER_ 450
+#define OBJECT_ 451
+#define OFF_ 452
+#define ON_ 453
+#define ONLY_ 454
+#define OPTION_ 455
+#define ORIENT_ 456
+#define PAN_ 457
+#define PANNER_ 458
+#define PARAM_ 459
+#define PARSER_ 460
+#define PASTE_ 461
+#define PERF_ 462
+#define PHOTO_ 463
+#define PHYSICAL_ 464
+#define PIXEL_ 465
+#define PLOT2D_ 466
+#define PLOT3D_ 467
+#define POINT_ 468
+#define POINTER_ 469
+#define POLYGON_ 470
+#define POSTSCRIPT_ 471
+#define POW_ 472
+#define PRINT_ 473
+#define PRESERVE_ 474
+#define PROJECTION_ 475
+#define PROPERTY_ 476
+#define PUBLICATION_ 477
+#define PROS_ 478
+#define RADIUS_ 479
+#define REGION_ 480
+#define REPLACE_ 481
+#define RESAMPLE_ 482
+#define RESET_ 483
+#define RESOLUTION_ 484
+#define RGB_ 485
+#define ROOT_ 486
+#define ROTATE_ 487
+#define RULER_ 488
+#define SAMPLE_ 489
+#define SAOIMAGE_ 490
+#define SAOTNG_ 491
+#define SAVE_ 492
+#define SCALE_ 493
+#define SCAN_ 494
+#define SCIENTIFIC_ 495
+#define SCOPE_ 496
+#define SEGMENT_ 497
+#define SELECT_ 498
+#define SET_ 499
+#define SEXAGESIMAL_ 500
+#define SHAPE_ 501
+#define SHARED_ 502
+#define SHIFT_ 503
+#define SHMID_ 504
+#define SHOW_ 505
+#define SINH_ 506
+#define SIZE_ 507
+#define SLICE_ 508
+#define SMMAP_ 509
+#define SMOOTH_ 510
+#define SOCKET_ 511
+#define SOCKETGZ_ 512
+#define SOURCE_ 513
+#define SQRT_ 514
+#define SQUARED_ 515
+#define SSHARED_ 516
+#define STATS_ 517
+#define STATUS_ 518
+#define SUPERGALACTIC_ 519
+#define SUM_ 520
+#define SYSTEM_ 521
+#define TABLE_ 522
+#define TAG_ 523
+#define TEMPLATE_ 524
+#define TEXT_ 525
+#define THREADS_ 526
+#define THREED_ 527
+#define THRESHOLD_ 528
+#define THICK_ 529
+#define TRANSPARENCY_ 530
+#define TO_ 531
+#define TOGGLE_ 532
+#define TOPHAT_ 533
+#define TRUE_ 534
+#define TYPE_ 535
+#define UNDO_ 536
+#define UNHIGHLITE_ 537
+#define UNLOAD_ 538
+#define UNSELECT_ 539
+#define UPDATE_ 540
+#define USER_ 541
+#define VALUE_ 542
+#define VAR_ 543
+#define VIEW_ 544
+#define VECTOR_ 545
+#define VERSION_ 546
+#define VERTEX_ 547
+#define VERTICAL_ 548
+#define WARP_ 549
+#define WCS_ 550
+#define WCSA_ 551
+#define WCSB_ 552
+#define WCSC_ 553
+#define WCSD_ 554
+#define WCSE_ 555
+#define WCSF_ 556
+#define WCSG_ 557
+#define WCSH_ 558
+#define WCSI_ 559
+#define WCSJ_ 560
+#define WCSK_ 561
+#define WCSL_ 562
+#define WCSM_ 563
+#define WCSN_ 564
+#define WCSO_ 565
+#define WCSP_ 566
+#define WCSQ_ 567
+#define WCSR_ 568
+#define WCSS_ 569
+#define WCST_ 570
+#define WCSU_ 571
+#define WCSV_ 572
+#define WCSW_ 573
+#define WCSX_ 574
+#define WCSY_ 575
+#define WCSZ_ 576
+#define WCS0_ 577
+#define WFPC2_ 578
+#define WIDTH_ 579
+#define WIN32_ 580
+#define XML_ 581
+#define XY_ 582
+#define YES_ 583
+#define ZMAX_ 584
+#define ZSCALE_ 585
+#define ZOOM_ 586
 
 
 
@@ -704,7 +718,7 @@ typedef union YYSTYPE
   int dash[2];
 }
 /* Line 1529 of yacc.c.  */
-#line 708 "parser.H"
+#line 722 "parser.H"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
diff --git a/saotk/frame/parser.Y b/saotk/frame/parser.Y
index 737dfd8..2d9fb7f 100644
--- a/saotk/frame/parser.Y
+++ b/saotk/frame/parser.Y
@@ -26,8 +26,8 @@
 extern int frlex(void*, frFlexLexer*);
 extern void frerror(Base*, frFlexLexer*, const char*);
 
-static CoordSystem currentCoord = IMAGE;
-static SkyFrame currentSky = FK5;
+static Coord::CoordSystem currentCoord = Coord::IMAGE;
+static Coord::SkyFrame currentSky = Coord::FK5;
 
 static unsigned short defaultProps = Marker::SELECT | Marker::HIGHLITE |
 		Marker::EDIT | Marker::MOVE | Marker::ROTATE | 
@@ -92,9 +92,12 @@ static void setProps(unsigned short* props, unsigned short prop, int value);
 %type <integer> compressType
 %type <integer> fileNameType
 %type <integer> smoothFunction
+%type <integer> pointShape
 %type <integer> pointSize
 %type <integer> endian
 %type <integer> renderMethod
+%type <integer> analysisMethod
+%type <integer> analysisParam
 
 %token <real> REAL
 %token <integer> INT
@@ -139,6 +142,7 @@ static void setProps(unsigned short* props, unsigned short prop, int value);
 %token BIN_
 %token BITPIX_
 %token BLOCK_
+%token BLT_
 %token BOX_
 %token BOXANNULUS_
 %token BOXCAR_
@@ -163,6 +167,7 @@ static void setProps(unsigned short* props, unsigned short prop, int value);
 %token COLORSCALE_
 %token COLORSPACE_
 %token COLS_
+%token COLUMN_
 %token COMMAND_
 %token COMPASS_
 %token COMPOSITE_
@@ -298,11 +303,15 @@ static void setProps(unsigned short* props, unsigned short prop, int value);
 %token ORIENT_
 %token PAN_
 %token PANNER_
+%token PARAM_
 %token PARSER_
 %token PASTE_
 %token PERF_
+%token PHOTO_
 %token PHYSICAL_
 %token PIXEL_
+%token PLOT2D_
+%token PLOT3D_
 %token POINT_
 %token POINTER_
 %token POLYGON_
@@ -311,7 +320,6 @@ static void setProps(unsigned short* props, unsigned short prop, int value);
 %token PRINT_
 %token PRESERVE_
 %token PROJECTION_
-%token CIRCLE3D_
 %token PROPERTY_
 %token PUBLICATION_
 %token PROS_
@@ -337,6 +345,7 @@ static void setProps(unsigned short* props, unsigned short prop, int value);
 %token SELECT_
 %token SET_
 %token SEXAGESIMAL_
+%token SHAPE_
 %token SHARED_
 %token SHIFT_
 %token SHMID_
@@ -352,6 +361,7 @@ static void setProps(unsigned short* props, unsigned short prop, int value);
 %token SQRT_
 %token SQUARED_
 %token SSHARED_
+%token STATS_
 %token STATUS_
 %token SUPERGALACTIC_
 %token SUM_
@@ -501,11 +511,11 @@ yesno	: INT {$$=($1 ? 1 : 0);}
 	| FALSE_ {$$=0;}
 	;
 
-precision : /* empty */ {$$ = DEFAULT;}
-	| DEFAULT_ {$$ = DEFAULT;}
-	| FIXED_ {$$ = FIXED;}
-	| SCIENTIFIC_ {$$ = SCIENTIFIC;}
-	| INTEGER_ {$$ = INTEGER;}
+precision : /* empty */ {$$ = Base::DEFAULT;}
+	| DEFAULT_ {$$ = Base::DEFAULT;}
+	| FIXED_ {$$ = Base::FIXED;}
+	| SCIENTIFIC_ {$$ = Base::SCIENTIFIC;}
+	| INTEGER_ {$$ = Base::INTEGER;}
 	;
 
 fileNameType : /* empty */ {$$ = Base::ROOTBASE;}
@@ -538,7 +548,7 @@ dms	: DMSSTR {$$ = parseDMSStr($1);}
 coord	: sexagesimal sexagesimal
 	{
 	  Vector r;
-	  if (currentSky == GALACTIC || currentSky == ECLIPTIC) 
+	  if (currentSky == Coord::GALACTIC || currentSky == Coord::ECLIPTIC) 
 	    r = Vector($1,$2);
 	  else
 	    r = Vector($1*360./24.,$2);
@@ -569,45 +579,45 @@ coord	: sexagesimal sexagesimal
 	}
 	;
 
-coordSystem :IMAGE_ {$$ = currentCoord = IMAGE;}
-	| PHYSICAL_ {$$ = currentCoord = PHYSICAL;}
-	| DETECTOR_ {$$ = currentCoord = DETECTOR;}
-	| AMPLIFIER_ {$$ = currentCoord = AMPLIFIER;}
-	| wcsSystem {$$ = (CoordSystem)$1;}
-	;
-
-wcsSystem : WCS_ {$$ = currentCoord = WCS;}
-	| WCSA_ {$$ = currentCoord = WCSA;}
-	| WCSB_ {$$ = currentCoord = WCSB;}
-	| WCSC_ {$$ = currentCoord = WCSC;}
-	| WCSD_ {$$ = currentCoord = WCSD;}
-	| WCSE_ {$$ = currentCoord = WCSE;}
-	| WCSF_ {$$ = currentCoord = WCSF;}
-	| WCSG_ {$$ = currentCoord = WCSG;}
-	| WCSH_ {$$ = currentCoord = WCSH;}
-	| WCSI_ {$$ = currentCoord = WCSI;}
-	| WCSJ_ {$$ = currentCoord = WCSJ;}
-	| WCSK_ {$$ = currentCoord = WCSK;}
-	| WCSL_ {$$ = currentCoord = WCSL;}
-	| WCSM_ {$$ = currentCoord = WCSM;}
-	| WCSN_ {$$ = currentCoord = WCSN;}
-	| WCSO_ {$$ = currentCoord = WCSO;}
-	| WCSP_ {$$ = currentCoord = WCSP;}
-	| WCSQ_ {$$ = currentCoord = WCSQ;}
-	| WCSR_ {$$ = currentCoord = WCSR;}
-	| WCSS_ {$$ = currentCoord = WCSS;}
-	| WCST_ {$$ = currentCoord = WCST;}
-	| WCSU_ {$$ = currentCoord = WCSU;}
-	| WCSV_ {$$ = currentCoord = WCSV;}
-	| WCSW_ {$$ = currentCoord = WCSW;}
-	| WCSX_ {$$ = currentCoord = WCSX;}
-	| WCSY_ {$$ = currentCoord = WCSY;}
-	| WCSZ_ {$$ = currentCoord = WCSZ;}
-	| WCS0_ {$$ = currentCoord = WCS0;}
-	;
-
-internalSystem : CANVAS_ {$$ = CANVAS;}
-	| PANNER_ {$$ = PANNER;}
+coordSystem :IMAGE_ {$$ = currentCoord = Coord::IMAGE;}
+	| PHYSICAL_ {$$ = currentCoord = Coord::PHYSICAL;}
+	| DETECTOR_ {$$ = currentCoord = Coord::DETECTOR;}
+	| AMPLIFIER_ {$$ = currentCoord = Coord::AMPLIFIER;}
+	| wcsSystem {$$ = (Coord::CoordSystem)$1;}
+	;
+
+wcsSystem : WCS_ {$$ = currentCoord = Coord::WCS;}
+	| WCSA_ {$$ = currentCoord = Coord::WCSA;}
+	| WCSB_ {$$ = currentCoord = Coord::WCSB;}
+	| WCSC_ {$$ = currentCoord = Coord::WCSC;}
+	| WCSD_ {$$ = currentCoord = Coord::WCSD;}
+	| WCSE_ {$$ = currentCoord = Coord::WCSE;}
+	| WCSF_ {$$ = currentCoord = Coord::WCSF;}
+	| WCSG_ {$$ = currentCoord = Coord::WCSG;}
+	| WCSH_ {$$ = currentCoord = Coord::WCSH;}
+	| WCSI_ {$$ = currentCoord = Coord::WCSI;}
+	| WCSJ_ {$$ = currentCoord = Coord::WCSJ;}
+	| WCSK_ {$$ = currentCoord = Coord::WCSK;}
+	| WCSL_ {$$ = currentCoord = Coord::WCSL;}
+	| WCSM_ {$$ = currentCoord = Coord::WCSM;}
+	| WCSN_ {$$ = currentCoord = Coord::WCSN;}
+	| WCSO_ {$$ = currentCoord = Coord::WCSO;}
+	| WCSP_ {$$ = currentCoord = Coord::WCSP;}
+	| WCSQ_ {$$ = currentCoord = Coord::WCSQ;}
+	| WCSR_ {$$ = currentCoord = Coord::WCSR;}
+	| WCSS_ {$$ = currentCoord = Coord::WCSS;}
+	| WCST_ {$$ = currentCoord = Coord::WCST;}
+	| WCSU_ {$$ = currentCoord = Coord::WCSU;}
+	| WCSV_ {$$ = currentCoord = Coord::WCSV;}
+	| WCSW_ {$$ = currentCoord = Coord::WCSW;}
+	| WCSX_ {$$ = currentCoord = Coord::WCSX;}
+	| WCSY_ {$$ = currentCoord = Coord::WCSY;}
+	| WCSZ_ {$$ = currentCoord = Coord::WCSZ;}
+	| WCS0_ {$$ = currentCoord = Coord::WCS0;}
+	;
+
+internalSystem : CANVAS_ {$$ = Coord::CANVAS;}
+	| PANNER_ {$$ = Coord::PANNER;}
 	;
 
 scaleType: LINEAR_ {$$ = FrScale::LINEARSCALE;}
@@ -620,28 +630,28 @@ scaleType: LINEAR_ {$$ = FrScale::LINEARSCALE;}
 	| HISTEQU_ {$$ = FrScale::HISTEQUSCALE;}
 	;	
 
-skyFrame : /* empty */ {$$ = currentSky = FK5;}
-	| FK4_ {$$ = currentSky = FK4;}
-	| FK4_NO_E_ {$$ = currentSky = FK4_NO_E;}
-	| B1950_ {$$ = currentSky = FK4;}
-	| FK5_ {$$ = currentSky = FK5;}
-	| J2000_ {$$ = currentSky = FK5;}
-	| ICRS_ {$$ = currentSky = ICRS;}
-	| GALACTIC_ {$$ = currentSky = GALACTIC;}
-	| SUPERGALACTIC_ {$$ = currentSky = SUPERGALACTIC;}
-	| ECLIPTIC_ {$$ = currentSky = ECLIPTIC;}
-	| HELIOECLIPTIC_ {$$ = currentSky = HELIOECLIPTIC;}
+skyFrame : /* empty */ {$$ = currentSky = Coord::FK5;}
+	| FK4_ {$$ = currentSky = Coord::FK4;}
+	| FK4_NO_E_ {$$ = currentSky = Coord::FK4_NO_E;}
+	| B1950_ {$$ = currentSky = Coord::FK4;}
+	| FK5_ {$$ = currentSky = Coord::FK5;}
+	| J2000_ {$$ = currentSky = Coord::FK5;}
+	| ICRS_ {$$ = currentSky = Coord::ICRS;}
+	| GALACTIC_ {$$ = currentSky = Coord::GALACTIC;}
+	| SUPERGALACTIC_ {$$ = currentSky = Coord::SUPERGALACTIC;}
+	| ECLIPTIC_ {$$ = currentSky = Coord::ECLIPTIC;}
+	| HELIOECLIPTIC_ {$$ = currentSky = Coord::HELIOECLIPTIC;}
 	;
 
-skyFormat : /* empty */ {$$=DEGREES;}
-	| DEGREES_ {$$=DEGREES;}
-	| SEXAGESIMAL_ {$$=SEXAGESIMAL;}
+skyFormat : /* empty */ {$$=Coord::DEGREES;}
+	| DEGREES_ {$$=Coord::DEGREES;}
+	| SEXAGESIMAL_ {$$=Coord::SEXAGESIMAL;}
 	;
 
-skyDist : /* empty */ {$$=DEGREE;}
-	| DEGREES_ {$$=DEGREE;}
-	| ARCMIN_ {$$=ARCMIN;}
-	| ARCSEC_ {$$=ARCSEC;}
+skyDist : /* empty */ {$$=Coord::DEGREE;}
+	| DEGREES_ {$$=Coord::DEGREE;}
+	| ARCMIN_ {$$=Coord::ARCMIN;}
+	| ARCSEC_ {$$=Coord::ARCSEC;}
 	;
 
 contourClipMode: numeric {$$ = $1;}
@@ -671,10 +681,30 @@ compressType: /* empty */ {$$ = Base::NOCOMPRESS;}
 	| GZ_ {$$ = Base::GZ;}
 	;
 
+pointShape: /* empty */ {$$ = Point::CIRCLE;}
+	| CIRCLE_  {$$ = Point::CIRCLE;}
+	| BOX_ {$$ = Point::BOX;}
+	| DIAMOND_ {$$ = Point::DIAMOND;}
+	| CROSS_ {$$ = Point::CROSS;}
+	| 'X' {$$ = Point::EX;}
+	| ARROW_ {$$ = Point::ARROW;}
+	| BOXCIRCLE_ {$$ = Point::BOXCIRCLE;}
+	;
+
 pointSize: /* empty */ {$$ = POINTSIZE;}
 	| INT {$$ = $1;}
 	;
 
+analysisMethod: STATS_ {$$ = Marker::STATS;}
+	| PLOT2D_ {$$ = Marker::PLOT2D;}
+	| PLOT3D_ {$$ = Marker::PLOT3D;}
+	;
+
+analysisParam : /* emtpy */ {$$ = Marker::AVERAGE;}
+	| AVERAGE_  {$$ = Marker::AVERAGE;}
+	| SUM_  {$$ = Marker::SUM;}
+	;
+
 endian	: /* empty */ {$$ = FitsFile::BIGENDIAN;}
 	| BIGENDIAN_ {$$ = FitsFile::BIGENDIAN;}
 	| LITTLEENDIAN_ {$$ = FitsFile::LITTLEENDIAN;}
@@ -798,24 +828,24 @@ colorscale : scaleType {fr->colorScaleCmd((FrScale::ColorScaleType)$1);}
 contour	: AUX_ contourAux
 	| COLOR_ STRING {fr->contourSetColorCmd($2);}
 	| COPY_ coordSystem skyFrame 
-	  {fr->contourCopyCmd((CoordSystem)$2, (SkyFrame)$3);}
+	  {fr->contourCopyCmd((Coord::CoordSystem)$2, (Coord::SkyFrame)$3);}
 	| CREATE_ contourCreate
 	| DASH_ INT  {fr->contourSetDashCmd($2);}
 	| DELETE_ {fr->contourDeleteCmd();}
 	| DELETE_ ALL_ {fr->contourDeleteAllCmd();}
 	| LOAD_ STRING INT INT STRING coordSystem skyFrame
-	  {fr->contourLoadCmd($2, $3, $4, $5, (CoordSystem)$6, (SkyFrame)$7);}
+	  {fr->contourLoadCmd($2, $3, $4, $5, (Coord::CoordSystem)$6, (Coord::SkyFrame)$7);}
 	| PASTE_ STRING INT INT POINTER coordSystem skyFrame
-	  {fr->contourPasteCmd($2, $3, $4, $5, (CoordSystem)$6, (SkyFrame)$7);}
+	  {fr->contourPasteCmd($2, $3, $4, $5, (Coord::CoordSystem)$6, (Coord::SkyFrame)$7);}
 	| SAVE_ STRING coordSystem skyFrame
-	  {fr->contourSaveCmd($2, (CoordSystem)$3, (SkyFrame)$4);}
+	  {fr->contourSaveCmd($2, (Coord::CoordSystem)$3, (Coord::SkyFrame)$4);}
 	| WIDTH_ INT {fr->contourSetLineWidthCmd($2);}
 	;
 
 contourAux : HEAD_ {fr->contourAuxHeadCmd();}
 	| NEXT_ {fr->contourAuxNextCmd();}
 	| SAVE_ STRING coordSystem skyFrame
-	  {fr->contourAuxSaveCmd($2, (CoordSystem)$3, (SkyFrame)$4);}
+	  {fr->contourAuxSaveCmd($2, (Coord::CoordSystem)$3, (Coord::SkyFrame)$4);}
 	;
 
 contourCreate : STRING INT INT contourmethod INT INT scaleType numeric contourClipMode numeric numeric STRING
@@ -832,10 +862,10 @@ contourmethod : SMOOTH_ {$$ = FVContour::SMOOTH;}
 crop	: /* empty */ {fr->cropCmd();}
 	| numeric numeric numeric numeric coordSystem skyFrame
 	  {fr->cropCmd(Vector($1,$2), Vector($3,$4),
-	    (CoordSystem)$5, (SkyFrame)$6);}
+	    (Coord::CoordSystem)$5, (Coord::SkyFrame)$6);}
 	| CENTER_ coord coordSystem skyFrame numeric numeric coordSystem skyDist
-	  {fr->cropCenterCmd(Vector($2), (CoordSystem)$3, (SkyFrame)$4,
-	    Vector($5,$6), (CoordSystem)$7, (SkyDist)$8);}
+	  {fr->cropCenterCmd(Vector($2), (Coord::CoordSystem)$3, (Coord::SkyFrame)$4,
+	    Vector($5,$6), (Coord::CoordSystem)$7, (Coord::SkyDist)$8);}
 	| THREED_ crop3d
 	| BEGIN_ numeric numeric {fr->cropBeginCmd(Vector($2,$3));}
 	| MOTION_ numeric numeric {fr->cropMotionCmd(Vector($2,$3));}
@@ -843,27 +873,27 @@ crop	: /* empty */ {fr->cropCmd();}
 	;
 
 crop3d	: /* empty */ {fr->crop3dCmd();}
-	| numeric numeric coordSystem {fr->crop3dCmd($1, $2, (CoordSystem)$3);}
+	| numeric numeric coordSystem {fr->crop3dCmd($1, $2, (Coord::CoordSystem)$3);}
 	| BEGIN_ numeric numeric INT {fr->crop3dBeginCmd(Vector($2,$3),$4);}
 	| MOTION_ numeric numeric INT {fr->crop3dMotionCmd(Vector($2,$3),$4);}
 	| END_ numeric numeric INT {fr->crop3dEndCmd(Vector($2,$3),$4);}
 	;
 
 crosshair: internalSystem numeric numeric
-	  {fr->crosshairCmd(Vector($2,$3), (InternalSystem)$1);}
+	  {fr->crosshairCmd(Vector($2,$3), (Coord::InternalSystem)$1);}
 	| coordSystem skyFrame coord
-	  {fr->crosshairCmd(Vector($3), (CoordSystem)$1, (SkyFrame)$2);}
+	  {fr->crosshairCmd(Vector($3), (Coord::CoordSystem)$1, (Coord::SkyFrame)$2);}
 	| yesno {fr->crosshairCmd($1);}
 	| WARP_ numeric numeric {fr->crosshairWarpCmd(Vector($2,$3));}
 
 	| BEGIN_ MOTION_ internalSystem numeric numeric
-	  {fr->crosshairCmd(Vector($4,$5), (InternalSystem)$3);}
+	  {fr->crosshairCmd(Vector($4,$5), (Coord::InternalSystem)$3);}
 	| MOTION_ internalSystem numeric numeric
-	  {fr->crosshairCmd(Vector($3,$4), (InternalSystem)$2);}
+	  {fr->crosshairCmd(Vector($3,$4), (Coord::InternalSystem)$2);}
 	| BEGIN_ MOTION_ coordSystem coord
-	  {fr->crosshairCmd(Vector($4), (CoordSystem)$3);}
+	  {fr->crosshairCmd(Vector($4), (Coord::CoordSystem)$3);}
 	| MOTION_ coordSystem coord
-	  {fr->crosshairCmd(Vector($3), (CoordSystem)$2);}
+	  {fr->crosshairCmd(Vector($3), (Coord::CoordSystem)$2);}
 	;
 
 fitsy	: HAS_ EXT_ STRING {fr->fitsyHasExtCmd($3);}
@@ -886,7 +916,7 @@ get	: BG_ COLOR_ {fr->getBgColorCmd();}
 	| GRID_ getGrid
 	| HISTOGRAM_ STRING STRING {fr->getHistogramCmd($2,$3);}
 	| HORIZONTAL_ CUT_ STRING STRING numeric numeric internalSystem
-	  {fr->getHorzCutCmd($3,$4,Vector($5,$6),(InternalSystem)$7);}
+	  {fr->getHorzCutCmd($3,$4,Vector($5,$6),(Coord::InternalSystem)$7);}
 	| IIS_ getiis
 	| INFO_ getInfo
 	| MINMAX_ {fr->getMinMaxCmd();}
@@ -896,16 +926,16 @@ get	: BG_ COLOR_ {fr->getBgColorCmd();}
 	| ORIENT_ {fr->getOrientCmd();}
 	| PAN_ getPan
 	| PIXEL_ TABLE_ internalSystem numeric numeric INT INT STRING
-	  {fr->getPixelTableCmd(Vector($4,$5), (InternalSystem)$3, $6, $7, $8);}
+	  {fr->getPixelTableCmd(Vector($4,$5), (Coord::InternalSystem)$3, $6, $7, $8);}
 	| RGB_ getRGB
 	| ROTATE_ getRotate
 	| SMOOTH_ getSmooth
 	| THREED_ getThreed
 	| TYPE_ {fr->getTypeCmd();}
 	| VALUE_ internalSystem numeric numeric
-	  {fr->getValueCmd(Vector($3,$4),(InternalSystem)$2);}
+	  {fr->getValueCmd(Vector($3,$4),(Coord::InternalSystem)$2);}
 	| VERTICAL_ CUT_ STRING STRING numeric numeric internalSystem
-	  {fr->getVertCutCmd($3,$4,Vector($5,$6),(InternalSystem)$7);}
+	  {fr->getVertCutCmd($3,$4,Vector($5,$6),(Coord::InternalSystem)$7);}
 	| WCS_ getWCS
 	| ZOOM_ getZoom
 	;
@@ -956,7 +986,7 @@ getColorMap : LEVEL_ getColorMapLevel
 
 getColorMapLevel: INT {fr->getColorMapLevelCmd($1);}
 	| INT internalSystem numeric numeric
-	  {fr->getColorMapLevelCmd($1,Vector($3,$4),(InternalSystem)$2);}
+	  {fr->getColorMapLevelCmd($1,Vector($3,$4),(Coord::InternalSystem)$2);}
 	| INT numeric numeric scaleType numeric
 	  {fr->getColorMapLevelCmd($1,$2,$3,(FrScale::ColorScaleType)$4,$5);}
 	;
@@ -971,7 +1001,7 @@ getColorScaleLevel: INT numeric numeric scaleType numeric
 	;
 
 getContour: coordSystem skyFrame 
-	  {fr->getContourCmd((CoordSystem)$1,(SkyFrame)$2);}
+	  {fr->getContourCmd((Coord::CoordSystem)$1,(Coord::SkyFrame)$2);}
 	| AUX_ getContourAux
 	| CLIP_ getContourClip
 	| COLOR_ {fr->getContourColorNameCmd();}
@@ -998,58 +1028,58 @@ getContourColorScale : /* empty */ {fr->getContourScaleCmd();}
 	;
 
 getCoord : numeric numeric coordSystem skyFrame skyFormat
-	  {fr->getCoordCmd(Vector($1,$2), (CoordSystem)$3, (SkyFrame)$4,
-	    (SkyFormat)$5);}
+	  {fr->getCoordCmd(Vector($1,$2), (Coord::CoordSystem)$3, (Coord::SkyFrame)$4,
+	    (Coord::SkyFormat)$5);}
 	| internalSystem numeric numeric coordSystem skyFrame skyFormat
 	{
 	  // backward compatibility
-	  fr->getCoordCmd(Vector($2,$3), (CoordSystem)$4, (SkyFrame)$5,
-	    (SkyFormat)$6);
+	  fr->getCoordCmd(Vector($2,$3), (Coord::CoordSystem)$4, (Coord::SkyFrame)$5,
+	    (Coord::SkyFormat)$6);
 	}
 	| numeric coordSystem INT 
-	  {fr->getCoordFromRefCmd($1, (CoordSystem)$2, $3);}
+	  {fr->getCoordFromRefCmd($1, (Coord::CoordSystem)$2, $3);}
 	| FROM_ numeric coordSystem INT 
-	  {fr->getCoordFromRefCmd($2, (CoordSystem)$3, $4);}
+	  {fr->getCoordFromRefCmd($2, (Coord::CoordSystem)$3, $4);}
 	| TO_ numeric coordSystem INT 
-	  {fr->getCoordToRefCmd($2, (CoordSystem)$3, $4);}
+	  {fr->getCoordToRefCmd($2, (Coord::CoordSystem)$3, $4);}
 	;
 
 getCrop	: coordSystem skyFrame skyFormat
-	  {fr->getCropCmd((CoordSystem)$1, (SkyFrame)$2, (SkyFormat)$3);}
+	  {fr->getCropCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3);}
 	| CENTER_ coordSystem skyFrame skyFormat coordSystem skyDist
-	  {fr->getCropCenterCmd((CoordSystem)$2, (SkyFrame)$3, (SkyFormat)$4,
-	  (CoordSystem)$5, (SkyDist)$6);}
-	| THREED_ coordSystem {fr->getCrop3dCmd((CoordSystem)$2);}
+	  {fr->getCropCenterCmd((Coord::CoordSystem)$2, (Coord::SkyFrame)$3, (Coord::SkyFormat)$4,
+	  (Coord::CoordSystem)$5, (Coord::SkyDist)$6);}
+	| THREED_ coordSystem {fr->getCrop3dCmd((Coord::CoordSystem)$2);}
 	;
 
-getCrosshair: internalSystem {fr->getCrosshairCmd((InternalSystem)$1);}
+getCrosshair: internalSystem {fr->getCrosshairCmd((Coord::InternalSystem)$1);}
 	| coordSystem skyFrame skyFormat precision
-	  {fr->getCrosshairCmd((CoordSystem)$1, (SkyFrame)$2, (SkyFormat)$3,
-	    (Precision)$4)}
+	  {fr->getCrosshairCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3,
+	    (Base::Precision)$4)}
 	| STATUS_ {fr->getCrosshairStatusCmd();}
 	;
 
-getCursor : internalSystem {fr->getCursorCmd((InternalSystem)$1);}
+getCursor : internalSystem {fr->getCursorCmd((Coord::InternalSystem)$1);}
 	| coordSystem skyFrame skyFormat precision
-	  {fr->getCursorCmd((CoordSystem)$1, (SkyFrame)$2, (SkyFormat)$3,
-	    (Precision)$4);}
+	  {fr->getCursorCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3,
+	    (Base::Precision)$4);}
 	;
 
 getData	: coordSystem skyFrame coord numeric numeric STRING
 	  {fr->getDataValuesCmd(1, Vector($3), 
-	    (CoordSystem)$1, (SkyFrame)$2, Vector($4,$5), $6);}
+	    (Coord::CoordSystem)$1, (Coord::SkyFrame)$2, Vector($4,$5), $6);}
 	| INT coordSystem skyFrame coord numeric numeric STRING
 	  {fr->getDataValuesCmd($1, Vector($4), 
-	    (CoordSystem)$2, (SkyFrame)$3, Vector($5,$6), $7);}
+	    (Coord::CoordSystem)$2, (Coord::SkyFrame)$3, Vector($5,$6), $7);}
 	| internalSystem numeric numeric INT INT
-	  {fr->getDataValuesCmd(Vector($2,$3),(InternalSystem)$1,
+	  {fr->getDataValuesCmd(Vector($2,$3),(Coord::InternalSystem)$1,
 	    Vector($4,$5));}
 	;
 
 getInfo	: STRING {fr->getInfoCmd($1);}
 	| CLIP_ {fr->getInfoClipCmd();}
  	| internalSystem numeric numeric STRING
-	  {fr->getInfoCmd(Vector($2,$3), (InternalSystem)$1, $4);}
+	  {fr->getInfoCmd(Vector($2,$3), (Coord::InternalSystem)$1, $4);}
 	;
 
 getiis	: POINTER INT INT INT INT {fr->iisGetCmd((char*)$1,$2,$3,$4,$5);}
@@ -1066,21 +1096,21 @@ getIISFileName : /* empty */ {fr->iisGetFileNameCmd();}
 
 getFits	: NAXES_ /* empty */ {fr->getFitsNAxesCmd();}
 	| CENTER_ coordSystem skyFrame skyFormat precision
-	    {fr->getFitsCenterCmd((CoordSystem)$2,(SkyFrame)$3,(SkyFormat)$4,
-	      (Precision)$5);}
+	    {fr->getFitsCenterCmd((Coord::CoordSystem)$2,(Coord::SkyFrame)$3,(Coord::SkyFormat)$4,
+	      (Base::Precision)$5);}
 	| COUNT_ {fr->getFitsCountCmd();}
 	| DEPTH_ getFitsDepth
 	| BITPIX_ {fr->getBitpixCmd();}
 	| EXT_ internalSystem numeric numeric
-	  {fr->getFitsExtCmd(Vector($3,$4),(InternalSystem)$2);}
+	  {fr->getFitsExtCmd(Vector($3,$4),(Coord::InternalSystem)$2);}
 	| FILE_ NAME_ getFitsFileName
 	| HEADER_ getFitsHeader
 	| HEIGHT_ {fr->getHeightCmd();}
 	| OBJECT_ NAME_ {fr->getFitsObjectNameCmd();}
 	| SIZE_ {fr->getFitsSizeCmd();}
 	| SIZE_ coordSystem skyFrame skyDist precision
-	    {fr->getFitsSizeCmd((CoordSystem)$2,(SkyFrame)$3,(SkyDist)$4,
-	      (Precision)$5);}
+	    {fr->getFitsSizeCmd((Coord::CoordSystem)$2,(Coord::SkyFrame)$3,(Coord::SkyDist)$4,
+	      (Base::Precision)$5);}
 	| SLICE_ getFitsSlice
 	| WIDTH_ {fr->getWidthCmd();}
 	;
@@ -1097,7 +1127,7 @@ getFitsDepth : /* empty */ {fr->getFitsDepthCmd(2);}
 getFitsFileName: fileNameType 
 	  {fr->getFitsFileNameCmd((Base::FileNameType)$1);}
 	| fileNameType internalSystem numeric numeric
-	  {fr->getFitsFileNameCmd(Vector($3,$4), (InternalSystem)$2,
+	  {fr->getFitsFileNameCmd(Vector($3,$4), (Coord::InternalSystem)$2,
 	    (Base::FileNameType)$1);}
 	| fileNameType INT 
 	  {fr->getFitsFileNameCmd($2, (Base::FileNameType)$1);}
@@ -1124,7 +1154,7 @@ getRGB	: CHANNEL_ {fr->getRGBChannelCmd();}
 	| VIEW_ {fr->getRGBViewCmd();}
 	;
 
-getRotate : precision {fr->getRotateCmd((Precision)$1);}
+getRotate : precision {fr->getRotateCmd((Base::Precision)$1);}
 	;
 
 getSmooth : FUNCTION_  {fr->getSmoothFunctionCmd();}
@@ -1139,18 +1169,18 @@ getThreed : VIEW_ {fr->get3dViewCmd();}
 
 getWCS	: /* empty */ {fr->getWCSCmd();}
 	| ALIGN_ getWCSAlign
-	| NAME_ wcsSystem {fr->getWCSNameCmd((CoordSystem)$2);}
+	| NAME_ wcsSystem {fr->getWCSNameCmd((Coord::CoordSystem)$2);}
 	;
 
 getWCSAlign : /* empty */ {fr->getWCSAlignCmd();}
 	| POINTER_ {fr->getWCSAlignPointerCmd();}
 	;
 
-getZoom	: precision {fr->getZoomCmd((Precision)$1);}
+getZoom	: precision {fr->getZoomCmd((Base::Precision)$1);}
 	;
 
 grid	: CREATE_ coordSystem skyFrame skyFormat gridType STRING
-	   {fr->gridCmd((CoordSystem)$2, (SkyFrame)$3, (SkyFormat)$4,
+	   {fr->gridCmd((Coord::CoordSystem)$2, (Coord::SkyFrame)$3, (Coord::SkyFormat)$4,
 	     (Grid2d::GridType)$5, $6);}
 	| DELETE_ {fr->gridDeleteCmd();}
 	;
@@ -1160,6 +1190,7 @@ gridType : ANALYSIS_ {$$=Grid2d::ANALYSIS;}
 	;
 
 has	: AMPLIFIER_ {fr->hasAmplifierCmd();}
+	| BIN_ hasBin
 	| CONTOUR_ hasContour
 	| CROP_ {fr->hasCropCmd();}
 	| DATAMIN_ {fr->hasDATAMINCmd();}
@@ -1172,10 +1203,13 @@ has	: AMPLIFIER_ {fr->hasAmplifierCmd();}
 	| MARKER_ hasMarker
 	| PHYSICAL_ {fr->hasPhysicalCmd();}
 	| SMOOTH_ {fr->hasSmoothCmd();}
-	| SYSTEM_ coordSystem {fr->hasSystemCmd((CoordSystem)$2);}
+	| SYSTEM_ coordSystem {fr->hasSystemCmd((Coord::CoordSystem)$2);}
 	| WCS_ hasWCS
 	;
 
+hasBin	: COLUMN_ STRING {fr->hasBinColCmd($2);}
+	;
+
 hasContour : /* empty */ {fr->hasContourCmd();}
 	| AUX_ {fr->hasContourAuxCmd();}
 	;
@@ -1192,9 +1226,9 @@ hasMarker : HIGHLITE_ {fr->hasMarkerHighlitedCmd();}
 	| UNDO_ {fr->hasMarkerUndoCmd();}
 	;
 
-hasWCS	: coordSystem {fr->hasWCSCmd((CoordSystem)$1);}
-	| EQUATORIAL_ coordSystem {fr->hasWCSEquCmd((CoordSystem)$2);}
-	| CELESTRIAL_ coordSystem {fr->hasWCSCelCmd((CoordSystem)$2);}
+hasWCS	: coordSystem {fr->hasWCSCmd((Coord::CoordSystem)$1);}
+	| EQUATORIAL_ coordSystem {fr->hasWCSEquCmd((Coord::CoordSystem)$2);}
+	| CELESTRIAL_ coordSystem {fr->hasWCSCelCmd((Coord::CoordSystem)$2);}
 	| ALT_ {fr->hasWCSAltCmd();}
 	;
 
@@ -1216,15 +1250,16 @@ iisSetFileName : STRING {fr->iisSetFileNameCmd($1);}
 	;
 
 iiscursor: INT INT CANVAS_
-	  {fr->iisSetCursorCmd(Vector($1,$2),CANVAS);}
+	  {fr->iisSetCursorCmd(Vector($1,$2),Coord::CANVAS);}
 	| INT INT coordSystem
-	  {fr->iisSetCursorCmd(Vector($1,$2),(CoordSystem)$3);}
+	  {fr->iisSetCursorCmd(Vector($1,$2),(Coord::CoordSystem)$3);}
 	| MODE_ yesno {fr->iisCursorModeCmd($2);}
 	;
 
 load	: ARRAY_ loadArr
 	| FITS_ loadFits
 	| INCR_ loadIncr
+	| PHOTO_ STRING STRING {fr->loadPhotoCmd($2,$3);}
 	;
 
 loadArr : STRING ALLOC_ STRING layerType 
@@ -1348,136 +1383,136 @@ loadFitsMosaic : IMAGE_ IRAF_ loadFitsMosaicImageIRAF
 	;
 
 loadFitsMosaicImageIRAF : STRING ALLOC_ STRING layerType
-	  {fr->loadMosaicImageAllocCmd(Base::IRAF, WCS, 
+	  {fr->loadMosaicImageAllocCmd(Base::IRAF, Coord::WCS, 
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING ALLOCGZ_ STRING layerType
-	  {fr->loadMosaicImageAllocGZCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageAllocGZCmd(Base::IRAF, Coord::WCS,
 	    $3, $1,(Base::LayerType)$4);}
 	| STRING CHANNEL_ STRING layerType
-	  {fr->loadMosaicImageChannelCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageChannelCmd(Base::IRAF, Coord::WCS,
 	    $3, $1,(Base::LayerType)$4);}
 	| STRING MMAP_ incrLoad layerType
-	  {fr->loadMosaicImageMMapCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageMMapCmd(Base::IRAF, Coord::WCS,
 	    $1,(Base::LoadMethod)$3, (Base::LayerType)$4);}
 	| STRING MMAPINCR_ incrLoad layerType
-	  {fr->loadMosaicImageMMapIncrCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageMMapIncrCmd(Base::IRAF, Coord::WCS,
 	    $1,(Base::LoadMethod)$3, (Base::LayerType)$4);}
 	| STRING SHARED_ shmType INT incrLoad layerType
-	  {fr->loadMosaicImageShareCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageShareCmd(Base::IRAF, Coord::WCS,
 	    (Base::ShmType)$3, $4, $1, (Base::LoadMethod)$5,
 	    (Base::LayerType)$6);}
 	| STRING SOCKET_ INT layerType
-	  {fr->loadMosaicImageSocketCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageSocketCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING SOCKETGZ_ INT layerType
-	  {fr->loadMosaicImageSocketGZCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageSocketGZCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING VAR_ STRING incrLoad layerType
-	  {fr->loadMosaicImageVarCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicImageVarCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LoadMethod)$4, (Base::LayerType)$5);}
 	;
 
 loadFitsMosaicIRAF : STRING ALLOC_ STRING layerType
-	  {fr->loadMosaicAllocCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicAllocCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING ALLOCGZ_ STRING layerType
-	  {fr->loadMosaicAllocGZCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicAllocGZCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING CHANNEL_ STRING layerType
-	  {fr->loadMosaicChannelCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicChannelCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING MMAP_ incrLoad layerType
-	  {fr->loadMosaicMMapCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicMMapCmd(Base::IRAF, Coord::WCS,
 	    $1,(Base::LoadMethod)$3, (Base::LayerType)$4);}
 	| STRING STRING SMMAP_ incrLoad layerType
-	  {fr->loadMosaicSMMapCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicSMMapCmd(Base::IRAF, Coord::WCS,
 	    $1, $2,(Base::LoadMethod)$4, (Base::LayerType)$5);}
 	| STRING MMAPINCR_ incrLoad layerType
-	  {fr->loadMosaicMMapIncrCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicMMapIncrCmd(Base::IRAF, Coord::WCS,
 	    $1,(Base::LoadMethod)$3, (Base::LayerType)$4);}
 	| STRING SHARED_ shmType INT incrLoad layerType
-	  {fr->loadMosaicShareCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicShareCmd(Base::IRAF, Coord::WCS,
 	    (Base::ShmType)$3, $4, $1, (Base::LoadMethod)$5, 
 	    (Base::LayerType)$6);}
 	| STRING SSHARED_ shmType INT INT incrLoad layerType
-	  {fr->loadMosaicSShareCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicSShareCmd(Base::IRAF, Coord::WCS,
 	    (Base::ShmType)$3, $4, $5, $1, (Base::LoadMethod)$6, 
 	    (Base::LayerType)$7);}
 	| STRING SOCKET_ INT layerType
-	  {fr->loadMosaicSocketCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicSocketCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING SOCKETGZ_ INT layerType
-	  {fr->loadMosaicSocketGZCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicSocketGZCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LayerType)$4);}
 	| STRING VAR_ STRING incrLoad layerType
-	  {fr->loadMosaicVarCmd(Base::IRAF, WCS,
+	  {fr->loadMosaicVarCmd(Base::IRAF, Coord::WCS,
 	    $3, $1, (Base::LoadMethod)$4, (Base::LayerType)$5);}
 	;
 
 loadFitsMosaicImageWCS : wcsSystem STRING ALLOC_ STRING layerType
-	  {fr->loadMosaicImageAllocCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageAllocCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING ALLOCGZ_ STRING layerType
-	  {fr->loadMosaicImageAllocGZCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageAllocGZCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING CHANNEL_ STRING layerType
-	  {fr->loadMosaicImageChannelCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageChannelCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING MMAP_ incrLoad layerType
-	  {fr->loadMosaicImageMMapCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageMMapCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $2, (Base::LoadMethod)$4, (Base::LayerType)$5);}
 	| wcsSystem STRING MMAPINCR_ incrLoad layerType
-	  {fr->loadMosaicImageMMapIncrCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageMMapIncrCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $2, (Base::LoadMethod)$4, (Base::LayerType)$5);}
 	| wcsSystem STRING SHARED_ shmType INT incrLoad layerType
-	  {fr->loadMosaicImageShareCmd(Base::WCSMOSAIC, (CoordSystem)$1, 
+	  {fr->loadMosaicImageShareCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1, 
 	    (Base::ShmType)$4, $5, $2, (Base::LoadMethod)$6,
 	    (Base::LayerType)$7);}
 	| wcsSystem STRING SOCKET_ INT layerType
-	  {fr->loadMosaicImageSocketCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageSocketCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING SOCKETGZ_ INT layerType
-	  {fr->loadMosaicImageSocketGZCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageSocketGZCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING VAR_ STRING incrLoad layerType
-	  {fr->loadMosaicImageVarCmd(Base::WCSMOSAIC, (CoordSystem)$1,
+	  {fr->loadMosaicImageVarCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LoadMethod)$5, (Base::LayerType)$6);}
 	;
 
 loadFitsMosaicWCS : wcsSystem STRING ALLOC_ STRING layerType
-	  {fr->loadMosaicAllocCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicAllocCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING ALLOCGZ_ STRING layerType
-	  {fr->loadMosaicAllocGZCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicAllocGZCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING CHANNEL_ STRING  layerType
-	  {fr->loadMosaicChannelCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicChannelCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING MMAP_ incrLoad  layerType
-	  {fr->loadMosaicMMapCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicMMapCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $2, (Base::LoadMethod)$4, (Base::LayerType)$5);}
 	| wcsSystem STRING STRING SMMAP_ incrLoad  layerType
-	  {fr->loadMosaicSMMapCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicSMMapCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $2, $3, (Base::LoadMethod)$5, (Base::LayerType)$6);}
 	| wcsSystem STRING MMAPINCR_ incrLoad  layerType
-	  {fr->loadMosaicMMapIncrCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicMMapIncrCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $2, (Base::LoadMethod)$4, (Base::LayerType)$5);}
 	| wcsSystem STRING SHARED_ shmType INT incrLoad layerType
-	  {fr->loadMosaicShareCmd((Base::WCSMOSAIC), (CoordSystem)$1, 
+	  {fr->loadMosaicShareCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1, 
 	    (Base::ShmType)$4, $5, $2, (Base::LoadMethod)$6,
 	    (Base::LayerType)$7);}
 	| wcsSystem STRING SSHARED_ shmType INT INT incrLoad layerType
-	  {fr->loadMosaicSShareCmd((Base::WCSMOSAIC), (CoordSystem)$1, 
+	  {fr->loadMosaicSShareCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1, 
 	    (Base::ShmType)$4, $5, $6, $2, (Base::LoadMethod)$7,
 	    (Base::LayerType)$8);}
 	| wcsSystem STRING SOCKET_ INT  layerType
-	  {fr->loadMosaicSocketCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicSocketCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING SOCKETGZ_ INT  layerType
-	  {fr->loadMosaicSocketGZCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicSocketGZCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LayerType)$5);}
 	| wcsSystem STRING VAR_ STRING incrLoad layerType
-	  {fr->loadMosaicVarCmd((Base::WCSMOSAIC), (CoordSystem)$1,
+	  {fr->loadMosaicVarCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
 	    $4, $2, (Base::LoadMethod)$5, (Base::LayerType)$6);}
 	;
 
@@ -1584,35 +1619,41 @@ marker	: CENTROID_ markerCentroid
 	| HIGHLITE_ TOGGLE_ numeric numeric
 	  {fr->markerHighliteToggleCmd(Vector($3,$4));}
 
+	| INT ANALYSIS_ analysisMethod yesno
+	  {fr->markerAnalysisCmd($1, (Marker::AnalysisMethod)$3, $4);}
+	| INT ANALYSIS_ PARAM_ analysisParam
+	  {fr->markerAnalysisParamCmd($1, (Marker::AnalysisParamType)$4);}
+	| INT ANALYSIS_ SYSTEM_ coordSystem skyFrame
+	  {fr->markerAnalysisSystemCmd($1,(Coord::CoordSystem)$4,(Coord::SkyFrame)$5);}
+
 	| INT ANGLE_ angle {fr->markerAngleCmd($1,$3);}
 	| INT ANGLE_ angle internalSystem {fr->markerAngleCmd($1,$3);}
 	| INT ANGLE_ angle coordSystem skyFrame
-	  {fr->markerAngleCmd($1,$3,(CoordSystem)$4, (SkyFrame)$5);}
+	  {fr->markerAngleCmd($1,$3,(Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 
 	| INT ANNULUS_ RADIUS_ numeric numeric INT internalSystem
-	  {fr->markerAnnulusRadiusCmd($1, $4, $5, $6, (InternalSystem)$7);}
+	  {fr->markerAnnulusRadiusCmd($1, $4, $5, $6, (Coord::InternalSystem)$7);}
 	| INT ANNULUS_ RADIUS_ numeric numeric INT coordSystem skyDist
 	  {fr->markerAnnulusRadiusCmd($1, $4, $5, $6,
-	    (CoordSystem)$7, (SkyDist)$8);}
+	    (Coord::CoordSystem)$7, (Coord::SkyDist)$8);}
 	| INT ANNULUS_ RADIUS_ STRING coordSystem skyDist
-	  {fr->markerAnnulusRadiusCmd($1, $4,(CoordSystem)$5,(SkyDist)$6);}
+	  {fr->markerAnnulusRadiusCmd($1, $4,(Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
 
 	| INT BOXANNULUS_ RADIUS_ numeric numeric numeric INT internalSystem
 	  {fr->markerBoxAnnulusRadiusCmd($1, Vector($4, $5), 
-	    Vector($6, $6*$5/$4), $7, (InternalSystem)$8);}
+	    Vector($6, $6*$5/$4), $7, (Coord::InternalSystem)$8);}
 	| INT BOXANNULUS_ RADIUS_ numeric numeric numeric INT 
 	    coordSystem skyDist
 	  {fr->markerBoxAnnulusRadiusCmd($1, Vector($4, $5), 
-	    Vector($6, $6*$5/$4), $7, (CoordSystem)$8, (SkyDist)$9);}
+	    Vector($6, $6*$5/$4), $7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
 	| INT BOXANNULUS_ RADIUS_ STRING coordSystem skyDist
-	  {fr->markerBoxAnnulusRadiusCmd($1,$4,(CoordSystem)$5,(SkyDist)$6);}
+	  {fr->markerBoxAnnulusRadiusCmd($1,$4,(Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
 
 	| INT BOX_ RADIUS_ numeric numeric internalSystem
-	  {fr->markerBoxRadiusCmd($1, Vector($4,$5), (InternalSystem)$6);}
+	  {fr->markerBoxRadiusCmd($1, Vector($4,$5), (Coord::InternalSystem)$6);}
 	| INT BOX_ RADIUS_ numeric numeric coordSystem skyDist
 	  {fr->markerBoxRadiusCmd($1, Vector($4,$5), 
-	    (CoordSystem)$6, (SkyDist)$7);}
-
+	    (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
 	| INT BPANDA_ EDIT_ angle angle INT numeric numeric numeric INT 
 	  {fr->markerBpandaEditCmd($1, $4, $5, $6,
 	    Vector($7,$8), Vector($9,$9*$8/$7), $10);}
@@ -1624,35 +1665,30 @@ marker	: CENTROID_ markerCentroid
 	    coordSystem skyFrame
 	  {fr->markerBpandaEditCmd($1, $4, $5, $6,
 	    Vector($7,$8), Vector($9,$9*$8/$7), $10,
-	    (CoordSystem)$11, (SkyFrame)$12);}
+	    (Coord::CoordSystem)$11, (Coord::SkyFrame)$12);}
 	| INT BPANDA_ EDIT_ STRING STRING coordSystem skyFrame 
 	    coordSystem skyDist
 	  {fr->markerBpandaEditCmd($1, $4, $5, 
-	    (CoordSystem)$6, (SkyFrame)$7, (CoordSystem)$8, (SkyDist)$9);}
+	    (Coord::CoordSystem)$6, (Coord::SkyFrame)$7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
 
 	| INT CALLBACK_ markerCallBack STRING STRING
 	  {fr->markerCallBackCmd($1,(CallBack::Type)$3,$4,$5);}
-
 	| INT CIRCLE_ RADIUS_ numeric internalSystem
-	  {fr->markerCircleRadiusCmd($1, $4, (InternalSystem)$5);}
+	  {fr->markerCircleRadiusCmd($1, $4, (Coord::InternalSystem)$5);}
 	| INT CIRCLE_ RADIUS_ numeric coordSystem skyDist
-	  {fr->markerCircleRadiusCmd($1, $4, (CoordSystem)$5, (SkyDist)$6);}
-
+	  {fr->markerCircleRadiusCmd($1, $4, (Coord::CoordSystem)$5, (Coord::SkyDist)$6);}
 	| INT COLOR_ STRING {fr->markerColorCmd($1,$3);}
-
 	| INT COMPASS_ ARROW_ yesno yesno 
 	  {fr->markerCompassArrowCmd($1,$4,$5);}
 	| INT COMPASS_ LABEL_ STRING STRING
 	  {fr->markerCompassLabelCmd($1,$4,$5);}
 	| INT COMPASS_ RADIUS_ numeric internalSystem
-	  {fr->markerCompassRadiusCmd($1,$4,(InternalSystem)$5);}
+	  {fr->markerCompassRadiusCmd($1,$4,(Coord::InternalSystem)$5);}
 	| INT COMPASS_ RADIUS_ numeric coordSystem skyDist
-	  {fr->markerCompassRadiusCmd($1,$4,(CoordSystem)$5,(SkyDist)$6);}
+	  {fr->markerCompassRadiusCmd($1,$4,(Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
 	| INT COMPASS_ SYSTEM_ coordSystem skyFrame
-	  {fr->markerCompassSystemCmd($1, (CoordSystem)$4, (SkyFrame)$5);}
-
+	  {fr->markerCompassSystemCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 	| INT COMPOSITE_ GLOBAL_ yesno {fr->markerCompositeCmd($1,$4);}
-
 	| INT CPANDA_ EDIT_ angle angle INT numeric numeric INT 
 	  {fr->markerCpandaEditCmd($1, $4, $5, $6, $7, $8, $9);}
 	| INT CPANDA_ EDIT_ angle angle INT numeric numeric INT internalSystem
@@ -1660,11 +1696,11 @@ marker	: CENTROID_ markerCentroid
 	| INT CPANDA_ EDIT_ angle angle INT numeric numeric INT 
 	    coordSystem skyFrame
 	  {fr->markerCpandaEditCmd($1, $4, $5, $6, $7, $8, $9,
-	    (CoordSystem)$10, (SkyFrame)$11);}
+	    (Coord::CoordSystem)$10, (Coord::SkyFrame)$11);}
 	| INT CPANDA_ EDIT_ STRING STRING coordSystem skyFrame 
 	    coordSystem skyDist
-	  {fr->markerCpandaEditCmd($1, $4, $5, (CoordSystem)$6, (SkyFrame)$7,
-	    (CoordSystem)$8, (SkyDist)$9);}
+	  {fr->markerCpandaEditCmd($1, $4, $5, (Coord::CoordSystem)$6, (Coord::SkyFrame)$7,
+	    (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
 
 	| INT CREATE_ ANNULUS_ RADIUS_ numeric numeric
 	  {fr->markerAnnulusCreateRadiusCmd($1,Vector($5,$6));}
@@ -1706,25 +1742,22 @@ marker	: CENTROID_ markerCentroid
 	| INT DELETE_ TAG_ INT {fr->markerDeleteTagCmd($1,$4);}
 
 	| INT EDIT_ BEGIN_ INT {fr->markerEditBeginCmd($1,$4);}
-
 	| INT ELLIPSE_ RADIUS_ numeric numeric internalSystem
-	  {fr->markerEllipseRadiusCmd($1, Vector($4, $5), (InternalSystem)$6);}
+	  {fr->markerEllipseRadiusCmd($1, Vector($4, $5), (Coord::InternalSystem)$6);}
 	| INT ELLIPSE_ RADIUS_ numeric numeric coordSystem skyDist
 	  {fr->markerEllipseRadiusCmd($1, Vector($4, $5),
-	    (CoordSystem)$6, (SkyDist)$7);}
-
+	    (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
 	| INT ELLIPSEANNULUS_ RADIUS_ numeric numeric numeric INT
 	    internalSystem
 	  {fr->markerEllipseAnnulusRadiusCmd($1, Vector($4,$5), 
-	    Vector($6,$6*$5/$4), $7, (InternalSystem)$8);}
+	    Vector($6,$6*$5/$4), $7, (Coord::InternalSystem)$8);}
 	| INT ELLIPSEANNULUS_ RADIUS_ numeric numeric numeric INT
 	    coordSystem skyDist
 	  {fr->markerEllipseAnnulusRadiusCmd($1, Vector($4,$5), 
-	    Vector($6,$6*$5/$4), $7, (CoordSystem)$8, (SkyDist)$9);}
+	    Vector($6,$6*$5/$4), $7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
 	| INT ELLIPSEANNULUS_ RADIUS_ STRING coordSystem skyDist
 	  {fr->markerEllipseAnnulusRadiusCmd($1, $4,
-	    (CoordSystem)$5, (SkyDist)$6);}
-
+	    (Coord::CoordSystem)$5, (Coord::SkyDist)$6);}
 	| INT EPANDA_ EDIT_ angle angle INT numeric numeric numeric INT 
 	  {fr->markerEpandaEditCmd($1, $4, $5, $6,
 	    Vector($7,$8), Vector($9,$9*$8/$7), $10);}
@@ -1736,12 +1769,12 @@ marker	: CENTROID_ markerCentroid
 	    coordSystem skyFrame
 	  {fr->markerEpandaEditCmd($1, $4, $5, $6,
 	    Vector($7,$8), Vector($9,$9*$8/$7), $10,
-	    (CoordSystem)$11, (SkyFrame)$12);}
+	    (Coord::CoordSystem)$11, (Coord::SkyFrame)$12);}
 	| INT EPANDA_ EDIT_ STRING STRING coordSystem skyFrame 
 	    coordSystem skyDist
 	  {fr->markerEpandaEditCmd($1, $4, $5, 
-	    (CoordSystem)$6, (SkyFrame)$7,
-	    (CoordSystem)$8, (SkyDist)$9);}
+	    (Coord::CoordSystem)$6, (Coord::SkyFrame)$7,
+	    (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
 
 	| INT FONT_ STRING {fr->markerFontCmd($1,$3);}
 	| INT HIGHLITE_ {fr->markerHighliteCmd($1);}
@@ -1749,75 +1782,68 @@ marker	: CENTROID_ markerCentroid
 
 	| INT LINE_ ARROW_ yesno yesno {fr->markerLineArrowCmd($1,$4,$5);}
 	| INT LINE_ POINT_ internalSystem coord coord
-	  {fr->markerLineCmd($1, Vector($5), Vector($6), (InternalSystem)$4);}
+	  {fr->markerLineCmd($1, Vector($5), Vector($6), (Coord::InternalSystem)$4);}
 	| INT LINE_ POINT_ coordSystem skyFrame coord coord
 	  {fr->markerLineCmd($1, Vector($6), Vector($7), 
-	    (CoordSystem)$4, (SkyFrame)$5);}
+	    (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 
 	| INT MOVE_ numeric numeric 
 	  {fr->markerMoveCmd($1, Vector($3,$4));}
 	| INT MOVE_ FRONT_ {fr->markerFrontCmd($1);}
 	| INT MOVE_ BACK_ {fr->markerBackCmd($1);}
 	| INT MOVE_ TO_ internalSystem numeric numeric
-	  {fr->markerMoveToCmd($1, Vector($5,$6), (InternalSystem)$4);}
+	  {fr->markerMoveToCmd($1, Vector($5,$6), (Coord::InternalSystem)$4);}
 	| INT MOVE_ TO_ coordSystem skyFrame coord 
-	  {fr->markerMoveToCmd($1,Vector($6),(CoordSystem)$4,(SkyFrame)$5);}
+	  {fr->markerMoveToCmd($1,Vector($6),(Coord::CoordSystem)$4,(Coord::SkyFrame)$5);}
 
 	| INT POLYGON_ RESET_ numeric numeric internalSystem
-	  {fr->markerPolygonResetCmd($1, Vector($4,$5),(InternalSystem)$6);}
+	  {fr->markerPolygonResetCmd($1, Vector($4,$5),(Coord::InternalSystem)$6);}
 	| INT POLYGON_ RESET_ numeric numeric coordSystem skyDist
 	  {fr->markerPolygonResetCmd($1, Vector($4,$5),
-	    (CoordSystem)$6, (SkyDist)$7);}
-
+	    (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
+	| INT POINT_ SHAPE_ pointShape 
+	  {fr->markerPointShapeCmd($1,(Point::PointShape)$4);}
 	| INT POINT_ SIZE_ INT {fr->markerPointSizeCmd($1,$4);}
 
-	| INT PROJECTION_ internalSystem coord coord numeric INT 
+	| INT PROJECTION_ internalSystem coord coord numeric
 	  {fr->markerProjectionCmd($1, Vector($4), Vector($5),
-	    (InternalSystem)$3, $6, $7);}
-	| INT PROJECTION_ coordSystem skyFrame coord coord numeric INT 
+	    (Coord::InternalSystem)$3, $6);}
+	| INT PROJECTION_ coordSystem skyFrame coord coord numeric
 	    coordSystem skyDist
 	  {fr->markerProjectionCmd($1, Vector($5), Vector($6),
-	    (CoordSystem)$3, (SkyFrame)$4, $7, $8,
-	    (CoordSystem)$9, (SkyDist)$10);}
-	| INT PROJECTION_ SYSTEM_ coordSystem skyFrame
-	  {fr->markerProjectionSystemCmd($1,(CoordSystem)$4,(SkyFrame)$5);}
-
-	| INT CIRCLE3D_ numeric internalSystem INT
-	  {fr->markerCircle3dCmd($1, $3, (InternalSystem)$4, $5);}
-	| INT CIRCLE3D_ numeric coordSystem skyDist INT
-	  {fr->markerCircle3dCmd($1, $3, (CoordSystem)$4,(SkyDist)$5,$6);}
-	| INT CIRCLE3D_ SYSTEM_ coordSystem
-	  {fr->markerCircle3dSystemCmd($1,(CoordSystem)$4);}
-
+	    (Coord::CoordSystem)$3, (Coord::SkyFrame)$4, $7,
+	    (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
 	| INT PROPERTY_ markerProperty yesno 
 	  {fr->markerPropertyCmd($1,$3,$4);}
-	| INT ROTATE_ BEGIN_ {fr->markerRotateBeginCmd($1);}
 
+	| INT ROTATE_ BEGIN_ {fr->markerRotateBeginCmd($1);}
 	| INT RULER_ POINT_ internalSystem coord coord
 	  {fr->markerRulerPointCmd($1, Vector($5), Vector($6),
-	    (InternalSystem)$4);}
+	    (Coord::InternalSystem)$4);}
 	| INT RULER_ POINT_ coordSystem skyFrame coord coord
 	  {fr->markerRulerPointCmd($1, Vector($6), Vector($7),
-	    (CoordSystem)$4, (SkyFrame)$5);}
+	    (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 	| INT RULER_ SYSTEM_ coordSystem skyFrame coordSystem skyDist
-	  {fr->markerRulerSystemCmd($1, (CoordSystem)$4, (SkyFrame)$5,
-	    (CoordSystem)$6, (SkyDist)$7);}
+	  {fr->markerRulerSystemCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5,
+	    (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
 
 	| INT SELECT_ {fr->markerSelectCmd($1);}
 	| INT SELECT_ ONLY_ {fr->markerSelectOnlyCmd($1);}
+
 	| INT TAG_ STRING {fr->markerTagCmd($1,$3);}
 	| INT TEXT_ STRING {fr->markerTextCmd($1,$3);}
 	| INT TEXT_ ROTATE_ yesno {fr->markerTextRotateCmd($1,$4);}
+
 	| INT UNHIGHLITE_ {fr->markerUnhighliteCmd($1);}
 	| INT UNSELECT_ {fr->markerUnselectCmd($1);}
 
 	| INT VECTOR_ ARROW_ yesno {fr->markerVectorArrowCmd($1,$4);}
 	| INT VECTOR_ POINT_ internalSystem coord numeric angle
-	  {fr->markerVectorCmd($1, Vector($5), (InternalSystem)$4, $6, $7);}
+	  {fr->markerVectorCmd($1, Vector($5), (Coord::InternalSystem)$4, $6, $7);}
 	| INT VECTOR_ POINT_ coordSystem skyFrame coord 
 	    coordSystem skyDist numeric angle
-	  {fr->markerVectorCmd($1, Vector($6), (CoordSystem)$4, (SkyFrame)$5,
-	    $9, (CoordSystem)$7, (SkyDist)$8, $10);}
+	  {fr->markerVectorCmd($1, Vector($6), (Coord::CoordSystem)$4, (Coord::SkyFrame)$5,
+	    $9, (Coord::CoordSystem)$7, (Coord::SkyDist)$8, $10);}
 
 	| INT WIDTH_ INT {fr->markerLineWidthCmd($1,$3);}
 
@@ -1838,7 +1864,7 @@ marker	: CENTROID_ markerCentroid
 	| ROTATE_ END_ {fr->markerRotateEndCmd();}
 	| SAVE_ STRING markerFormat coordSystem skyFrame skyFormat yesno
 	  {fr->markerSaveCmd($2, (Base::MarkerFormat)$3,
-	    (CoordSystem)$4, (SkyFrame)$5, (SkyFormat)$6, $7);}
+	    (Coord::CoordSystem)$4, (Coord::SkyFrame)$5, (Coord::SkyFormat)$6, $7);}
 	| SAVE_ TEMPLATE_ STRING {fr->markerSaveTemplateCmd($3);}
 	| SELECT_ markerSelect
 
@@ -1855,9 +1881,9 @@ marker	: CENTROID_ markerCentroid
 	| STRING MOVE_ FRONT_ {fr->markerFrontCmd($1);}
 	| STRING MOVE_ BACK_ {fr->markerBackCmd($1);}
 	| STRING MOVE_ TO_ internalSystem coord 
-	  {fr->markerMoveToCmd($1,Vector($5),(InternalSystem)$4);}
+	  {fr->markerMoveToCmd($1,Vector($5),(Coord::InternalSystem)$4);}
 	| STRING MOVE_ TO_ coordSystem skyFrame coord 
-	  {fr->markerMoveToCmd($1,Vector($6),(CoordSystem)$4,(SkyFrame)$5);}
+	  {fr->markerMoveToCmd($1,Vector($6),(Coord::CoordSystem)$4,(Coord::SkyFrame)$5);}
 	| STRING PROPERTY_ markerProperty yesno 
 	  {fr->markerPropertyCmd($1,$3,$4);}
 	| STRING SELECT_ {fr->markerSelectCmd($1);}
@@ -1873,7 +1899,7 @@ marker	: CENTROID_ markerCentroid
 
 	| PASTE_ {fr->markerPasteCmd();}
 	| PASTE_ coordSystem coordSystem 
-	  {fr->markerPasteCmd((CoordSystem)$2, (CoordSystem)$3);}
+	  {fr->markerPasteCmd((Coord::CoordSystem)$2, (Coord::CoordSystem)$3);}
 	| UNDO_ {fr->markerUndoCmd();}
 	| UNHIGHLITE_ ALL_ {fr->markerUnhighliteAllCmd();}
 	| UNSELECT_ ALL_ {fr->markerUnselectAllCmd();}
@@ -1918,214 +1944,181 @@ markerCreate :
 	  CIRCLE_ numeric numeric 
 	    numeric 
 	    markerProperties
-	  {fr->createCircleCmd(fr->mapToRef(Vector($2,$3),CANVAS),
+	  {fr->createCircleCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
 	    $4,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| ANNULUS_ numeric numeric 
-	    numeric numeric INT 
-	    markerProperties
-	  {fr->createAnnulusCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    $4,$5,$6,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);}
-	| CPANDA_ numeric numeric 
-	    angle angle INT
-	    numeric numeric INT 
-	    markerProperties
-	  {fr->createCpandaCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    $4,$5,$6,
-	    $7,$8,$9,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);}
-
 	| ELLIPSE_ numeric numeric 
 	    numeric numeric 
 	    optangle 
 	    markerProperties
-	  {fr->createEllipseCmd(fr->mapToRef(Vector($2,$3),CANVAS),
+	  {fr->createEllipseCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
 	    Vector($4,$5),
 	    $6,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| ELLIPSEANNULUS_ numeric numeric 
-	    numeric numeric numeric INT 
-	    optangle 
-	    markerProperties
-	  {fr->createEllipseAnnulusCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    Vector($4,$5), 
-	    Vector($6,$6*$4/$5),$7,
-	    $8,
-	    currentColor,currentDash,currentWidth,currentFont, 
-	    currentText,currentProps,NULL,taglist,cblist);}
-	| EPANDA_ numeric numeric 
-	    angle angle INT
-	    numeric numeric numeric INT 
-	    optangle 
-	    markerProperties
-	  {fr->createEpandaCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    $4,$5,$6,
-	    Vector($7,$8),
-	    Vector($9,$9*$7/$8),$10,
-	    $11,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);}
-
 	| BOX_ numeric numeric 
 	    numeric numeric 
 	    optangle 
 	    markerProperties
-	  {fr->createBoxCmd(fr->mapToRef(Vector($2,$3),CANVAS),
+	  {fr->createBoxCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
 	    Vector($4,$5),
 	    $6,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| BOXANNULUS_ numeric numeric 
-	    numeric numeric numeric INT 
-	    optangle 
-	    markerProperties
-	  {fr->createBoxAnnulusCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    Vector($4,$5),Vector($6,$6*$4/$5),$7,
-	    $8,
-	    currentColor,currentDash,currentWidth,currentFont,
-	    currentText,currentProps,NULL,taglist,cblist);}
-	| BPANDA_ numeric numeric 
-	    angle angle INT
-	    numeric numeric numeric INT 
-	    optangle 
+	| POLYGON_ numeric numeric 
+	    numeric numeric 
 	    markerProperties
-	  {fr->createBpandaCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    $4,$5,$6,
-	    Vector($7,$8),
-	    Vector($9,$9*$7/$8),$10,
-	    $11,
+	  {fr->createPolygonCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    Vector($4,$5),
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-
 	| LINE_ numeric numeric 
 	    numeric numeric 
 	    markerProperties
-	  {fr->createLineCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    fr->mapToRef(Vector($4,$5),CANVAS),
+	  {fr->createLineCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    fr->mapToRef(Vector($4,$5),Coord::CANVAS),
 	    0, 0,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
 	| VECTOR_ numeric numeric 
 	    numeric numeric 
 	    markerProperties
-	  {fr->createVectCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    fr->mapToRef(Vector($4,$5),CANVAS),
+	  {fr->createVectCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    fr->mapToRef(Vector($4,$5),Coord::CANVAS),
 	    1,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| PROJECTION_ numeric numeric 
-	    numeric numeric 
-	    numeric 
+	| TEXT_ numeric numeric 
+	    optangle 
 	    markerProperties
-	  {fr->createProjectionCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    fr->mapToRef(Vector($4,$5),CANVAS),
-	    $6,
-	    NULL,NULL,
+	  {fr->createTextCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    $4, 1,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| PROJECTION_ numeric numeric 
-	    numeric numeric 
-	    numeric 
-	    STRING STRING 
-	    markerProperties
-	  {fr->createProjectionCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    fr->mapToRef(Vector($4,$5),CANVAS),
-	    $6,
-	    $7,$8,
+	| CIRCLE_ POINT_ numeric numeric pointSize markerProperties
+	  {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+	    Point::CIRCLE, $5,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| CIRCLE3D_ numeric numeric 
-	    numeric 
-	    markerProperties
-	  {fr->createCircle3dCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    $4,
-	    NULL,NULL,
+	| BOX_ POINT_ numeric numeric pointSize markerProperties
+	  {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+	    Point::BOX, $5,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| CIRCLE3D_ numeric numeric 
-	    numeric 
-	    STRING STRING 
-	    markerProperties
-	  {fr->createCircle3dCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    $4,
-	    $5,$6,
+	| DIAMOND_ POINT_ numeric numeric pointSize markerProperties
+	  {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+	    Point::DIAMOND, $5,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| RULER_ numeric numeric 
-	    numeric numeric 
-	    coordSystem skyFrame coordSystem skyDist
-	    markerProperties
-	  {fr->createRulerCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    fr->mapToRef(Vector($4,$5),CANVAS),
-	    (CoordSystem)$6, (SkyFrame)$7, (CoordSystem)$8, (SkyDist)$9,
+	| CROSS_ POINT_ numeric numeric pointSize markerProperties
+	  {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+	    Point::CROSS, $5,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-
-	| CIRCLE_ POINT_ numeric numeric pointSize
-	    markerProperties
-	  {fr->createCirclePointCmd(fr->mapToRef(Vector($3,$4),CANVAS), $5,
+	| 'X' POINT_ numeric numeric pointSize markerProperties
+	  {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+	    Point::EX, $5,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| BOX_ POINT_ numeric numeric pointSize
-	    markerProperties
-	  {fr->createBoxPointCmd(fr->mapToRef(Vector($3,$4),CANVAS), $5,
+	| ARROW_ POINT_ numeric numeric pointSize markerProperties
+	  {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+	    Point::ARROW, $5,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| DIAMOND_ POINT_ numeric numeric pointSize
-	    markerProperties
-	  {fr->createDiamondPointCmd(fr->mapToRef(Vector($3,$4),CANVAS), $5,
+	| BOXCIRCLE_ POINT_ numeric numeric pointSize markerProperties
+	  {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+	    Point::BOXCIRCLE, $5,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| CROSS_ POINT_ numeric numeric pointSize
+
+	| RULER_ numeric numeric 
+	    numeric numeric 
+	    coordSystem skyFrame coordSystem skyDist
 	    markerProperties
-	  {fr->createCrossPointCmd(fr->mapToRef(Vector($3,$4),CANVAS), $5,
+	  {fr->createRulerCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    fr->mapToRef(Vector($4,$5),Coord::CANVAS),
+	    (Coord::CoordSystem)$6, (Coord::SkyFrame)$7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| 'X' POINT_ numeric numeric pointSize
+	| COMPASS_ numeric numeric 
+	    numeric 
+	    coordSystem skyFrame
 	    markerProperties
-	  {fr->createExPointCmd(fr->mapToRef(Vector($3,$4),CANVAS), $5,
+	  {fr->createCompassCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS), 
+	    $4,
+	    "N", "E", 1, 1,
+	    (Coord::CoordSystem)$5, (Coord::SkyFrame)$6,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| ARROW_ POINT_ numeric numeric pointSize
+	| PROJECTION_ numeric numeric 
+	    numeric numeric 
+	    numeric 
 	    markerProperties
-	  {fr->createArrowPointCmd(fr->mapToRef(Vector($3,$4),CANVAS), $5,
+	  {fr->createProjectionCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    fr->mapToRef(Vector($4,$5),Coord::CANVAS),
+	    $6,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-	| BOXCIRCLE_ POINT_ numeric numeric pointSize
+
+	| ANNULUS_ numeric numeric 
+	    numeric numeric INT 
 	    markerProperties
-	  {fr->createBoxCirclePointCmd(fr->mapToRef(Vector($3,$4),CANVAS), $5,
+	  {fr->createAnnulusCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    $4,$5,$6,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-
-	| TEXT_ numeric numeric 
+	| ELLIPSEANNULUS_ numeric numeric 
+	    numeric numeric numeric INT 
 	    optangle 
 	    markerProperties
-	  {fr->createTextCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    $4, 1,
+	  {fr->createEllipseAnnulusCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    Vector($4,$5), 
+	    Vector($6,$6*$4/$5),$7,
+	    $8,
+	    currentColor,currentDash,currentWidth,currentFont, 
+	    currentText,currentProps,NULL,taglist,cblist);}
+	| BOXANNULUS_ numeric numeric 
+	    numeric numeric numeric INT 
+	    optangle 
+	    markerProperties
+	  {fr->createBoxAnnulusCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    Vector($4,$5),Vector($6,$6*$4/$5),$7,
+	    $8,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
 
-	| POLYGON_ numeric numeric 
-	    numeric numeric 
+	| CPANDA_ numeric numeric 
+	    angle angle INT
+	    numeric numeric INT 
 	    markerProperties
-	  {fr->createPolygonCmd(fr->mapToRef(Vector($2,$3),CANVAS),
-	    Vector($4,$5),
+	  {fr->createCpandaCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    $4,$5,$6,
+	    $7,$8,$9,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
-
-	| COMPASS_ numeric numeric 
-	    numeric 
-	    coordSystem skyFrame
+	| EPANDA_ numeric numeric 
+	    angle angle INT
+	    numeric numeric numeric INT 
+	    optangle 
 	    markerProperties
-	  {fr->createCompassCmd(fr->mapToRef(Vector($2,$3),CANVAS), 
-	    $4,
-	    "N", "E", 1, 1,
-	    (CoordSystem)$5, (SkyFrame)$6,
+	  {fr->createEpandaCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    $4,$5,$6,
+	    Vector($7,$8),
+	    Vector($9,$9*$7/$8),$10,
+	    $11,
+	    currentColor,currentDash,currentWidth,currentFont,
+	    currentText,currentProps,NULL,taglist,cblist);}
+	| BPANDA_ numeric numeric 
+	    angle angle INT
+	    numeric numeric numeric INT 
+	    optangle 
+	    markerProperties
+	  {fr->createBpandaCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+	    $4,$5,$6,
+	    Vector($7,$8),
+	    Vector($9,$9*$7/$8),$10,
+	    $11,
 	    currentColor,currentDash,currentWidth,currentFont,
 	    currentText,currentProps,NULL,taglist,cblist);}
 
@@ -2138,16 +2131,16 @@ markerCreate :
 	;
 
 markerCreateTemplate : STRING numeric numeric
-	  {fr->createTemplateCmd(fr->mapToRef(Vector($2,$3),CANVAS), $1);}
+	  {fr->createTemplateCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS), $1);}
 	| VAR_ STRING numeric numeric
-	  {fr->createTemplateVarCmd(fr->mapToRef(Vector($3,$4),CANVAS), $2);}
+	  {fr->createTemplateVarCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS), $2);}
 	| numeric numeric VAR_ STRING 
 	  { 
 	    // backward compatibility
-	    fr->createTemplateVarCmd(fr->mapToRef(Vector($1,$2),CANVAS), $4);
+	    fr->createTemplateVarCmd(fr->mapToRef(Vector($1,$2),Coord::CANVAS), $4);
 	  }
 	| STRING coordSystem skyFrame coord
-	  {fr->createTemplateCmd(Vector($4),(CoordSystem)$2,(SkyFrame)$3, $1);}
+	  {fr->createTemplateCmd(Vector($4),(Coord::CoordSystem)$2,(Coord::SkyFrame)$3, $1);}
 	;
 
 markerDash : INT INT {$$[0] = $1; $$[1] = $2;}
@@ -2174,135 +2167,138 @@ markerGet : CENTROID_ markerGetCentroid
 	| FONT_ {fr->getMarkerFontCmd();}
 	| HANDLE_ numeric numeric {fr->getMarkerHandleCmd(Vector($2,$3));}
 	| ID_ numeric numeric {fr->getMarkerIdCmd(Vector($2,$3));}
+
+	| INT ANALYSIS_ PLOT2D_ STRING STRING STRING STRING
+	  {fr->getMarkerAnalysisPlot2dCmd($1,$4,$5,$6,$7);}
+	| INT ANALYSIS_ PLOT3D_ STRING STRING
+	  {fr->getMarkerAnalysisPlot3dCmd($1,$4,$5);}
+	| INT ANALYSIS_ PARAM_ {fr->getMarkerAnalysisParamCmd($1);} 
+	| INT ANALYSIS_ SYSTEM_ {fr->getMarkerAnalysisSystemCmd($1);}
+
 	| ID_ ALL_ {fr->getMarkerIdAllCmd();}
 	| INT ANGLE_ {fr->getMarkerAngleCmd($1);}
 	| INT ANGLE_ internalSystem  {fr->getMarkerAngleCmd($1);}
 	| INT ANGLE_ coordSystem skyFrame
-	  {fr->getMarkerAngleCmd($1,(CoordSystem)$3, (SkyFrame)$4);}
+	  {fr->getMarkerAngleCmd($1,(Coord::CoordSystem)$3, (Coord::SkyFrame)$4);}
 	| INT ANNULUS_ RADIUS_ internalSystem
-	  {fr->getMarkerAnnulusRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerAnnulusRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT ANNULUS_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerAnnulusRadiusCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerAnnulusRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+
 	| INT BOXANNULUS_ RADIUS_ internalSystem
-	  {fr->getMarkerBoxAnnulusRadiusCmd($1,(InternalSystem)$4);}
+	  {fr->getMarkerBoxAnnulusRadiusCmd($1,(Coord::InternalSystem)$4);}
 	| INT BOXANNULUS_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerBoxAnnulusRadiusCmd($1,(CoordSystem)$4,(SkyDist)$5);}
+	  {fr->getMarkerBoxAnnulusRadiusCmd($1,(Coord::CoordSystem)$4,(Coord::SkyDist)$5);}
 	| INT BOX_ RADIUS_ internalSystem
-	  {fr->getMarkerBoxRadiusCmd($1,(InternalSystem)$4);}
+	  {fr->getMarkerBoxRadiusCmd($1,(Coord::InternalSystem)$4);}
 	| INT BOX_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerBoxRadiusCmd($1,(CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerBoxRadiusCmd($1,(Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT BPANDA_ ANGLE_ {fr->getMarkerBpandaAnglesCmd($1);}
 	| INT BPANDA_ ANGLE_ internalSystem {fr->getMarkerBpandaAnglesCmd($1);}
 	| INT BPANDA_ ANGLE_ coordSystem skyFrame
-	  {fr->getMarkerBpandaAnglesCmd($1, (CoordSystem)$4, (SkyFrame)$5);}
+	  {fr->getMarkerBpandaAnglesCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 	| INT BPANDA_ RADIUS_ internalSystem
-	  {fr->getMarkerBpandaRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerBpandaRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT BPANDA_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerBpandaRadiusCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerBpandaRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+
 	| INT CENTER_ internalSystem
-	  {fr->getMarkerCenterCmd($1, (InternalSystem)$3);}
+	  {fr->getMarkerCenterCmd($1, (Coord::InternalSystem)$3);}
 	| INT CENTER_ coordSystem skyFrame skyFormat 
-	  {fr->getMarkerCenterCmd($1, (CoordSystem)$3, (SkyFrame)$4, 
-	    (SkyFormat)$5);}
+	  {fr->getMarkerCenterCmd($1, (Coord::CoordSystem)$3, (Coord::SkyFrame)$4, 
+	    (Coord::SkyFormat)$5);}
 	| INT CIRCLE_ RADIUS_ internalSystem
-	  {fr->getMarkerCircleRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerCircleRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT CIRCLE_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerCircleRadiusCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerCircleRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT COLOR_ {fr->getMarkerColorCmd($1);}
 	| INT COMPASS_ ARROW_ {fr->getMarkerCompassArrowCmd($1);}
 	| INT COMPASS_ LABEL_ {fr->getMarkerCompassLabelCmd($1);}
 	| INT COMPASS_ RADIUS_ internalSystem
-	  {fr->getMarkerCompassRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerCompassRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT COMPASS_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerCompassRadiusCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerCompassRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT COMPASS_ SYSTEM_ {fr->getMarkerCompassSystemCmd($1);}
 	| INT COMPOSITE_ GLOBAL_ {fr->getMarkerCompositeCmd($1);}
 	| INT CPANDA_ ANGLE_ {fr->getMarkerCpandaAnglesCmd($1);}
 	| INT CPANDA_ ANGLE_ internalSystem {fr->getMarkerCpandaAnglesCmd($1);}
 	| INT CPANDA_ ANGLE_ coordSystem skyFrame
-	  {fr->getMarkerCpandaAnglesCmd($1, (CoordSystem)$4, (SkyFrame)$5);}
+	  {fr->getMarkerCpandaAnglesCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 	| INT CPANDA_ RADIUS_ internalSystem
-	  {fr->getMarkerCpandaRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerCpandaRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT CPANDA_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerCpandaRadiusCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerCpandaRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT ELLIPSE_ RADIUS_ internalSystem
-	  {fr->getMarkerEllipseRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerEllipseRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT ELLIPSE_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerEllipseRadiusCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerEllipseRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT ELLIPSEANNULUS_ RADIUS_ internalSystem
-	  {fr->getMarkerEllipseAnnulusRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerEllipseAnnulusRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT ELLIPSEANNULUS_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerEllipseAnnulusRadiusCmd($1, (CoordSystem)$4, 
-	    (SkyDist)$5);}
+	  {fr->getMarkerEllipseAnnulusRadiusCmd($1, (Coord::CoordSystem)$4, 
+	    (Coord::SkyDist)$5);}
 	| INT EPANDA_ ANGLE_ {fr->getMarkerEpandaAnglesCmd($1);}
 	| INT EPANDA_ ANGLE_ internalSystem {fr->getMarkerEpandaAnglesCmd($1);}
 	| INT EPANDA_ ANGLE_ coordSystem skyFrame
-	  {fr->getMarkerEpandaAnglesCmd($1, (CoordSystem)$4, (SkyFrame)$5);}
+	  {fr->getMarkerEpandaAnglesCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 	| INT EPANDA_ RADIUS_ internalSystem
-	  {fr->getMarkerEpandaRadiusCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerEpandaRadiusCmd($1, (Coord::InternalSystem)$4);}
 	| INT EPANDA_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerEpandaRadiusCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerEpandaRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT FONT_ {fr->getMarkerFontCmd($1);}
 	| INT HIGHLITE_ {fr->getMarkerHighlitedCmd($1);}
 	| INT LINE_ ARROW_ {fr->getMarkerLineArrowCmd($1);}
 	| INT LINE_ LENGTH_ coordSystem skyDist
-	  {fr->getMarkerLineLengthCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerLineLengthCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT LINE_ POINT_ internalSystem
-	  {fr->getMarkerLineCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerLineCmd($1, (Coord::InternalSystem)$4);}
 	| INT LINE_ POINT_ coordSystem skyFrame skyFormat
-	  {fr->getMarkerLineCmd($1, (CoordSystem)$4,
-	    (SkyFrame)$5, (SkyFormat)$6);}
+	  {fr->getMarkerLineCmd($1, (Coord::CoordSystem)$4,
+	    (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
 	| INT MAP_ LENGTH_ numeric coordSystem skyDist
 	  {fr->getMarkerMapLenFromRefCmd($1, $4,
-	    (CoordSystem)$5,(SkyDist)$6);}
+	    (Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
+
+	| INT POINT_ SHAPE_ {fr->getMarkerPointShapeCmd($1);}
 	| INT POINT_ SIZE_ {fr->getMarkerPointSizeCmd($1);}
-	| INT PROJECTION_ STRING STRING STRING STRING
-	  {fr->getMarkerProjectionCmd($1,$3,$4,$5,$6);}
 	| INT PROJECTION_ POINT_ internalSystem
-	  {fr->getMarkerProjectionPointsCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerProjectionPointsCmd($1, (Coord::InternalSystem)$4);}
 	| INT PROJECTION_ POINT_ coordSystem skyFrame skyFormat
-	  {fr->getMarkerProjectionPointsCmd($1, (CoordSystem)$4,
-	    (SkyFrame)$5, (SkyFormat)$6);}
+	  {fr->getMarkerProjectionPointsCmd($1, (Coord::CoordSystem)$4,
+	    (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
 	| INT PROJECTION_ LENGTH_ coordSystem skyDist
-	  {fr->getMarkerProjectionLengthCmd($1, (CoordSystem)$4, 
-	    (SkyDist)$5);}
-	| INT PROJECTION_ METHOD_ {fr->getMarkerProjectionMethodCmd($1);} 
+	  {fr->getMarkerProjectionLengthCmd($1, (Coord::CoordSystem)$4, 
+	    (Coord::SkyDist)$5);}
 	| INT PROJECTION_ THICK_ internalSystem
-	  {fr->getMarkerProjectionWidthCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerProjectionWidthCmd($1, (Coord::InternalSystem)$4);}
 	| INT PROJECTION_ THICK_ coordSystem skyDist
-	  {fr->getMarkerProjectionWidthCmd($1,(CoordSystem)$4,(SkyDist)$5);}
-	| INT PROJECTION_ SYSTEM_ {fr->getMarkerProjectionSystemCmd($1);}
-	| INT CIRCLE3D_ STRING STRING STRING
-	  {fr->getMarkerCircle3dCmd($1,$3,$4,$5);}
-	| INT CIRCLE3D_ METHOD_ {fr->getMarkerCircle3dMethodCmd($1);} 
-	| INT CIRCLE3D_ RADIUS_ coordSystem skyDist
-	  {fr->getMarkerCircle3dRadiusCmd($1, 
-	    (CoordSystem)$4, (SkyDist)$5);}
-	| INT CIRCLE3D_ SYSTEM_ {fr->getMarkerCircle3dSystemCmd($1);}
+	  {fr->getMarkerProjectionWidthCmd($1,(Coord::CoordSystem)$4,(Coord::SkyDist)$5);}
 	| INT PROPERTY_ {fr->getMarkerPropertyCmd($1);}
 	| INT PROPERTY_ markerProperty {fr->getMarkerPropertyCmd($1,$3);}
 	| INT RULER_ LENGTH_ coordSystem skyDist
-	  {fr->getMarkerRulerLengthCmd($1,(CoordSystem)$4,(SkyDist)$5);}
+	  {fr->getMarkerRulerLengthCmd($1,(Coord::CoordSystem)$4,(Coord::SkyDist)$5);}
 	| INT RULER_ POINT_ internalSystem
-	  {fr->getMarkerRulerPointCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerRulerPointCmd($1, (Coord::InternalSystem)$4);}
 	| INT RULER_ POINT_ coordSystem skyFrame skyFormat
-	  {fr->getMarkerRulerPointCmd($1, (CoordSystem)$4,
-	    (SkyFrame)$5, (SkyFormat)$6);}
+	  {fr->getMarkerRulerPointCmd($1, (Coord::CoordSystem)$4,
+	    (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
 	| INT RULER_ SYSTEM_ {fr->getMarkerRulerSystemCmd($1);}
 	| INT SELECT_ {fr->getMarkerSelectedCmd($1);}
+
 	| INT TAG_ {fr->getMarkerTagCmd($1);}
 	| INT TAG_ INT {fr->getMarkerTagCmd($1,$3);}
 	| INT TEXT_ {fr->getMarkerTextCmd($1);}
 	| INT TEXT_ ROTATE_ {fr->getMarkerTextRotateCmd($1);}
 	| INT TYPE_ {fr->getMarkerTypeCmd($1);}
+
 	| INT VECTOR_ ARROW_ {fr->getMarkerVectorArrowCmd($1);}
 	| INT VECTOR_ LENGTH_ coordSystem skyDist
-	  {fr->getMarkerVectorLengthCmd($1, (CoordSystem)$4, (SkyDist)$5);}
+	  {fr->getMarkerVectorLengthCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
 	| INT VECTOR_ POINT_ internalSystem
-	  {fr->getMarkerVectorCmd($1, (InternalSystem)$4);}
+	  {fr->getMarkerVectorCmd($1, (Coord::InternalSystem)$4);}
 	| INT VECTOR_ POINT_ coordSystem skyFrame skyFormat
-	  {fr->getMarkerVectorCmd($1, (CoordSystem)$4,
-	    (SkyFrame)$5, (SkyFormat)$6);}
+	  {fr->getMarkerVectorCmd($1, (Coord::CoordSystem)$4,
+	    (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
 	| INT WIDTH_ {fr->getMarkerLineWidthCmd($1);}
 	| HIGHLITE_ markerGetHighlite
 	| HIGHLITE_ NUMBER_ {fr->getMarkerHighlitedNumberCmd();}
@@ -2369,12 +2365,12 @@ markerLayer : /* empty */ {fr->markerLayerCmd(Base::USER);}
 markerList : markerFormat coordSystem skyFrame skyFormat 
 	    yesno markerQuery markerTags
 	  {fr->markerListCmd((Base::MarkerFormat)$1,
-	    (CoordSystem)$2, (SkyFrame)$3, (SkyFormat)$4, $5,
+	    (Coord::CoordSystem)$2, (Coord::SkyFrame)$3, (Coord::SkyFormat)$4, $5,
 	    0, propQMask, propQValue, taglist);}
 	| SELECT_ markerFormat coordSystem skyFrame skyFormat 
 	    yesno markerQuery markerTags
 	  {fr->markerListCmd((Base::MarkerFormat)$2, 
-	    (CoordSystem)$3, (SkyFrame)$4, (SkyFormat)$5, $6,
+	    (Coord::CoordSystem)$3, (Coord::SkyFrame)$4, (Coord::SkyFormat)$5, $6,
 	    1, propQMask, propQValue, taglist);}
 	;
 
@@ -2382,12 +2378,12 @@ markerLoad : markerFormat STRING
 	  {fr->markerLoadCmd((Base::MarkerFormat)$1,$2);}
 	| markerFormat STRING coordSystem skyFrame
 	  {fr->markerLoadCmd((Base::MarkerFormat)$1,$2,
-	    (CoordSystem)$3,(SkyFrame)$4);}
+	    (Coord::CoordSystem)$3,(Coord::SkyFrame)$4);}
 	| markerFormat INT
 	  {fr->markerLoadCmd((Base::MarkerFormat)$1,$2);}
 	| markerFormat INT coordSystem skyFrame
 	  {fr->markerLoadCmd((Base::MarkerFormat)$1,$2,
-	    (CoordSystem)$3,(SkyFrame)$4);}
+	    (Coord::CoordSystem)$3,(Coord::SkyFrame)$4);}
 	| FITS_ STRING STRING markerDash INT STRING 
 	  {fr->markerLoadFitsCmd($2, $3, $4, $5, $6);}
 	;
@@ -2399,9 +2395,9 @@ markerMoveSelected : numeric numeric {fr->markerMoveCmd(Vector($1,$2));}
 	| MOTION_ numeric numeric {fr->markerMoveMotionCmd(Vector($2,$3));}
 	| END_ {fr->markerMoveEndCmd();}
 	| TO_ internalSystem coord 
-	  {fr->markerMoveToCmd(Vector($3), (InternalSystem)$2);}
+	  {fr->markerMoveToCmd(Vector($3), (Coord::InternalSystem)$2);}
 	| TO_ coordSystem skyFrame coord 
-	  {fr->markerMoveToCmd(Vector($4), (CoordSystem)$2, (SkyFrame)$3);}
+	  {fr->markerMoveToCmd(Vector($4), (Coord::CoordSystem)$2, (Coord::SkyFrame)$3);}
 	;
 
 markerProps : markerProps markerProp
@@ -2478,10 +2474,10 @@ mask	: CLEAR_ {fr->maskClearCmd();}
 	| TRANSPARENCY_ numeric {fr->maskTransparencyCmd($2);}
 	;
 
-orient	: 'X' {fr->orientCmd(XX);}
-	| 'Y' {fr->orientCmd(YY);}
-	| XY_ {fr->orientCmd(XY);}
-	| NONE_ {fr->orientCmd(NORMAL);}
+orient	: 'X' {fr->orientCmd(Coord::XX);}
+	| 'Y' {fr->orientCmd(Coord::YY);}
+	| XY_ {fr->orientCmd(Coord::XY);}
+	| NONE_ {fr->orientCmd(Coord::NORMAL);}
 	;
 
 pan	: numeric numeric numeric numeric 
@@ -2493,7 +2489,7 @@ pan	: numeric numeric numeric numeric
 	  fr->panCmd(Vector($2,$3));
 	}
 	| coordSystem skyFrame coord
-	    {fr->panCmd(Vector($3), (CoordSystem)$1, (SkyFrame)$2);}
+	    {fr->panCmd(Vector($3), (Coord::CoordSystem)$1, (Coord::SkyFrame)$2);}
 	| TO_ panTo
 	| BBOX_ numeric numeric {fr->panBBoxCmd(Vector($2,$3));}
 	| MOTION_ panMotion
@@ -2507,7 +2503,7 @@ panTo	: numeric numeric {fr->panToCmd(Vector($1,$2));}
 	  fr->panToCmd(Vector($2,$3));
 	}
 	| coordSystem skyFrame coord
-	    {fr->panToCmd(Vector($3), (CoordSystem)$1, (SkyFrame)$2);}
+	    {fr->panToCmd(Vector($3), (Coord::CoordSystem)$1, (Coord::SkyFrame)$2);}
 	;
 
 panMotion : BEGIN_ numeric numeric {fr->panBeginCmd(Vector($2,$3));}
@@ -2517,7 +2513,7 @@ panMotion : BEGIN_ numeric numeric {fr->panBeginCmd(Vector($2,$3));}
 
 panner	: yesno {fr->pannerCmd($1);}
 	| WCS_ wcsSystem skyFrame 
-	  {fr->pannerCmd((CoordSystem)$2,(SkyFrame)$3);}
+	  {fr->pannerCmd((Coord::CoordSystem)$2,(Coord::SkyFrame)$3);}
 	| STRING INT INT {fr->pannerCmd($1, $2, $3);}
 	| UPDATE_ {fr->updatePannerCmd();}
 	;
@@ -2559,7 +2555,7 @@ renderMethod: MIP_ {$$ = Frame3dBase::MIP;}
 	;
 
 rgb	: CHANNEL_ STRING {fr->setRGBChannelCmd($2);}
-	| SYSTEM_ coordSystem {fr->setRGBSystemCmd((CoordSystem)$2);}
+	| SYSTEM_ coordSystem {fr->setRGBSystemCmd((Coord::CoordSystem)$2);}
 	| VIEW_ INT INT INT {fr->setRGBViewCmd($2,$3,$4);}
 	;
 
@@ -2577,6 +2573,7 @@ rotateMotion : BEGIN_ {fr->rotateBeginCmd();}
 
 save	: ARRAY_ saveArray
 	| FITS_ saveFits
+	| PHOTO_ STRING {fr->savePhotoCmd($2);}
 	;
 
 saveArray : FILE_ STRING endian 
@@ -2637,7 +2634,7 @@ warp	: numeric numeric {fr->warpCmd(Vector($1,$2));}
 	;
 
 wcs	: wcsSystem skyFrame skyFormat 
-	  {fr->wcsCmd((CoordSystem)$1, (SkyFrame)$2, (SkyFormat)$3);}
+	  {fr->wcsCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3);}
 	| ALIGN_ wcsAlign
 	| RESET_ INT {fr->wcsResetCmd($2);}
 	| REPLACE_ wcsReplace
@@ -2658,10 +2655,10 @@ wcsAlign : INT {fr->wcsAlignCmd($1);}
 	|  INT wcsSystem skyFrame 
  	  {
 	    // used by backup
-	    fr->wcsAlignCmd($1, (CoordSystem)$2, (SkyFrame)$3);
+	    fr->wcsAlignCmd($1, (Coord::CoordSystem)$2, (Coord::SkyFrame)$3);
 	  }
 	| INT POINTER wcsSystem
-	  {fr->wcsAlignCmd($1, (FitsImage*)$2, (CoordSystem)$3);}
+	  {fr->wcsAlignCmd($1, (FitsImage*)$2, (Coord::CoordSystem)$3);}
 	;
 
 win32	: PRINT_ {
@@ -2681,7 +2678,7 @@ zoom	: numeric numeric {fr->zoomCmd(Vector($1,$2));}
 	}
 	| numeric numeric ABOUT_ coordSystem skyFrame coord
 	  {fr->zoomAboutCmd(Vector($1,$2),Vector($6),
-	    (CoordSystem)$4,(SkyFrame)$5);}
+	    (Coord::CoordSystem)$4,(Coord::SkyFrame)$5);}
 	| TO_ zoomTo
 	;
 
@@ -2697,7 +2694,7 @@ zoomTo	: FIT_	{fr->zoomToFitCmd(1);}
 	}
 	| numeric numeric ABOUT_ coordSystem skyFrame coord
 	  {fr->zoomToAboutCmd(Vector($1,$2), Vector($6),
-	    (CoordSystem)$4, (SkyFrame)$5);}
+	    (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
 	;
 
 %%
diff --git a/saotk/frame/point.C b/saotk/frame/point.C
index 7810a23..e5534e8 100644
--- a/saotk/frame/point.C
+++ b/saotk/frame/point.C
@@ -3,25 +3,29 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "point.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 #define NUMSEG 16
 
 Point::Point(const Point& a) : Marker(a)
 {
-  strncpy(pointtype,a.pointtype,16);
+  shape_ = a.shape_;
+  shapestr_ = dupstr(a.shapestr_);
   size_ = a.size_;
 }
 
-Point::Point(Base* p, const Vector& ctr, int size,
+Point::Point(Base* p, const Vector& ctr, 
+	     PointShape ss, int size,
 	     const char* clr, int* dsh, 
 	     int wth, const char* fnt, const char* txt,
 	     unsigned short prop, const char* cmt,
 	     const List<Tag>& tg, const List<CallBack>& cb)
   : Marker(p, ctr, 0, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
 {
-  pointtype[0] = '\0';
+  strcpy(type_, "point");
+
+  shape_ = ss;
+  shapeStr(ss);
   size_ = size;
 
   handle = new Vector[4];
@@ -30,115 +34,63 @@ Point::Point(Base* p, const Vector& ctr, int size,
   updateBBox();
 }
 
-// Support
-
-void Point::updateHandles()
+Point::~Point()
 {
-  // bound marker
-  double ss = size_/2;
-  Vector cc = center*parent->refToCanvas;
-
-  Vector lla = cc+Vector(-ss,-ss);
-  Vector llb = lla*parent->canvasToRef;
-  Vector ll = parent->mapFromRef(llb,CANVAS);
-
-  Vector lra = cc+Vector(-ss,ss);
-  Vector lrb = lra*parent->canvasToRef;
-  Vector lr = parent->mapFromRef(lrb,CANVAS);
-
-  Vector ura = cc+Vector(ss,ss);
-  Vector urb = ura*parent->canvasToRef;
-  Vector ur = parent->mapFromRef(urb,CANVAS);
-
-  Vector ula = cc+Vector(ss,-ss);
-  Vector ulb = ula*parent->canvasToRef;
-  Vector ul = parent->mapFromRef(ulb,CANVAS);
-
-  handle[0] = ll;
-  handle[1] = lr;
-  handle[2] = ur;
-  handle[3] = ul;
+  if (shapestr_)
+    delete [] shapestr_;
 }
 
-void Point::setSize(int size)
-{
-  size_ = size;
-  updateBBox();
-  doCallBack(CallBack::EDITCB);
-}
+// X11
 
-// Box
-Vector* Point::generateBox(InternalSystem sys)
+void Point::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
-  Vector* vv = new Vector[5];
-
-  Matrix mm;
-  Matrix nn;
-  setMatrices(sys,&mm,&nn);
-
-  double ss = size_/2;
-  Vector cc = center*mm;
-
-  Vector v1a = cc+Vector(-ss,-ss);
-  Vector v1b = v1a*nn;
-  vv[0] = parent->mapFromRef(v1b,sys);
-  
-  Vector v2a = cc+Vector(-ss,ss);
-  Vector v2b = v2a*nn;
-  vv[1] = parent->mapFromRef(v2b,sys);
-
-  Vector v3a = cc+Vector(ss,ss);
-  Vector v3b = v3a*nn;
-  vv[2] = parent->mapFromRef(v3b,sys);
-
-  Vector v4a = cc+Vector(ss,-ss);
-  Vector v4b = v4a*nn;
-  vv[3] = parent->mapFromRef(v4b,sys);
-
-  vv[4] = vv[0];
-
-  return vv;
-}
-
-Vector* Point::generateCircle(InternalSystem sys, int ss)
-{
-  Vector* vv = new Vector[NUMSEG+1];
-
-  Matrix mm;
-  Matrix nn;
-  setMatrices(sys,&mm,&nn);
-
-  Vector cc = center*mm;
+  GC lgc = renderXGC(mode);
+  Vector* vv = NULL;
 
-  for (int ii=0; ii<NUMSEG; ii++) {
-    double ang = ii*M_TWOPI/NUMSEG;
-    Vector xy = Vector(cos(ang)*ss/2, sin(ang)*ss/2);
-    Vector aa = cc+xy;
-    Vector bb = aa*nn;
-    vv[ii] = parent->mapFromRef(bb,sys);
+  switch (shape_) {
+  case CIRCLE:
+    renderXCircle(drawable, sys, mode, size_);
+    break;
+  case BOX:
+    renderXBox(drawable, sys, mode);
+    break;
+  case DIAMOND:
+    vv = generateDiamond(sys);
+    XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
+    XDrawLine(display, drawable, lgc, vv[1][0], vv[1][1], vv[2][0], vv[2][1]);
+    XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
+    XDrawLine(display, drawable, lgc, vv[3][0], vv[3][1], vv[0][0], vv[0][1]);
+    break;
+  case CROSS:
+    vv = generateCross(sys);
+    XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
+    XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
+    break;
+  case EX:
+    vv = generateEx(sys);
+    XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
+    XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
+    break;
+  case ARROW:
+    vv = generateArrow(sys);
+    XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[3][0], vv[3][1]);
+    XDrawLine(display, drawable, lgc, vv[1][0], vv[1][1], vv[3][0], vv[3][1]);
+    XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
+    break;
+  case BOXCIRCLE:
+    renderXBox(drawable, sys, mode);
+    renderXCircle(drawable, sys, mode, size_-2);
+    break;
   }
-  vv[NUMSEG] = vv[0];
 
-  return vv;
-}
-
-void Point::renderXBox(Drawable drawable, InternalSystem sys, RenderMode mode)
-{
-  GC lgc = renderXGC(mode);
-
-  Vector* vv = generateBox(sys);
-  XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
-  XDrawLine(display, drawable, lgc, vv[1][0], vv[1][1], vv[2][0], vv[2][1]);
-  XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
-  XDrawLine(display, drawable, lgc, vv[3][0], vv[3][1], vv[0][0], vv[0][1]);
-  delete [] vv;
+  if (vv)
+    delete [] vv;
 }
 
-void Point::renderXCircle(Drawable drawable, InternalSystem sys, 
+void Point::renderXCircle(Drawable drawable, Coord::InternalSystem sys, 
 			  RenderMode mode, int rr)
 {
   GC lgc = renderXGC(mode);
-
   if (parent->isAzElZero()) {
     Vector cc = parent->mapFromRef(center,sys);
     Vector v = cc*Translate(-Vector(rr,rr)/2);
@@ -158,6 +110,17 @@ void Point::renderXCircle(Drawable drawable, InternalSystem sys,
   }
 }
 
+void Point::renderXBox(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
+{
+  GC lgc = renderXGC(mode);
+  Vector* vv = generateBox(sys);
+  XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
+  XDrawLine(display, drawable, lgc, vv[1][0], vv[1][1], vv[2][0], vv[2][1]);
+  XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
+  XDrawLine(display, drawable, lgc, vv[3][0], vv[3][1], vv[0][0], vv[0][1]);
+  delete [] vv;
+}
+
 void Point::renderXLineDash(GC lgc)
 {
   char dlist[2];
@@ -168,36 +131,91 @@ void Point::renderXLineDash(GC lgc)
   XSetLineAttributes(display, lgc, ww, LineOnOffDash, CapButt, JoinMiter);
 }
 
-void Point::renderPSBox(int mode)
+// PS
+
+void Point::renderPS(int mode) 
 {
   renderPSGC(mode);
-
-  Vector* vv = generateBox(CANVAS);
+  Vector* vv =NULL;
   ostringstream str;
-  str << "newpath " 
-      << vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[1].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << vv[2].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << "closepath stroke" << endl
-      << ends;
-  Tcl_AppendResult(parent->interp, (char*)str.str().c_str(), NULL);
-  delete [] vv;
+
+  switch (shape_) {
+  case CIRCLE:
+    renderPSCircle(mode, size_);
+    break;
+  case BOX:
+    renderPSBox(mode);
+    break;
+  case DIAMOND:
+    vv = generateDiamond(Coord::CANVAS);
+    str << "newpath " 
+	<< vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[1].TkCanvasPs(parent->canvas) << " lineto" << endl
+	<< vv[2].TkCanvasPs(parent->canvas) << " lineto" << endl
+	<< vv[3].TkCanvasPs(parent->canvas) << " lineto" << endl
+	<< "closepath stroke" << endl
+	<< ends;
+    Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+    break;
+  case CROSS:
+    vv = generateCross(Coord::CANVAS);
+    str << "newpath " 
+	<< vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[1].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
+	<< "newpath " 
+	<< vv[2].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
+	<< "closepath stroke" << endl
+	<< ends;
+    Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+    break;
+  case EX:
+    vv = generateEx(Coord::CANVAS);
+    str << "newpath " 
+	<< vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[1].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
+	<< "newpath " 
+	<< vv[2].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
+	<< "closepath stroke" << endl
+	<< ends;
+    Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+    break;
+  case ARROW:
+    vv = generateArrow(Coord::CANVAS);
+    str << "newpath " 
+	<< vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
+	<< "newpath " 
+	<< vv[1].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
+	<< "newpath " 
+	<< vv[2].TkCanvasPs(parent->canvas) << " moveto" << endl
+	<< vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
+	<< ends;
+    Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
+    break;
+  case BOXCIRCLE:
+    renderPSBox(mode);
+    renderPSCircle(mode,size_-2);
+    break;
+  }
+
+  if (vv)
+    delete [] vv;
 }
 
 void Point::renderPSCircle(int mode, int ss)
 {
-  renderPSGC(mode);
-
   if (parent->isAzElZero()) {
-    Vector cc = parent->mapFromRef(center,CANVAS);
+    Vector cc = parent->mapFromRef(center,Coord::CANVAS);
     ostringstream str;
     str << "newpath " << cc.TkCanvasPs(parent->canvas) << ss/2.
 	<< " 0 360 arc stroke" << endl << ends;
     Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
   }
   else {
-    Vector* vv = generateCircle(CANVAS,ss);
+    Vector* vv = generateCircle(Coord::CANVAS,ss);
     ostringstream str;
     str << "newpath " << vv[0].TkCanvasPs(parent->canvas) << " moveto " << endl;
     for (int ii=1; ii<NUMSEG; ii++)
@@ -208,6 +226,21 @@ void Point::renderPSCircle(int mode, int ss)
   }
 }
 
+void Point::renderPSBox(int mode)
+{
+  Vector* vv = generateBox(Coord::CANVAS);
+  ostringstream str;
+  str << "newpath " 
+      << vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
+      << vv[1].TkCanvasPs(parent->canvas) << " lineto" << endl
+      << vv[2].TkCanvasPs(parent->canvas) << " lineto" << endl
+      << vv[3].TkCanvasPs(parent->canvas) << " lineto" << endl
+      << "closepath stroke" << endl
+      << ends;
+  Tcl_AppendResult(parent->interp, (char*)str.str().c_str(), NULL);
+  delete [] vv;
+}
+
 void Point::renderPSLineDash()
 {
   ostringstream str;
@@ -216,14 +249,48 @@ void Point::renderPSLineDash()
   Tcl_AppendResult(parent->interp, (char*)str.str().c_str(), NULL);
 }
 
+// MacOSX
+
 #ifdef _MACOSX
-void Point::renderMACOSXBox()
+void Point::renderMACOSX() 
 {
   renderMACOSXGC();
 
-  Vector* vv = generateBox(CANVAS);
-  macosxDrawLines(vv,5);
-  delete [] vv;
+  switch (shape_) {
+  case CIRCLE:
+    renderMACOSXCircle(size_);
+    break;
+  case BOX:
+    renderMACOSXBox();
+    break;
+  case DIAMOND:
+    vv = generateDiamond(Coord::CANVAS);
+    macosxDrawLines(vv,5);
+    break;
+  case CROSS:
+    vv = generateCross(Coord::CANVAS);
+    macosxDrawLine(vv[0],vv[1]);
+    macosxDrawLine(vv[2],vv[3]);
+    break;
+  case EX:
+    vv = generateEx(Coord::CANVAS);
+    macosxDrawLine(vv[0],vv[1]);
+    macosxDrawLine(vv[2],vv[3]);
+    break;
+  case ARROW:
+    vv = generateArrow(Coord::CANVAS);
+    macosxDrawLine(vv[0],vv[3]);
+    macosxDrawLine(vv[1],vv[3]);
+    macosxDrawLine(vv[2],vv[3]);
+    break;
+  case BOXCIRCLE:
+    renderMACOSXBox();
+    renderMACOSXCircle(size_-2);
+    break;
+  }
+
+  if (vv)
+    delete [] vv;
 }
 
 void Point::renderMACOSXCircle(int ss)
@@ -231,16 +298,25 @@ void Point::renderMACOSXCircle(int ss)
   renderMACOSXGC();
 
   if (parent->isAzElZero()) {
-    Vector cc = parent->mapFromRef(center,CANVAS);
+    Vector cc = parent->mapFromRef(center,Coord::CANVAS);
     macosxDrawArc(cc, ss/2., 0, M_TWOPI);
   }
   else {
-    Vector* vv = generateCircle(CANVAS, ss);
+    Vector* vv = generateCircle(Coord::CANVAS, ss);
     macosxDrawLines(vv,NUMSEG+1);
     delete [] vv;
   }
 }
 
+void Point::renderMACOSXBox()
+{
+  renderMACOSXGC();
+
+  Vector* vv = generateBox(Coord::CANVAS);
+  macosxDrawLines(vv,5);
+  delete [] vv;
+}
+
 void Point::renderMACOSXLineDash()
 {
   macosxWidth(lineWidth);
@@ -249,31 +325,71 @@ void Point::renderMACOSXLineDash()
 }
 #endif
 
+// WIN32
+
 #ifdef _WIN32
-void Point::renderWIN32Box()
+void Point::renderWIN32() 
 {
   renderWIN32GC();
+  Vector* vv = NULL;
 
-  Vector* vv = generateBox(CANVAS);
-  win32DrawLines(vv,5);
-  delete [] vv;
+  switch (shape_) {
+  case CIRCLE:
+    renderWIN32Circle(size_);
+    break;
+  case BOX:
+    renderWIN32Box();
+    break;
+  case DIAMOND:
+    vv = generateDiamond(Coord::CANVAS);
+    win32DrawLines(vv,5);
+    break;
+  case CROSS:
+    vv = generateCross(Coord::CANVAS);
+    win32DrawLine(vv[0],vv[1]);
+    win32DrawLine(vv[2],vv[3]);
+    break;
+  case EX:
+    vv = generateEx(Coord::CANVAS);
+    win32DrawLine(vv[0],vv[1]);
+    win32DrawLine(vv[2],vv[3]);
+    break;
+  case ARROW:
+    vv = generateArrow(Coord::CANVAS);
+    win32DrawLine(vv[0],vv[3]);
+    win32DrawLine(vv[1],vv[3]);
+    win32DrawLine(vv[2],vv[3]);
+    break;
+  case BOXCIRCLE:
+    renderWIN32Box();
+    renderWIN32Circle(size_-2);
+    break;
+  }
+
+  if (vv)
+    delete [] vv;
 }
 
 void Point::renderWIN32Circle(int ss)
 {
-  renderWIN32GC();
-
   if (parent->isAzElZero()) {
-    Vector cc = parent->mapFromRef(center,CANVAS);
+    Vector cc = parent->mapFromRef(center,Coord::CANVAS);
     win32DrawArc(cc, ss/2., 0, M_TWOPI);
   }
   else {
-    Vector* vv = generateCircle(CANVAS, ss);
+    Vector* vv = generateCircle(Coord::CANVAS, ss);
     win32DrawLines(vv,NUMSEG+1);
     delete [] vv;
   }
 }
 
+void Point::renderWIN32Box()
+{
+  Vector* vv = generateBox(Coord::CANVAS);
+  win32DrawLines(vv,5);
+  delete [] vv;
+}
+
 void Point::renderWIN32LineDash()
 {
   win32Width(lineWidth);
@@ -282,122 +398,63 @@ void Point::renderWIN32LineDash()
 }
 #endif
 
-CirclePoint::CirclePoint(const CirclePoint& a) : Point(a) {}
-
-CirclePoint::CirclePoint(Base* p, const Vector& ctr, int size,
-			 const char* clr, int* dsh, 
-			 int wth, const char* fnt, const char* txt,
-			 unsigned short prop, const char* cmt,
-			 const List<Tag>& tg, const List<CallBack>& cb)
-  : Point(p, ctr, size, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  strcpy(type,"circle point");
-  strcpy(pointtype,"circle");
-}
-
-void CirclePoint::renderX(Drawable drawable, InternalSystem sys, 
-			  RenderMode mode)
-{
-  renderXCircle(drawable,sys,mode,size_);
-}
-
-void CirclePoint::renderPS(int mode)
-{
-  renderPSCircle(mode, size_);
-}
+// Support
 
-#ifdef _MACOSX
-void CirclePoint::renderMACOSX()
+Vector* Point::generateCircle(Coord::InternalSystem sys, int ss)
 {
-  renderMACOSXCircle(size_);
-}
-#endif
-
-#ifdef _WIN32
-void CirclePoint::renderWIN32()
-{
-  renderWIN32Circle(size_);
-}
-#endif
+  Vector* vv = new Vector[NUMSEG+1];
 
-BoxPoint::BoxPoint(const BoxPoint& a) : Point(a) {}
+  Matrix mm;
+  Matrix nn;
+  setMatrices(sys,&mm,&nn);
 
-BoxPoint::BoxPoint(Base* p, const Vector& ctr, int size,
-		   const char* clr, int* dsh, 
-		   int wth, const char* fnt, const char* txt,
-		   unsigned short prop, const char* cmt,
-		   const List<Tag>& tg, const List<CallBack>& cb)
-  : Point(p, ctr, size, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  strcpy(type, "box point");
-  strcpy(pointtype, "box");
-}
+  Vector cc = center*mm;
 
-void BoxPoint::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
-{
-  GC lgc = renderXGC(mode);
+  for (int ii=0; ii<NUMSEG; ii++) {
+    double ang = ii*M_TWOPI/NUMSEG;
+    Vector xy = Vector(cos(ang)*ss/2, sin(ang)*ss/2);
+    Vector aa = cc+xy;
+    Vector bb = aa*nn;
+    vv[ii] = parent->mapFromRef(bb,sys);
+  }
+  vv[NUMSEG] = vv[0];
 
-  Vector* vv = generateBox(sys);
-  XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
-  XDrawLine(display, drawable, lgc, vv[1][0], vv[1][1], vv[2][0], vv[2][1]);
-  XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
-  XDrawLine(display, drawable, lgc, vv[3][0], vv[3][1], vv[0][0], vv[0][1]);
-  delete [] vv;
+  return vv;
 }
 
-void BoxPoint::renderPS(int mode)
+Vector* Point::generateBox(Coord::InternalSystem sys)
 {
-  renderPSGC(mode);
+  Vector* vv = new Vector[5];
 
-  Vector* vv = generateBox(CANVAS);
-  ostringstream str;
-  str << "newpath " 
-      << vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[1].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << vv[2].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << "closepath stroke" << endl
-      << ends;
-  Tcl_AppendResult(parent->interp, (char*)str.str().c_str(), NULL);
-  delete [] vv;
-}
+  Matrix mm;
+  Matrix nn;
+  setMatrices(sys,&mm,&nn);
 
-#ifdef _MACOSX
-void BoxPoint::renderMACOSX()
-{
-  renderMACOSXGC();
+  double ss = size_/2;
+  Vector cc = center*mm;
 
-  Vector* vv = generateBox(CANVAS);
-  macosxDrawLines(vv,5);
-  delete [] vv;
-}
-#endif
+  Vector v1a = cc+Vector(-ss,-ss);
+  Vector v1b = v1a*nn;
+  vv[0] = parent->mapFromRef(v1b,sys);
+  
+  Vector v2a = cc+Vector(-ss,ss);
+  Vector v2b = v2a*nn;
+  vv[1] = parent->mapFromRef(v2b,sys);
 
-#ifdef _WIN32
-void BoxPoint::renderWIN32()
-{
-  renderWIN32GC();
+  Vector v3a = cc+Vector(ss,ss);
+  Vector v3b = v3a*nn;
+  vv[2] = parent->mapFromRef(v3b,sys);
 
-  Vector* vv = generateBox(CANVAS);
-  win32DrawLines(vv,5);
-  delete [] vv;
-}
-#endif
+  Vector v4a = cc+Vector(ss,-ss);
+  Vector v4b = v4a*nn;
+  vv[3] = parent->mapFromRef(v4b,sys);
 
-DiamondPoint::DiamondPoint(const DiamondPoint& a) : Point(a) {}
+  vv[4] = vv[0];
 
-DiamondPoint::DiamondPoint(Base* p, const Vector& ctr, int size,
-			   const char* clr, int* dsh, 
-			   int wth, const char* fnt, const char* txt,
-			   unsigned short prop, const char* cmt,
-			   const List<Tag>& tg, const List<CallBack>& cb)
-  : Point(p, ctr, size, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  strcpy(type, "diamond point");
-  strcpy(pointtype, "diamond");
+  return vv;
 }
 
-Vector* DiamondPoint::generate(InternalSystem sys)
+Vector* Point::generateDiamond(Coord::InternalSystem sys)
 {
   Vector* vv = new Vector[5];
 
@@ -430,72 +487,7 @@ Vector* DiamondPoint::generate(InternalSystem sys)
   return vv;
 }
 
-void DiamondPoint::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
-{
-  GC lgc = renderXGC(mode);
-
-  // don't round
-  Vector* vv = generate(sys);
-  XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
-  XDrawLine(display, drawable, lgc, vv[1][0], vv[1][1], vv[2][0], vv[2][1]);
-  XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
-  XDrawLine(display, drawable, lgc, vv[3][0], vv[3][1], vv[0][0], vv[0][1]);
-  delete [] vv;
-}
-
-void DiamondPoint::renderPS(int mode)
-{
-  renderPSGC(mode);
-
-  Vector* vv = generate(CANVAS);
-  ostringstream str;
-  str << "newpath " 
-      << vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[1].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << vv[2].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto" << endl
-      << "closepath stroke" << endl
-      << ends;
-  Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
-  delete [] vv;
-}
-
-#ifdef _MACOSX
-void DiamondPoint::renderMACOSX()
-{
-  renderMACOSXGC();
-
-  Vector* vv = generate(CANVAS);
-  macosxDrawLines(vv,5);
-  delete [] vv;
-}
-#endif
-
-#ifdef _WIN32
-void DiamondPoint::renderWIN32()
-{
-  renderWIN32GC();
-
-  Vector* vv = generate(CANVAS);
-  win32DrawLines(vv,5);
-  delete [] vv;
-}
-#endif
-
-CrossPoint::CrossPoint(const CrossPoint& a) : Point(a) {}
-
-CrossPoint::CrossPoint(Base* p, const Vector& ctr, int size,
-		       const char* clr, int* dsh, 
-		       int wth, const char* fnt, const char* txt,
-		       unsigned short prop, const char* cmt,
-		       const List<Tag>& tg, const List<CallBack>& cb)
-  : Point(p, ctr, size, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  strcpy(type, "cross point");
-  strcpy(pointtype, "cross");
-}
-
-Vector* CrossPoint::generate(InternalSystem sys)
+Vector* Point::generateCross(Coord::InternalSystem sys)
 {
   Vector* vv = new Vector[4];
 
@@ -526,73 +518,7 @@ Vector* CrossPoint::generate(InternalSystem sys)
   return vv;
 }
 
-void CrossPoint::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
-{
-  GC lgc = renderXGC(mode);
-
-  // don't round
-  Vector* vv = generate(sys);
-  XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
-  XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
-  delete [] vv;
-}
-
-void CrossPoint::renderPS(int mode)
-{
-  renderPSGC(mode);
-
-  Vector* vv = generate(CANVAS);
-  ostringstream str;
-  str << "newpath " 
-      << vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[1].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
-      << "newpath " 
-      << vv[2].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
-      << "closepath stroke" << endl
-      << ends;
-  Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
-  delete [] vv;
-}
-
-#ifdef _MACOSX
-void CrossPoint::renderMACOSX()
-{
-  renderMACOSXGC();
-
-  Vector* vv = generate(CANVAS);
-  macosxDrawLine(vv[0],vv[1]);
-  macosxDrawLine(vv[2],vv[3]);
-  delete [] vv;
-}
-#endif
-
-#ifdef _WIN32
-void CrossPoint::renderWIN32()
-{
-  renderWIN32GC();
-
-  Vector* vv = generate(CANVAS);
-  win32DrawLine(vv[0],vv[1]);
-  win32DrawLine(vv[2],vv[3]);
-  delete [] vv;
-}
-#endif
-
-ExPoint::ExPoint(const ExPoint& a) : Point(a) {}
-
-ExPoint::ExPoint(Base* p, const Vector& ctr, int size,
-		 const char* clr, int* dsh, 
-		 int wth, const char* fnt, const char* txt,
-		 unsigned short prop, const char* cmt,
-		 const List<Tag>& tg, const List<CallBack>& cb)
-  : Point(p, ctr, size, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  strcpy(type, "x point");
-  strcpy(pointtype, "x");
-}
-
-Vector* ExPoint::generate(InternalSystem sys)
+Vector* Point::generateEx(Coord::InternalSystem sys)
 {
   Vector* vv = new Vector[4];
 
@@ -623,73 +549,7 @@ Vector* ExPoint::generate(InternalSystem sys)
   return vv;
 }
 
-void ExPoint::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
-{
-  GC lgc = renderXGC(mode);
-
-  // don't round
-  Vector* vv = generate(sys);
-  XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[1][0], vv[1][1]);
-  XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
-  delete [] vv;
-}
-
-void ExPoint::renderPS(int mode)
-{
-  renderPSGC(mode);
-
-  Vector* vv = generate(CANVAS);
-  ostringstream str;
-  str << "newpath " 
-      << vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[1].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
-      << "newpath " 
-      << vv[2].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
-      << "closepath stroke" << endl
-      << ends;
-  Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
-  delete [] vv;
-}
-
-#ifdef _MACOSX
-void ExPoint::renderMACOSX()
-{
-  renderMACOSXGC();
-
-  Vector* vv = generate(CANVAS);
-  macosxDrawLine(vv[0],vv[1]);
-  macosxDrawLine(vv[2],vv[3]);
-  delete [] vv;
-}
-#endif
-
-#ifdef _WIN32
-void ExPoint::renderWIN32()
-{
-  renderWIN32GC();
-
-  Vector* vv = generate(CANVAS);
-  win32DrawLine(vv[0],vv[1]);
-  win32DrawLine(vv[2],vv[3]);
-  delete [] vv;
-}
-#endif
-
-ArrowPoint::ArrowPoint(const ArrowPoint& a) : Point(a) {}
-
-ArrowPoint::ArrowPoint(Base* p, const Vector& ctr, int size,
-		       const char* clr, int* dsh, 
-		       int wth, const char* fnt, const char* txt,
-		       unsigned short prop, const char* cmt,
-		       const List<Tag>& tg, const List<CallBack>& cb)
-  : Point(p, ctr, size, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  strcpy(type, "arrow point");
-  strcpy(pointtype, "arrow");
-}
-
-Vector* ArrowPoint::generate(InternalSystem sys)
+Vector* Point::generateArrow(Coord::InternalSystem sys)
 {
   Vector* vv = new Vector[4];
 
@@ -720,136 +580,147 @@ Vector* ArrowPoint::generate(InternalSystem sys)
   return vv;
 }
 
-void ArrowPoint::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Point::shapeStr(PointShape ss)
 {
-  GC lgc = renderXGC(mode);
-
-  // don't round
-  Vector* vv = generate(sys);
-  XDrawLine(display, drawable, lgc, vv[0][0], vv[0][1], vv[3][0], vv[3][1]);
-  XDrawLine(display, drawable, lgc, vv[1][0], vv[1][1], vv[3][0], vv[3][1]);
-  XDrawLine(display, drawable, lgc, vv[2][0], vv[2][1], vv[3][0], vv[3][1]);
-  delete [] vv;
+  switch (ss) {
+  case CIRCLE:
+    shapestr_ = dupstr("circle");
+    break;
+  case BOX:
+    shapestr_ = dupstr("box");
+    break;
+  case DIAMOND:
+    shapestr_ = dupstr("diamond");
+    break;
+  case CROSS:
+    shapestr_ = dupstr("cross");
+    break;
+  case EX:
+    shapestr_ = dupstr("x");
+    break;
+  case ARROW:
+    shapestr_ = dupstr("arrow");
+    break;
+  case BOXCIRCLE:
+    shapestr_ = dupstr("boxcircle");
+    break;
+  }
 }
 
-void ArrowPoint::renderPS(int mode)
+void Point::setShape(PointShape ss)
 {
-  renderPSGC(mode);
-
-  Vector* vv = generate(CANVAS);
-  ostringstream str;
-  str << "newpath " 
-      << vv[0].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
-      << "newpath " 
-      << vv[1].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
-      << "newpath " 
-      << vv[2].TkCanvasPs(parent->canvas) << " moveto" << endl
-      << vv[3].TkCanvasPs(parent->canvas) << " lineto stroke" << endl
-      << ends;
-  Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
-  delete [] vv;
+  shape_ = ss;
+  shapeStr(ss);
+  updateBBox();
+  doCallBack(CallBack::EDITCB);
 }
 
-#ifdef _MACOSX
-void ArrowPoint::renderMACOSX()
+void Point::setSize(int size)
 {
-  renderMACOSXGC();
-
-  Vector* vv = generate(CANVAS);
-  macosxDrawLine(vv[0],vv[3]);
-  macosxDrawLine(vv[1],vv[3]);
-  macosxDrawLine(vv[2],vv[3]);
-  delete [] vv;
+  size_ = size;
+  updateBBox();
+  doCallBack(CallBack::EDITCB);
 }
-#endif
 
-#ifdef _WIN32
-void ArrowPoint::renderWIN32()
+void Point::updateHandles()
 {
-  renderWIN32GC();
+  // bound marker
+  double ss = size_/2;
+  Vector cc = center*parent->refToCanvas;
 
-  Vector* vv = generate(CANVAS);
-  win32DrawLine(vv[0],vv[3]);
-  win32DrawLine(vv[1],vv[3]);
-  win32DrawLine(vv[2],vv[3]);
-  delete [] vv;
-}
-#endif
+  Vector lla = cc+Vector(-ss,-ss);
+  Vector llb = lla*parent->canvasToRef;
+  Vector ll = parent->mapFromRef(llb,Coord::CANVAS);
 
-BoxCirclePoint::BoxCirclePoint(const BoxCirclePoint& a) : Point(a) {}
+  Vector lra = cc+Vector(-ss,ss);
+  Vector lrb = lra*parent->canvasToRef;
+  Vector lr = parent->mapFromRef(lrb,Coord::CANVAS);
 
-BoxCirclePoint::BoxCirclePoint(Base* p, const Vector& ctr, int size,
-			       const char* clr, int* dsh, 
-			       int wth, const char* fnt, const char* txt,
-			       unsigned short prop, const char* cmt,
-			       const List<Tag>& tg, const List<CallBack>& cb)
-  : Point(p, ctr, size, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
-{
-  strcpy(type, "boxcircle point");
-  strcpy(pointtype, "boxcircle");
-}
+  Vector ura = cc+Vector(ss,ss);
+  Vector urb = ura*parent->canvasToRef;
+  Vector ur = parent->mapFromRef(urb,Coord::CANVAS);
 
-void BoxCirclePoint::renderX(Drawable drawable, InternalSystem sys, 
-			     RenderMode mode)
-{
-  renderXBox(drawable, sys, mode);
-  renderXCircle(drawable, sys, mode, size_-2);
+  Vector ula = cc+Vector(ss,-ss);
+  Vector ulb = ula*parent->canvasToRef;
+  Vector ul = parent->mapFromRef(ulb,Coord::CANVAS);
+
+  handle[0] = ll;
+  handle[1] = lr;
+  handle[2] = ur;
+  handle[3] = ul;
 }
 
-void BoxCirclePoint::renderPS(int mode)
+void Point::analysis(AnalysisMethod mm, int which)
 {
-  renderPSBox(mode);
-  renderPSCircle(mode,size_-2);
+  switch (mm) {
+  case PLOT3D:
+    if (!analysisPlot3d_ && which) {
+      addCallBack(CallBack::MOVECB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::DELETECB, analysisPlot3dCB_[1], 
+		  parent->options->cmdName);
+    }
+    if (analysisPlot3d_ && !which) {
+      deleteCallBack(CallBack::MOVECB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::DELETECB, analysisPlot3dCB_[1]);
+    }
+
+    analysisPlot3d_ = which;
+    break;
+  }
 }
 
-#ifdef _MACOSX
-void BoxCirclePoint::renderMACOSX()
+void Point::analysisPlot3d(char* xname, char* yname)
 {
-  renderMACOSXBox();
-  renderMACOSXCircle(size_-2);
+  double* x;
+  double* y;
+  Vector ll = -Vector(.5,.5) * Translate(center);
+  Vector ur =  Vector(.5,.5) * Translate(center);
+  BBox bb(ll,ur);
+  int num = parent->markerAnalysisPlot3d(&x, &y, this, bb);
+  analysisPlot3dResult(xname, yname, x, y, num);
 }
-#endif
 
-#ifdef _WIN32
-void BoxCirclePoint::renderWIN32()
+int Point::isIn(const Vector& vv, Coord::InternalSystem sys)
 {
-  renderWIN32Box();
-  renderWIN32Circle(size_-2);
+  Vector pp = bckMap(vv,sys);
+
+  if (pp[0]<-.5 || pp[0]>=.5 || pp[1]<-.5 || pp[1]>=.5)
+    return 0;
+  else
+    return 1;
 }
-#endif
 
 // list
 
-void Point::list(ostream& str, CoordSystem sys, SkyFrame sky, 
-		 SkyFormat format, int conj, int strip)
+void Point::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		 Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
       Vector v = ptr->mapFromRef(center,sys);
-      str << "point" << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
     }
     break;
   default:
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
 	    Vector v = ptr->mapFromRef(center,sys,sky);
-	    str << "point" << '(' << setprecision(8) 
+	    str << type_ << '(' << setprecision(8) 
 		<< v[0] << ',' << v[1] << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -858,14 +729,14 @@ void Point::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	    string x(buf);
 	    istringstream wcs(x);
 	    wcs >> ra >> dec;
-	    str << "point" << '(' << ra << ',' << dec << ')';
+	    str << type_ << '(' << ra << ',' << dec << ')';
 	  }
 	  break;
 	}
       }
       else {
 	Vector v = ptr->mapFromRef(center,sys);
-	str << "point" << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
       }
     }
   }
@@ -880,10 +751,11 @@ void Point::listPost(ostream& str, int conj, int strip)
     if (conj)
       str << " ||";
 
-    str << " # point=" << pointtype;
+    str << " # point=" << shapestr_;
+
     if (size_ != POINTSIZE)
       str << ' ' << size_;
-    listProperties(str, 0);
+    listProperties(str,0);
   }
   else {
     if (conj)
@@ -893,47 +765,48 @@ void Point::listPost(ostream& str, int conj, int strip)
   }
 }
 
-void Point::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		    SkyFormat format)
+void Point::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		    Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   
   XMLRowInit();
-  XMLRow(XMLSHAPE,"point");
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
-  XMLRow(XMLPARAM,pointtype);
+
+  XMLRow(XMLPARAM,shapestr_);
   XMLRow(XMLPARAM2,size_);
 
   XMLRowProps(ptr,sys);
   XMLRowEnd(str);
 }
 
-void Point::listCiao(ostream& str, CoordSystem sys, int strip)
+void Point::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listCiaoPre(str);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,PHYSICAL);
-      str << "point(" << setprecision(8) << v[0] << ',' << v[1] << ')';
+      Vector v = ptr->mapFromRef(center,Coord::PHYSICAL);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       char buf[64];
-      ptr->mapFromRef(center,sys,FK5,SEXAGESIMAL,buf,64);
+      ptr->mapFromRef(center,sys,Coord::FK5,Coord::SEXAGESIMAL,buf,64);
       char ra[16];
       char dec[16];
       string x(buf);
       istringstream wcs(x);
       wcs >> ra >> dec;
-      str << "point" << '(' << ra << ',' << dec << ')';
+      str << type_ << '(' << ra << ',' << dec << ')';
     }
     break;
   }
@@ -941,37 +814,37 @@ void Point::listCiao(ostream& str, CoordSystem sys, int strip)
   listCiaoPost(str, strip);
 }
 
-void Point::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-		     SkyFormat format, int strip)
+void Point::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		     Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
-      listProsCoordSystem(str,sys,sky);
+      coord.listProsCoordSystem(str,sys,sky);
       str << "; ";
       Vector v = ptr->mapFromRef(center,sys);
-      str << "point " << setprecision(8) << v;
+      str << type_ << ' ' << setprecision(8) << v;
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
-      listProsCoordSystem(str,sys,sky);
+      coord.listProsCoordSystem(str,sys,sky);
       str << "; ";
 
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  str << "point " << setprecision(8) << v[0] << "d " << v[1] << "d ";
+	  str << type_ << ' ' << setprecision(8) << v[0] << "d " << v[1] << "d ";
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -981,9 +854,9 @@ void Point::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  istringstream wcs(x);
 	  wcs >> ra >> dec;
 	  if (dec[0]=='+')
-	    str << "point " << ra << ' ' << dec+1;
+	    str << type_ << ' ' << ra << ' ' << dec+1;
 	  else
-	    str << "point " << ra << ' ' << dec;
+	    str << type_ << ' ' << ra << ' ' << dec;
 	}
 	break;
       }
@@ -993,32 +866,32 @@ void Point::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
   listProsPost(str, strip);
 }
 
-void Point::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-		       SkyFormat format, int strip)
+void Point::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		       Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   listSAOtngPre(str, strip);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,IMAGE);
-      str << "point(" << setprecision(8) << v[0] << ',' << v[1] << ')';
+      Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  str << "point(" << setprecision(8) << v[0] << ',' << v[1] << ')';
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -1027,7 +900,7 @@ void Point::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
 	  string x(buf);
 	  istringstream wcs(x);
 	  wcs >> ra >> dec;
-	  str << "point(" << ra << ',' << dec << ')';
+	  str << type_ << '(' << ra << ',' << dec << ')';
 	}
 	break;
       }
@@ -1044,8 +917,8 @@ void Point::listSAOimage(ostream& str, int strip)
 
   // all coords are in image coords
 
-  Vector v = ptr->mapFromRef(center,IMAGE);
-  str << "point(" << setprecision(8) << v[0] << ',' << v[1] << ')';
+  Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
 
   listSAOimagePost(str, strip);
 }
diff --git a/saotk/frame/point.h b/saotk/frame/point.h
index bca586f..9b86a91 100644
--- a/saotk/frame/point.h
+++ b/saotk/frame/point.h
@@ -8,226 +8,93 @@
 #include "marker.h"
 
 class Point : public Marker {
+ public:
+  enum PointShape {CIRCLE,BOX,DIAMOND,CROSS,EX,ARROW,BOXCIRCLE};
+
  protected:
-  char pointtype[16];
+  PointShape shape_;
+  char* shapestr_;
   int size_;
 
- protected:
-  Vector* generateBox(InternalSystem);
-  Vector* generateCircle(InternalSystem,int);
+  Vector* generateCircle(Coord::InternalSystem, int);
+  Vector* generateBox(Coord::InternalSystem);
+  Vector* generateDiamond(Coord::InternalSystem);
+  Vector* generateCross(Coord::InternalSystem);
+  Vector* generateEx(Coord::InternalSystem);
+  Vector* generateArrow(Coord::InternalSystem);
 
-  void renderXBox(Drawable drawable, InternalSystem sys, RenderMode mode);
-  void renderXCircle(Drawable, InternalSystem, RenderMode, int);
+  void renderXCircle(Drawable, Coord::InternalSystem, RenderMode, int);
+  void renderXBox(Drawable drawable, Coord::InternalSystem sys, RenderMode mode);
   void renderXLineDash(GC lgc);
 
-  void renderPSBox(int);
   void renderPSCircle(int,int);
+  void renderPSBox(int);
   void renderPSLineDash();
 
 #ifdef _MACOSX
-  void renderMACOSXBox();
   void renderMACOSXCircle(int);
+  void renderMACOSXBox();
   void renderMACOSXLineDash();
 #endif
 
 #ifdef _WIN32
-  void renderWIN32Box();
   void renderWIN32Circle(int);
+  void renderWIN32Box();
   void renderWIN32LineDash();
 #endif
 
+  void shapeStr(PointShape);
   void updateHandles();
 
  public:
   Point(const Point&);
-  Point(Base* p, const Vector& ctr, int size,
+  Point(Base* p, const Vector& ctr, 
+	PointShape shape, int size,
 	const char* clr, int* dsh,
 	int wth, const char* fnt, const char* txt,
 	unsigned short prop, const char* cmt,
 	const List<Tag>& tg, const List<CallBack>& cb);
+  virtual ~Point();
 
-  virtual Marker* dup() =0;
+  virtual Marker* dup() {return new Point(*this);}
 
-  int size() {return size_;}
-  void setSize(int);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
+  void renderPS(int mode);
 
-  void editBegin(int) {}
-  void edit(const Vector& v, int h) {}
-  void editEnd() {}
-
-  void rotateBegin() {}
-  void rotate(const Vector& v, int h) {}
-  void rotateEnd() {}
-
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listPost(ostream&, int, int);
-  void listCiao(ostream&, CoordSystem, int);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listSAOimage(ostream&, int);
-};
-
-class CirclePoint : public Point {
- private:
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
 #endif
-#ifdef _WIN32
-  void renderWIN32();
-#endif
-
- public:
-  CirclePoint(const CirclePoint&);
-  CirclePoint(Base* p, const Vector& ctr, int size,
-	      const char* clr, int* dsh,
-	      int wth, const char* fnt, const char* txt,
-	      unsigned short prop, const char* cmt,
-	      const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new CirclePoint(*this);}
-};
-
-class BoxPoint : public Point {
- private:
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderPS(int);
-#ifdef _MACOSX
-  void renderMACOSX();
-#endif
-#ifdef _WIN32
-  void renderWIN32();
-#endif
-
- public:
-  BoxPoint(const BoxPoint&);
-  BoxPoint(Base* p, const Vector& ctr, int size,
-	   const char* clr, int* dsh,
-	   int wth, const char* fnt, const char* txt,
-	   unsigned short prop, const char* cmt,
-	   const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new BoxPoint(*this);}
-};
-
-class DiamondPoint : public Point {
- private:
-  Vector* generate(InternalSystem);
 
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderPS(int);
-#ifdef _MACOSX
-  void renderMACOSX();
-#endif
 #ifdef _WIN32
   void renderWIN32();
 #endif
 
- public:
-  DiamondPoint(const DiamondPoint&);
-  DiamondPoint(Base* p, const Vector& ctr, int size,
-	       const char* clr, int* dsh,
-	       int wth, const char* fnt, const char* txt,
-	       unsigned short prop, const char* cmt,
-	       const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new DiamondPoint(*this);}
-};
-
-class CrossPoint : public Point {
- private:
-  Vector* generate(InternalSystem);
+  const char* shape() {return shapestr_;}
+  void setShape(PointShape);
 
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderPS(int);
-#ifdef _MACOSX
-  void renderMACOSX();
-#endif
-#ifdef _WIN32
-  void renderWIN32();
-#endif
-
- public:
-  CrossPoint(const CrossPoint&);
-  CrossPoint(Base* p, const Vector& ctr, int size,
-	     const char* clr, int* dsh,
-	     int wth, const char* fnt, const char* txt,
-	     unsigned short prop, const char* cmt,
-	     const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new CrossPoint(*this);}
-};
-
-class ExPoint : public Point {
- private:
-  Vector* generate(InternalSystem);
-
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderPS(int);
-#ifdef _MACOSX
-  void renderMACOSX();
-#endif
-#ifdef _WIN32
-  void renderWIN32();
-#endif
-
- public:
-  ExPoint(const ExPoint&);
-  ExPoint(Base* p, const Vector& ctr, int size,
-	  const char* clr, int* dsh,
-	  int wth, const char* fnt, const char* txt,
-	  unsigned short prop, const char* cmt,
-	  const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new ExPoint(*this);}
-};
+  int size() {return size_;}
+  void setSize(int);
 
-class ArrowPoint : public Point {
- private:
-  Vector* generate(InternalSystem);
+  int isIn(const Vector&, Coord::InternalSystem);
 
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderPS(int);
-#ifdef _MACOSX
-  void renderMACOSX();
-#endif
-#ifdef _WIN32
-  void renderWIN32();
-#endif
+  void editBegin(int) {}
+  void edit(const Vector& v, int h) {}
+  void editEnd() {}
 
- public:
-  ArrowPoint(const ArrowPoint&);
-  ArrowPoint(Base* p, const Vector& ctr, int size,
-	     const char* clr, int* dsh,
-	     int wth, const char* fnt, const char* txt,
-	     unsigned short prop, const char* cmt,
-	     const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new ArrowPoint(*this);}
-};
+  void rotateBegin() {}
+  void rotate(const Vector& v, int h) {}
+  void rotateEnd() {}
 
-class BoxCirclePoint : public Point {
- private:
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderPS(int);
-#ifdef _MACOSX
-  void renderMACOSX();
-#endif
-#ifdef _WIN32
-  void renderWIN32();
-#endif
+  void analysis(AnalysisMethod, int);
+  void analysisPlot3d(char*, char*);
 
- public:
-  BoxCirclePoint(const BoxCirclePoint&);
-  BoxCirclePoint(Base* p, const Vector& ctr, int size,
-		 const char* clr, int* dsh,
-		 int wth, const char* fnt, const char* txt,
-		 unsigned short prop, const char* cmt,
-		 const List<Tag>& tg, const List<CallBack>& cb);
-
-  Marker* dup() {return new BoxCirclePoint(*this);}
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void listPost(ostream&, int, int);
+  virtual void listCiao(ostream&, Coord::CoordSystem, int);
+  virtual void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listSAOimage(ostream&, int);
 };
 
 #endif
diff --git a/saotk/frame/polygon.C b/saotk/frame/polygon.C
index a7d661c..330e776 100644
--- a/saotk/frame/polygon.C
+++ b/saotk/frame/polygon.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "polygon.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Polygon::Polygon(const Polygon& a) : Marker(a)
@@ -20,7 +19,7 @@ Polygon::Polygon(Base* p, const Vector& ctr,
   : Marker(p, ctr, 0, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
 {
   angle = 0;
-  strcpy(type, "polygon");
+  strcpy(type_, "polygon");
 
   Vector bb = b;
   vertex.append(new Vertex(-bb[0],-bb[1]));
@@ -40,7 +39,7 @@ Polygon::Polygon(Base* p, const List<Vertex>& v,
 {
   // Vertex list is in ref coords
   angle = 0;
-  strcpy(type, "polygon");
+  strcpy(type_, "polygon");
   vertex = v;
 
   // check to see if the first and last node are the same
@@ -65,7 +64,7 @@ Polygon::Polygon(Base* p, const List<Vertex>& v,
   updateBBox();
 }
 
-void Polygon::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Polygon::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
 
@@ -93,7 +92,7 @@ void Polygon::renderPS(int mode)
   int first = 1;
   do {
     ostringstream str;
-    Vector v =  fwdMap(vertex.current()->vector,CANVAS);
+    Vector v =  fwdMap(vertex.current()->vector,Coord::CANVAS);
     if (first) {
       str << "newpath " << endl
 	  << v.TkCanvasPs(parent->canvas) << " moveto" << endl << ends;
@@ -117,7 +116,7 @@ void Polygon::renderMACOSX()
 
   vertex.head();
   Vector v1;
-  Vector v2 = fwdMap(vertex.current()->vector,CANVAS);
+  Vector v2 = fwdMap(vertex.current()->vector,Coord::CANVAS);
   int done = 0;
 
   do {
@@ -126,7 +125,7 @@ void Polygon::renderMACOSX()
       vertex.head();
     }
     v1 = v2;
-    v2 = fwdMap(vertex.current()->vector,CANVAS);
+    v2 = fwdMap(vertex.current()->vector,Coord::CANVAS);
     macosxDrawLine(v1,v2);
   } while (!done);
 }
@@ -139,7 +138,7 @@ void Polygon::renderWIN32()
 
   vertex.head();
   Vector v1;
-  Vector v2 =  fwdMap(vertex.current()->vector,CANVAS);
+  Vector v2 =  fwdMap(vertex.current()->vector,Coord::CANVAS);
   int done = 0;
 
   do {
@@ -148,7 +147,7 @@ void Polygon::renderWIN32()
       vertex.head();
     }
     v1 = v2;
-    v2 = fwdMap(vertex.current()->vector,CANVAS);
+    v2 = fwdMap(vertex.current()->vector,Coord::CANVAS);
     win32DrawLine(v1,v2);
   } while (!done);
 }
@@ -175,16 +174,16 @@ void Polygon::updateHandles()
   float r = 10/zz.length();
   bb.expand(r); // give us more room
 
-  handle[0] = fwdMap(bb.ll,CANVAS);
-  handle[1] = fwdMap(bb.lr(),CANVAS);
-  handle[2] = fwdMap(bb.ur,CANVAS);
-  handle[3] = fwdMap(bb.ul(),CANVAS);
+  handle[0] = fwdMap(bb.ll,Coord::CANVAS);
+  handle[1] = fwdMap(bb.lr(),Coord::CANVAS);
+  handle[2] = fwdMap(bb.ur,Coord::CANVAS);
+  handle[3] = fwdMap(bb.ul(),Coord::CANVAS);
 
   // and the rest are vertices
   int i=4;
   vertex.head();
   do
-    handle[i++] = fwdMap(vertex.current()->vector,CANVAS);
+    handle[i++] = fwdMap(vertex.current()->vector,Coord::CANVAS);
   while (vertex.next());
 }
 
@@ -203,7 +202,7 @@ void Polygon::edit(const Vector& v, int h)
 {
   if (h < 5) {
     Vector s1 = v * bckMatrix();
-    Vector s2 = bckMap(handle[h-1],CANVAS);
+    Vector s2 = bckMap(handle[h-1],Coord::CANVAS);
 
     if (s1[0] != 0 && s1[1] != 0 && s2[0] != 0 && s2[1] != 0) {
       double a = fabs(s1[0]/s2[0]);
@@ -258,7 +257,7 @@ void Polygon::reset(const Vector& b)
   updateBBox();
 }
 
-int Polygon::isIn(const Vector& vv)
+int Polygon::isIn(const Vector& vv, Coord::InternalSystem sys)
 {
   /*
     v[0]-- x value of point being tested
@@ -274,7 +273,7 @@ int Polygon::isIn(const Vector& vv)
     Points on a edge are considered inside.
   */
 
-  Vector v = bckMap(vv,CANVAS);
+  Vector v = bckMap(vv,sys);
   int crossings = 0;   // number of crossings
 
   vertex.head();
@@ -284,7 +283,6 @@ int Polygon::isIn(const Vector& vv)
   int sign = ((v2[1])>=0) ? 1 : -1; // init sign
 
   // for all edges
-
   int done = 0;
 
   do {
@@ -371,8 +369,8 @@ int Polygon::getSegment(const Vector& v)
     }
     v2 = vertex.current()->vector * mm;
 
-    Vector l1 = parent->mapFromRef(v1,CANVAS);
-    Vector l2 = parent->mapFromRef(v2,CANVAS);
+    Vector l1 = parent->mapFromRef(v1,Coord::CANVAS);
+    Vector l2 = parent->mapFromRef(v2,Coord::CANVAS);
     double a = parent->isIIS() ? -(l2-l1).angle() : (l2-l1).angle();
     Matrix mx = Translate(-l1) * flip_ * Rotate(-a); 
     Vector end = l2*mx;
@@ -418,22 +416,61 @@ void Polygon::recalcCenter()
   while (vertex.next());
 }
 
+void Polygon::analysis(AnalysisMethod mm, int which)
+{
+  switch (mm) {
+  case PLOT3D:
+    if (!analysisPlot3d_ && which) {
+      addCallBack(CallBack::MOVECB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::EDITCB, analysisPlot3dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::DELETECB, analysisPlot3dCB_[1], 
+		  parent->options->cmdName);
+    }
+    if (analysisPlot3d_ && !which) {
+      deleteCallBack(CallBack::MOVECB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::EDITCB, analysisPlot3dCB_[0]);
+      deleteCallBack(CallBack::DELETECB, analysisPlot3dCB_[1]);
+    }
+
+    analysisPlot3d_ = which;
+    break;
+  }
+}
+
+void Polygon::analysisPlot3d(char* xname, char* yname)
+{
+  double* x;
+  double* y;
+  BBox bb(center);
+
+  Matrix mm = Rotate(angle) * Translate(center);
+  vertex.head();
+  do
+    bb.bound(vertex.current()->vector * mm);
+  while (vertex.next());
+
+  int num = parent->markerAnalysisPlot3d(&x, &y, this, bb);
+  analysisPlot3dResult(xname, yname, x, y, num);
+}
+
 // list
 
-void Polygon::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		   SkyFormat format, int conj, int strip)
+void Polygon::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		   Coord::SkyFormat format, int conj, int strip)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   listPre(str, sys, sky, ptr, strip, 0);
 
   Matrix mm = fwdMatrix();
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      str << type << '(';
+      str << type_ << '(';
       int first=1;
       vertex.head();
       do {
@@ -452,9 +489,9 @@ void Polygon::list(ostream& str, CoordSystem sys, SkyFrame sky,
     if (ptr->hasWCS(sys)) {
       if (ptr->hasWCSCel(sys)) {
 	switch (format) {
-	case DEGREES:
+	case Coord::DEGREES:
 	  {
-	    str << type << '(';
+	    str << type_ << '(';
 	    int first=1;
 	    vertex.head();
 	    do {
@@ -469,13 +506,13 @@ void Polygon::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	    str << ')';
 	  }
 	  break;
-	case SEXAGESIMAL:
+	case Coord::SEXAGESIMAL:
 	  {
 	    char buf[64];
 	    char ra[16];
 	    char dec[16];
 
-	    str << type << '(';
+	    str << type_ << '(';
 	    int first=1;
 	    vertex.head();
 	    do {
@@ -496,7 +533,7 @@ void Polygon::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	}
       }
       else {
-	str << type << '(';
+	str << type_ << '(';
 	int first=1;
 	vertex.head();
 	do {
@@ -516,15 +553,15 @@ void Polygon::list(ostream& str, CoordSystem sys, SkyFrame sky,
   listPost(str, conj, strip);
 }
 
-void Polygon::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		      SkyFormat format)
+void Polygon::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		      Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   Matrix mm = fwdMatrix();
   Vector* vv = new Vector[vertex.count()];
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   vertex.head();
   int cnt =0;
@@ -538,19 +575,19 @@ void Polygon::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Polygon::listCiao(ostream& str, CoordSystem sys, int strip)
+void Polygon::listCiao(ostream& str, Coord::CoordSystem sys, int strip)
 {
   FitsImage* ptr = parent->findFits();
   Matrix mm = fwdMatrix();
   listCiaoPre(str);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      str << type << '(';
+      str << type_ << '(';
       int first=1;
       vertex.head();
       do {
@@ -558,7 +595,7 @@ void Polygon::listCiao(ostream& str, CoordSystem sys, int strip)
 	  str << ',';
 	first=0;
 
-	Vector v = ptr->mapFromRef(vertex.current()->vector * mm,PHYSICAL);
+	Vector v = ptr->mapFromRef(vertex.current()->vector * mm,Coord::PHYSICAL);
 	str << setprecision(8) << v[0] << ',' << v[1];
       }
       while (vertex.next());
@@ -571,7 +608,7 @@ void Polygon::listCiao(ostream& str, CoordSystem sys, int strip)
       char ra[16];
       char dec[16];
 
-      str << type << '(';
+      str << type_ << '(';
       int first=1;
       vertex.head();
       do {
@@ -579,7 +616,7 @@ void Polygon::listCiao(ostream& str, CoordSystem sys, int strip)
 	  str << ',';
 	first=0;
 
-	ptr->mapFromRef(vertex.current()->vector*mm,sys,FK5,SEXAGESIMAL,buf,64);
+	ptr->mapFromRef(vertex.current()->vector*mm,sys,Coord::FK5,Coord::SEXAGESIMAL,buf,64);
 	string x(buf);
 	istringstream wcs(x);
 	wcs >> ra >> dec;
@@ -593,21 +630,21 @@ void Polygon::listCiao(ostream& str, CoordSystem sys, int strip)
   listCiaoPost(str, strip);
 }
 
-void Polygon::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
-		       SkyFormat format, int strip)
+void Polygon::listPros(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		       Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   Matrix mm = fwdMatrix();
 
   switch (sys) {
-  case IMAGE:
-  case DETECTOR:
-  case AMPLIFIER:
-    sys = IMAGE;
-  case PHYSICAL:
+  case Coord::IMAGE:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
+    sys = Coord::IMAGE;
+  case Coord::PHYSICAL:
     {
-      listProsCoordSystem(str,sys,sky);
-      str << "; " << type;
+      coord.listProsCoordSystem(str,sys,sky);
+      str << "; " << type_;
       vertex.head();
       do {
 	Vector v = ptr->mapFromRef(vertex.current()->vector*mm,sys);
@@ -618,11 +655,11 @@ void Polygon::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
-      listProsCoordSystem(str,sys,sky);
-      str << "; " << type << ' ';
+      coord.listProsCoordSystem(str,sys,sky);
+      str << "; " << type_ << ' ';
 
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  vertex.head();
 	  do {
@@ -632,7 +669,7 @@ void Polygon::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
 	  while (vertex.next());
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  char ra[16];
@@ -659,20 +696,20 @@ void Polygon::listPros(ostream& str, CoordSystem sys, SkyFrame sky,
   listProsPost(str, strip);
 }
 
-void Polygon::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-			 SkyFormat format, int strip)
+void Polygon::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+			 Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   Matrix mm = fwdMatrix();
   listSAOtngPre(str, strip);
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      str << type << '(';
+      str << type_ << '(';
       int first=1;
       vertex.head();
       do {
@@ -690,9 +727,9 @@ void Polygon::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
-	  str << type << '(';
+	  str << type_ << '(';
 	  int first=1;
 	  vertex.head();
 	  do {
@@ -707,13 +744,13 @@ void Polygon::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
 	  str << ')';
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  char ra[16];
 	  char dec[16];
 
-	  str << type << '(';
+	  str << type_ << '(';
 	  int first=1;
 	  vertex.head();
 	  do {
@@ -745,7 +782,7 @@ void Polygon::listSAOimage(ostream& str, int strip)
   listSAOimagePre(str);
   Matrix mm = fwdMatrix();
 
-  str << type << '(';
+  str << type_ << '(';
   int first=1;
   vertex.head();
   do {
@@ -753,7 +790,7 @@ void Polygon::listSAOimage(ostream& str, int strip)
       str << ',';
     first=0;
 
-    Vector v = ptr->mapFromRef(vertex.current()->vector*mm,IMAGE);
+    Vector v = ptr->mapFromRef(vertex.current()->vector*mm,Coord::IMAGE);
     str << setprecision(8) << v[0] << ',' << v[1];
   }
   while (vertex.next());
diff --git a/saotk/frame/polygon.h b/saotk/frame/polygon.h
index 661e0d7..da0eed8 100644
--- a/saotk/frame/polygon.h
+++ b/saotk/frame/polygon.h
@@ -9,11 +9,10 @@
 #include "list.h"
 
 class Polygon : public Marker {
-private:
+ protected:
   List<Vertex> vertex;
 
-private:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   void renderPS(int);
 #ifdef _MACOSX
   void renderMACOSX();
@@ -41,25 +40,29 @@ public:
 	  unsigned short prop, const char* cmt,
 	  const List<Tag>& tg, const List<CallBack>& cb);
 
-  Marker* dup() {return new Polygon(*this);}
+  virtual Marker* dup() {return new Polygon(*this);}
   void updateCoords(const Matrix&);
 
   void edit(const Vector&, int);
   void rotate(const Vector&, int);
-  int isIn(const Vector& v);
-  int isPolygon() {return 1;}
+
+  int isIn(const Vector& vv) {return isIn(vv, Coord::CANVAS);}
+  int isIn(const Vector&, Coord::InternalSystem);
+
+  void analysis(AnalysisMethod, int);
+  void analysisPlot3d(char*, char*);
 
   void createVertex(int, const Vector&);
   void deleteVertex(int);
   int getSegment(const Vector&);
   void reset(const Vector&);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listCiao(ostream&, CoordSystem, int);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
-  void listSAOimage(ostream&, int);
-  void listPros(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  virtual void listCiao(ostream&, Coord::CoordSystem, int);
+  virtual void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
+  virtual void listSAOimage(ostream&, int);
+  virtual void listPros(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
 };
 
 #endif
diff --git a/saotk/frame/projection.C b/saotk/frame/projection.C
index 6aeab8b..c06a0cf 100644
--- a/saotk/frame/projection.C
+++ b/saotk/frame/projection.C
@@ -3,24 +3,17 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "projection.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Projection::Projection(const Projection& a) : BaseLine(a)
 {
   width = a.width;
-  method = a.method;
-
-  system = a.system;
-  skyframe = a.skyframe;
-
   p3 = a.p3;
   p4 = a.p4;
 }
 
 Projection::Projection(Base* p, const Vector& ptr1, const Vector& ptr2, 
 		       double wd,
-		       const char* mvcb, const char* delcb,
 		       const char* clr, int* dsh,
 		       int wth, const char* fnt, const char* txt, 
 		       unsigned short prop, const char* cmt,
@@ -28,27 +21,16 @@ Projection::Projection(Base* p, const Vector& ptr1, const Vector& ptr2,
   : BaseLine(p, ptr1, ptr2, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
 {
   width = wd;
-  method = AVERAGE;
-
-  system = PHYSICAL;
-  skyframe = FK5;
 
-  strcpy(type,"projection");
+  strcpy(type_,"projection");
   handle = new Vector[3];
   numHandle = 3;
 
-  if (mvcb && *mvcb) {
-    addCallBack(CallBack::MOVECB, mvcb, parent->options->cmdName);
-    addCallBack(CallBack::EDITCB, mvcb, parent->options->cmdName);
-    addCallBack(CallBack::UPDATECB, mvcb, parent->options->cmdName);
-  }
-  if (delcb && *delcb)
-    addCallBack(CallBack::DELETECB, delcb, parent->options->cmdName);
-
+  analysis(PLOT2D,1);
   updateBBox();
 }
 
-void Projection::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Projection::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
 
@@ -95,8 +77,8 @@ void Projection::renderPS(int mode)
 {
   renderPSGC(mode);
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
   {
     ostringstream str;
     str << "newpath " 
@@ -114,10 +96,10 @@ void Projection::renderPS(int mode)
     Vector b = p2*imm;
     Vector c = Vector(0,-width);
 
-    Vector ll = fwdMap(a,CANVAS);
-    Vector lr = fwdMap(b,CANVAS);
-    Vector ul = fwdMap(a+c,CANVAS);
-    Vector ur = fwdMap(b+c,CANVAS);
+    Vector ll = fwdMap(a,Coord::CANVAS);
+    Vector lr = fwdMap(b,Coord::CANVAS);
+    Vector ul = fwdMap(a+c,Coord::CANVAS);
+    Vector ur = fwdMap(b+c,Coord::CANVAS);
 
     ostringstream str;
     str << "newpath " 
@@ -141,8 +123,8 @@ void Projection::renderMACOSX()
 {
   renderMACOSXGC();
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
 
   macosxDrawLine(aa,bb);
 
@@ -154,10 +136,10 @@ void Projection::renderMACOSX()
     Vector b = p2*imm;
     Vector c = Vector(0,-width);
 
-    Vector ll = fwdMap(a,CANVAS);
-    Vector lr = fwdMap(b,CANVAS);
-    Vector ul = fwdMap(a+c,CANVAS);
-    Vector ur = fwdMap(b+c,CANVAS);
+    Vector ll = fwdMap(a,Coord::CANVAS);
+    Vector lr = fwdMap(b,Coord::CANVAS);
+    Vector ul = fwdMap(a+c,Coord::CANVAS);
+    Vector ur = fwdMap(b+c,Coord::CANVAS);
 
     macosxDrawLine(lr,ur);
     macosxDrawLine(ur,ul);
@@ -177,8 +159,8 @@ void Projection::renderWIN32()
 {
   renderWIN32GC();
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
 
   win32DrawLine(aa,bb);
 
@@ -190,10 +172,10 @@ void Projection::renderWIN32()
     Vector b = p2*imm;
     Vector c = Vector(0,-width);
 
-    Vector ll = fwdMap(a,CANVAS);
-    Vector lr = fwdMap(b,CANVAS);
-    Vector ul = fwdMap(a+c,CANVAS);
-    Vector ur = fwdMap(b+c,CANVAS);
+    Vector ll = fwdMap(a,Coord::CANVAS);
+    Vector lr = fwdMap(b,Coord::CANVAS);
+    Vector ul = fwdMap(a+c,Coord::CANVAS);
+    Vector ur = fwdMap(b+c,Coord::CANVAS);
 
     win32DrawLine(lr,ur);
     win32DrawLine(ur,ul);
@@ -221,19 +203,19 @@ void Projection::updateHandles()
   Vector a = p1*imm;
   Vector b = p2*imm;
   Vector c = Vector(0,-width);
-  p3 = fwdMap(a+c,CANVAS);
-  p4 = fwdMap(b+c,CANVAS);
-  Vector hh = fwdMap(((b-a)/2+a)+c,CANVAS);
+  p3 = fwdMap(a+c,Coord::CANVAS);
+  p4 = fwdMap(b+c,Coord::CANVAS);
+  Vector hh = fwdMap(((b-a)/2+a)+c,Coord::CANVAS);
 
-  // generate handles in CANVAS coords
-  handle[0] = parent->mapFromRef(p1,CANVAS);
-  handle[1] = parent->mapFromRef(p2,CANVAS);
+  // generate handles in Coord::CANVAS coords
+  handle[0] = parent->mapFromRef(p1,Coord::CANVAS);
+  handle[1] = parent->mapFromRef(p2,Coord::CANVAS);
   handle[2] = hh;
 }
 
 void Projection::calcAllBBox()
 {
-  // p3/p4 are already in CANVAS coords
+  // p3/p4 are already in Coord::CANVAS coords
   bbox.bound(p3);
   bbox.bound(p4);
   Marker::calcAllBBox();
@@ -268,19 +250,18 @@ int Projection::isIn(const Vector& v)
     Vector a = p1*imm;
     Vector b = p2*imm;
 
-    Vector vv = -bckMap(v,CANVAS);
+    Vector vv = -bckMap(v,Coord::CANVAS);
     return (vv[0]>a[0] && vv[0]<b[0] && vv[1]>0 && vv[1]<width);
   }
   else
     return BaseLine::isIn(v);
 }
 
-void Projection::set(const Vector& v1, const Vector& v2, double wd, int m)
+void Projection::set(const Vector& v1, const Vector& v2, double wd)
 {
   p1 = v1;
   p2 = v2;
   width = wd;
-  method = (Method)m;
 
   updateBBox();
   doCallBack(CallBack::EDITCB);
@@ -302,24 +283,62 @@ void Projection::updateCoords(const Matrix& mx)
   BaseLine::updateCoords(mx);
 }
 
+void Projection::analysis(AnalysisMethod mm, int which)
+{
+  switch (mm) {
+  case PLOT2D:
+    if (!analysisPlot2d_ && which) {
+      addCallBack(CallBack::MOVECB, analysisPlot2dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::EDITCB, analysisPlot2dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::UPDATECB, analysisPlot2dCB_[0], 
+		  parent->options->cmdName);
+      addCallBack(CallBack::DELETECB, analysisPlot2dCB_[1], 
+		  parent->options->cmdName);
+    }
+    if (analysisPlot2d_ && !which) {
+      deleteCallBack(CallBack::MOVECB, analysisPlot2dCB_[0]);
+      deleteCallBack(CallBack::EDITCB, analysisPlot2dCB_[0]);
+      deleteCallBack(CallBack::UPDATECB, analysisPlot2dCB_[0]);
+      deleteCallBack(CallBack::DELETECB, analysisPlot2dCB_[1]);
+    }
+
+    analysisPlot2d_ = which;
+    break;
+  }
+}
+
+void Projection::analysisPlot2d(char* xname, char* yname, 
+				char* xcname, char* ycname)
+{
+  double* x;
+  double* y;
+  double* xc;
+  double* yc;
+
+  int num = parent->markerAnalysisPlot2d(&x, &y, &xc, &yc, this, p1, p2, width);
+  analysisPlot2dResult(xname, yname, xcname, ycname, x, y, xc, yc, num);
+}
+
 // list
 
-void Projection::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		      SkyFormat format, int conj, int strip)
+void Projection::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		      Coord::SkyFormat format, int conj, int strip)
 {
   if (!strip) {
     FitsImage* ptr = parent->findFits(sys,center);
     listPre(str, sys, sky, ptr, strip, 1);
 
     switch (sys) {
-    case IMAGE:
-    case PHYSICAL:
-    case DETECTOR:
-    case AMPLIFIER:
+    case Coord::IMAGE:
+    case Coord::PHYSICAL:
+    case Coord::DETECTOR:
+    case Coord::AMPLIFIER:
       {
 	Vector v1 = ptr->mapFromRef(p1,sys);
 	Vector v2 = ptr->mapFromRef(p2,sys);
-	str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
+	str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
 	    << v2[0] << ',' << v2[1] << ',' 
 	    << ptr->mapLenFromRef(width,sys) << ')';
       }
@@ -328,16 +347,16 @@ void Projection::list(ostream& str, CoordSystem sys, SkyFrame sky,
       if (ptr->hasWCS(sys)) {
 	if (ptr->hasWCSEqu(sys)) {
 	  switch (format) {
-	  case DEGREES:
+	  case Coord::DEGREES:
 	    {
 	      Vector v1 = ptr->mapFromRef(p1,sys,sky);
 	      Vector v2 = ptr->mapFromRef(p2,sys,sky);
-	      str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+	      str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
 		  << ',' << v2[0] << ',' << v2[1] << ',' 
-		  << ptr->mapLenFromRef(width,sys,ARCSEC) << '"' << ')';
+		  << ptr->mapLenFromRef(width,sys,Coord::ARCSEC) << '"' << ')';
 	    }
 	    break;
-	  case SEXAGESIMAL:
+	  case Coord::SEXAGESIMAL:
 	    {
 	      char buf[64];
 	      char ra1[16], ra2[16];
@@ -354,9 +373,9 @@ void Projection::list(ostream& str, CoordSystem sys, SkyFrame sky,
 		istringstream wcs(x);
 		wcs >> ra2 >> dec2;
 	      }
-	      str << type << '(' << ra1 << ',' << dec1 << ',' 
+	      str << type_ << '(' << ra1 << ',' << dec1 << ',' 
 		  << ra2 << ',' << dec2 << ','
-		  << ptr->mapLenFromRef(width,sys,ARCSEC) << '"' << ')';
+		  << ptr->mapLenFromRef(width,sys,Coord::ARCSEC) << '"' << ')';
 	    }
 	    break;
 	  }
@@ -364,7 +383,7 @@ void Projection::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	else {
 	  Vector v1 = ptr->mapFromRef(p1,sys);
 	  Vector v2 = ptr->mapFromRef(p2,sys);
-	  str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+	  str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
 	      << ',' << v2[0] << ',' << v2[1] << ',' 
 	      << ptr->mapLenFromRef(width,sys) << ')';
 	}
@@ -378,17 +397,17 @@ void Projection::list(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Projection::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-			 SkyFormat format)
+void Projection::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			 Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   Vector vv[2];
   vv[0] = p1;
   vv[1] = p2;
-  double rr = ptr->mapLenFromRef(width,sys,ARCSEC);
+  double rr = ptr->mapLenFromRef(width,sys,Coord::ARCSEC);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowPoint(ptr,sys,sky,format,vv,2);
   XMLRow(XMLR,rr);
diff --git a/saotk/frame/projection.h b/saotk/frame/projection.h
index 22d6af9..8e40df2 100644
--- a/saotk/frame/projection.h
+++ b/saotk/frame/projection.h
@@ -8,20 +8,13 @@
 #include "baseline.h"
 
 class Projection : public BaseLine {
- public:
-  enum Method {SUM,AVERAGE};
-
  private:
   double width;
-  Method method;
-  CoordSystem system;
-  SkyFrame skyframe;
-
   Vector p3; // used for bbox
   Vector p4;
 
  private:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   GC renderXGC(RenderMode);
 
   void renderPS(int);
@@ -44,32 +37,27 @@ class Projection : public BaseLine {
   Projection(const Projection&);
   Projection(Base* p, const Vector& ptr1, const Vector& ptr2, 
 	     double wd,
-	     const char* mvcb, const char* delcb,
 	     const char* clr, int* dsh,
 	     int wth, const char* fnt, const char* txt, 
 	     unsigned short prop, const char* cmt,
 	     const List<Tag>& tg, const List<CallBack>& cb);
 
   Marker* dup() {return new Projection(*this);}
+  int isIn(const Vector&);
 
   void updateCoords(const Matrix&);
 
   void edit(const Vector&, int);
 
-  int isIn(const Vector&);
+  void analysis(AnalysisMethod, int);
+  void analysisPlot2d(char*, char*, char*, char*);
 
-  void set(const Vector&, const Vector&, double, int);
+  void set(const Vector&, const Vector&, double);
   void setWidth(double);
   double getWidth() {return width;}
-  int getMethod() {return method;}
-
-  CoordSystem getSystem() {return system;}
-  SkyFrame getSkyFrame() {return skyframe;}
-  void setSystem(CoordSystem sys, SkyFrame sky) 
-    {system = sys; skyframe = sky;}
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
 };
 
 #endif
diff --git a/saotk/frame/prosparser.C b/saotk/frame/prosparser.C
index 28bf48a..d883205 100644
--- a/saotk/frame/prosparser.C
+++ b/saotk/frame/prosparser.C
@@ -165,10 +165,10 @@ extern int proslex(void*, prosFlexLexer*);
 extern void proserror(Base*, prosFlexLexer*, const char*);
 extern void prosDiscard(int);
 
-static CoordSystem globalSystem;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static unsigned short globalProps;
 static unsigned short localProps;
@@ -194,8 +194,8 @@ static unsigned short aProps;
 static char aComment[80];
 
 static void setProps(unsigned short* props, unsigned short prop, int value);
-static CoordSystem checkWCSSystem();
-static SkyFrame checkWCSSky();
+static Coord::CoordSystem checkWCSSystem();
+static Coord::SkyFrame checkWCSSky();
 
 
 /* Enabling traces.  */
@@ -1625,12 +1625,12 @@ yyreduce:
 
   case 8:
 #line 135 "prosparser.Y"
-    {globalSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+    {globalSystem = (Coord::CoordSystem)(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 10:
 #line 136 "prosparser.Y"
-    {globalSystem = WCS; globalSky = (SkyFrame)(yyvsp[(1) - (1)].integer);;}
+    {globalSystem = Coord::WCS; globalSky = (Coord::SkyFrame)(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 16:
@@ -1685,28 +1685,28 @@ yyreduce:
 
   case 32:
 #line 175 "prosparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::IMAGE);;}
     break;
 
   case 33:
 #line 176 "prosparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), DEGREE);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), Coord::DEGREE);;}
     break;
 
   case 34:
 #line 177 "prosparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCMIN);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), Coord::ARCMIN);;}
     break;
 
   case 35:
 #line 178 "prosparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCSEC);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), Coord::ARCSEC);;}
     break;
 
   case 36:
 #line 182 "prosparser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::IMAGE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1716,7 +1716,7 @@ yyreduce:
   case 37:
 #line 189 "prosparser.Y"
     {
-	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),DEGREE);
+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),Coord::DEGREE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1726,7 +1726,7 @@ yyreduce:
   case 38:
 #line 196 "prosparser.Y"
     {
-	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCMIN);
+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),Coord::ARCMIN);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1736,7 +1736,7 @@ yyreduce:
   case 39:
 #line 203 "prosparser.Y"
     {
-	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCSEC);
+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),Coord::ARCSEC);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1767,9 +1767,9 @@ yyreduce:
 #line 224 "prosparser.Y"
     {
 	  Vector r;
-	  CoordSystem sys = checkWCSSystem();
-	  SkyFrame sky = checkWCSSky();
-	  if (sky == GALACTIC || sky == ECLIPTIC) 
+	  Coord::CoordSystem sys = checkWCSSystem();
+	  Coord::SkyFrame sky = checkWCSSky();
+	  if (sky == Coord::GALACTIC || sky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
 	  else
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
@@ -1824,12 +1824,12 @@ yyreduce:
 
   case 49:
 #line 269 "prosparser.Y"
-    {(yyval.integer) = IMAGE;;}
+    {(yyval.integer) = Coord::IMAGE;;}
     break;
 
   case 50:
 #line 270 "prosparser.Y"
-    {(yyval.integer) = PHYSICAL;;}
+    {(yyval.integer) = Coord::PHYSICAL;;}
     break;
 
   case 51:
@@ -1839,40 +1839,40 @@ yyreduce:
 
   case 52:
 #line 274 "prosparser.Y"
-    {(yyval.integer) = FK4;;}
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 53:
 #line 275 "prosparser.Y"
-    {(yyval.integer) = FK5;;}
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 54:
 #line 276 "prosparser.Y"
-    {(yyval.integer) = GALACTIC;;}
+    {(yyval.integer) = Coord::GALACTIC;;}
     break;
 
   case 55:
 #line 277 "prosparser.Y"
-    {(yyval.integer) = ECLIPTIC;;}
+    {(yyval.integer) = Coord::ECLIPTIC;;}
     break;
 
   case 56:
 #line 280 "prosparser.Y"
-    {(yyval.integer) = FK4;;}
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 57:
 #line 281 "prosparser.Y"
-    {(yyval.integer) = FK5;;}
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 58:
 #line 284 "prosparser.Y"
     {
 	  // global properties
-	  globalSystem = IMAGE;
-	  globalSky = FK5;
+	  globalSystem = Coord::IMAGE;
+	  globalSky = Coord::FK5;
 	  globalProps =
 	    Marker::SELECT | Marker::EDIT | Marker::MOVE |
 	    Marker::ROTATE | Marker::DELETE | Marker::HIGHLITE |
@@ -2010,7 +2010,7 @@ yyreduce:
 
   case 73:
 #line 387 "prosparser.Y"
-    {fr->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)), POINTSIZE, 
+    {fr->createPointCmd(Vector((yyvsp[(3) - (5)].vector)), Point::BOXCIRCLE, POINTSIZE, 
 	    color,dash,1,font,text,localProps,localComment,taglist,cblist);;}
     break;
 
@@ -2311,23 +2311,23 @@ static void setProps(unsigned short* props, unsigned short prop, int value)
     *props &= ~prop;
 }
 
-static CoordSystem checkWCSSystem()
+static Coord::CoordSystem checkWCSSystem()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return WCS;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::WCS;
   default:
     return localSystem;
   }
 }
 
-static SkyFrame checkWCSSky()
+static Coord::SkyFrame checkWCSSky()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return FK5;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::FK5;
   default:
    return localSky;
   }
diff --git a/saotk/frame/prosparser.Y b/saotk/frame/prosparser.Y
index 410ac51..15319d8 100644
--- a/saotk/frame/prosparser.Y
+++ b/saotk/frame/prosparser.Y
@@ -29,10 +29,10 @@ extern int proslex(void*, prosFlexLexer*);
 extern void proserror(Base*, prosFlexLexer*, const char*);
 extern void prosDiscard(int);
 
-static CoordSystem globalSystem;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static unsigned short globalProps;
 static unsigned short localProps;
@@ -58,8 +58,8 @@ static unsigned short aProps;
 static char aComment[80];
 
 static void setProps(unsigned short* props, unsigned short prop, int value);
-static CoordSystem checkWCSSystem();
-static SkyFrame checkWCSSky();
+static Coord::CoordSystem checkWCSSystem();
+static Coord::SkyFrame checkWCSSky();
 %}
 
 %union {
@@ -132,8 +132,8 @@ commands: commands command terminator
 command : /* empty */
 	| DEBUG_ debug
 	| VERSION_ {cerr << "PROS" << endl;}
-	| coordSystem {globalSystem = (CoordSystem)$1;} comment
-	| skyFrame {globalSystem = WCS; globalSky = (SkyFrame)$1;} comment
+	| coordSystem {globalSystem = (Coord::CoordSystem)$1;} comment
+	| skyFrame {globalSystem = Coord::WCS; globalSky = (Coord::SkyFrame)$1;} comment
 	| initLocal include shape
 	| generalComment
 	;
@@ -172,36 +172,36 @@ angle	: numeric {$$ = degToRad($1);} /* assume degree */
 	| ANGRADIAN {$$=$1;}
 	;
 
-value	: numeric {$$ = FITSPTR->mapLenToRef($1, IMAGE);}
-	| ANGDEGREE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), DEGREE);}
-	| ARCMINUTE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), ARCMIN);}
-	| ARCSECOND {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), ARCSEC);}
+value	: numeric {$$ = FITSPTR->mapLenToRef($1, Coord::IMAGE);}
+	| ANGDEGREE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), Coord::DEGREE);}
+	| ARCMINUTE {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), Coord::ARCMIN);}
+	| ARCSECOND {$$ = FITSPTR->mapLenToRef($1, checkWCSSystem(), Coord::ARCSEC);}
 	;
 
 vvalue	: numeric sp numeric 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::IMAGE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ANGDEGREE sp ANGDEGREE 
 	{
-	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),DEGREE);
+	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),Coord::DEGREE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ARCMINUTE sp ARCMINUTE 
 	{
-	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),ARCMIN);
+	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),Coord::ARCMIN);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
 	}
 	| ARCSECOND sp ARCSECOND 
 	{
-	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),ARCSEC);
+	  Vector r=FITSPTR->mapLenToRef(Vector($1,$3),checkWCSSystem(),Coord::ARCSEC);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
@@ -223,9 +223,9 @@ dms	: DMSSTR {$$ = parseDMSStr($1);}
 coord	: sexagesimal sp sexagesimal
 	{
 	  Vector r;
-	  CoordSystem sys = checkWCSSystem();
-	  SkyFrame sky = checkWCSSky();
-	  if (sky == GALACTIC || sky == ECLIPTIC) 
+	  Coord::CoordSystem sys = checkWCSSystem();
+	  Coord::SkyFrame sky = checkWCSSky();
+	  if (sky == Coord::GALACTIC || sky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector($1,$3), sys, sky);
 	  else
 	    r = FITSPTR->mapToRef(Vector($1*360./24.,$3), sys, sky);
@@ -266,25 +266,25 @@ coord	: sexagesimal sp sexagesimal
 	}
 	;
 
-coordSystem : LOGICAL_ {$$ = IMAGE;}
-	| PHYSICAL_ {$$ = PHYSICAL;}
+coordSystem : LOGICAL_ {$$ = Coord::IMAGE;}
+	| PHYSICAL_ {$$ = Coord::PHYSICAL;}
 	;
 
 skyFrame : EQUATORIAL_ equatorial {$$ = $2;}
-	| B1950_  {$$ = FK4;}
-	| J2000_  {$$ = FK5;}	
-	| GALACTIC_ {$$ = GALACTIC;}
-	| ECLIPTIC_ {$$ = ECLIPTIC;}
+	| B1950_  {$$ = Coord::FK4;}
+	| J2000_  {$$ = Coord::FK5;}	
+	| GALACTIC_ {$$ = Coord::GALACTIC;}
+	| ECLIPTIC_ {$$ = Coord::ECLIPTIC;}
 	;
 
-equatorial : B1950_  {$$ = FK4;}
-	| J2000_  {$$ = FK5;}
+equatorial : B1950_  {$$ = Coord::FK4;}
+	| J2000_  {$$ = Coord::FK5;}
 	;
 
 initGlobal:{
 	  // global properties
-	  globalSystem = IMAGE;
-	  globalSky = FK5;
+	  globalSystem = Coord::IMAGE;
+	  globalSky = Coord::FK5;
 	  globalProps =
 	    Marker::SELECT | Marker::EDIT | Marker::MOVE |
 	    Marker::ROTATE | Marker::DELETE | Marker::HIGHLITE |
@@ -384,7 +384,7 @@ shape	:
 	}
 
 	| POINT_ bp coord ep shapeComment
-	  {fr->createBoxCirclePointCmd(Vector($3), POINTSIZE, 
+	  {fr->createPointCmd(Vector($3), Point::BOXCIRCLE, POINTSIZE, 
 	    color,dash,1,font,text,localProps,localComment,taglist,cblist);}
 
 	| POLYGON_ {polylist.deleteAll();} bp polyNodes ep shapeComment
@@ -456,23 +456,23 @@ static void setProps(unsigned short* props, unsigned short prop, int value)
     *props &= ~prop;
 }
 
-static CoordSystem checkWCSSystem()
+static Coord::CoordSystem checkWCSSystem()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return WCS;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::WCS;
   default:
     return localSystem;
   }
 }
 
-static SkyFrame checkWCSSky()
+static Coord::SkyFrame checkWCSSky()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return FK5;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::FK5;
   default:
    return localSky;
   }
diff --git a/saotk/frame/ruler.C b/saotk/frame/ruler.C
index db6fa13..17899b7 100644
--- a/saotk/frame/ruler.C
+++ b/saotk/frame/ruler.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "ruler.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Ruler::Ruler(const Ruler& a) : BaseLine(a)
@@ -17,8 +16,8 @@ Ruler::Ruler(const Ruler& a) : BaseLine(a)
 }
 
 Ruler::Ruler(Base* p, const Vector& ptr1, const Vector& ptr2,
-	     CoordSystem sys, SkyFrame sky, 
-	     CoordSystem distsys, SkyDist distfor,
+	     Coord::CoordSystem sys, Coord::SkyFrame sky, 
+	     Coord::CoordSystem distsys, Coord::SkyDist distfor,
 	     const char* clr, int* dsh,
 	     int wth, const char* fnt, const char* txt, 
 	     unsigned short prop, const char* cmt,
@@ -31,14 +30,14 @@ Ruler::Ruler(Base* p, const Vector& ptr1, const Vector& ptr2,
   distDist = distfor;
   dist = 0;
 
-  strcpy(type,"ruler");
+  strcpy(type_,"ruler");
   handle = new Vector[2];
   numHandle = 2;
 
   updateBBox();
 }
 
-void Ruler::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Ruler::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   GC lgc = renderXGC(mode);
 
@@ -97,11 +96,11 @@ void Ruler::renderPS(int mode)
 {
   renderPSGC(mode);
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
-  Vector cc = parent->mapFromRef(p3,CANVAS);
-  Vector dd = modifyArrow(p2,p1,CANVAS);
-  Vector ee = modifyArrow(p1,p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
+  Vector cc = parent->mapFromRef(p3,Coord::CANVAS);
+  Vector dd = modifyArrow(p2,p1,Coord::CANVAS);
+  Vector ee = modifyArrow(p1,p2,Coord::CANVAS);
 
   // line
   {
@@ -111,8 +110,8 @@ void Ruler::renderPS(int mode)
 	<< ee.TkCanvasPs(parent->canvas) << "lineto"
 	<< " stroke" << endl << ends;
     Tcl_AppendResult(parent->interp, str.str().c_str(), NULL);
-    renderPSArrow(p2,p1,CANVAS);
-    renderPSArrow(p1,p2,CANVAS);
+    renderPSArrow(p2,p1,Coord::CANVAS);
+    renderPSArrow(p1,p2,Coord::CANVAS);
   }
 
   // axes
@@ -172,16 +171,16 @@ void Ruler::renderMACOSX()
 {
   renderMACOSXGC();
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
-  Vector cc = parent->mapFromRef(p3,CANVAS);
-  Vector dd = modifyArrow(p2,p1,CANVAS);
-  Vector ee = modifyArrow(p1,p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
+  Vector cc = parent->mapFromRef(p3,Coord::CANVAS);
+  Vector dd = modifyArrow(p2,p1,Coord::CANVAS);
+  Vector ee = modifyArrow(p1,p2,Coord::CANVAS);
 
   // line
   macosxDrawLine(dd,ee);
-  renderMACOSXArrow(p2,p1,CANVAS);
-  renderMACOSXArrow(p1,p2,CANVAS);
+  renderMACOSXArrow(p2,p1,Coord::CANVAS);
+  renderMACOSXArrow(p1,p2,Coord::CANVAS);
 
   // axes
   renderMACOSXLineDash();
@@ -226,16 +225,16 @@ void Ruler::renderWIN32()
 {
   renderWIN32GC();
 
-  Vector aa = parent->mapFromRef(p1,CANVAS);
-  Vector bb = parent->mapFromRef(p2,CANVAS);
-  Vector cc = parent->mapFromRef(p3,CANVAS);
-  Vector dd = modifyArrow(p2,p1,CANVAS);
-  Vector ee = modifyArrow(p1,p2,CANVAS);
+  Vector aa = parent->mapFromRef(p1,Coord::CANVAS);
+  Vector bb = parent->mapFromRef(p2,Coord::CANVAS);
+  Vector cc = parent->mapFromRef(p3,Coord::CANVAS);
+  Vector dd = modifyArrow(p2,p1,Coord::CANVAS);
+  Vector ee = modifyArrow(p1,p2,Coord::CANVAS);
 
   // line
   win32DrawLine(dd,ee);
-  renderWIN32Arrow(p2,p1,CANVAS);
-  renderWIN32Arrow(p1,p2,CANVAS);
+  renderWIN32Arrow(p2,p1,Coord::CANVAS);
+  renderWIN32Arrow(p1,p2,Coord::CANVAS);
 
   // axes
   renderWIN32LineDash();
@@ -287,14 +286,14 @@ void Ruler::updateHandles()
   dist = ptr->mapDistFromRef(p2, p1, distSystem, distDist);
 
   // generate handles in canvas coords
-  handle[0] = parent->mapFromRef(p1,CANVAS);
-  handle[1] = parent->mapFromRef(p2,CANVAS);
+  handle[0] = parent->mapFromRef(p1,Coord::CANVAS);
+  handle[1] = parent->mapFromRef(p2,Coord::CANVAS);
 }
 
 void Ruler::calcAllBBox()
 {
   // P3
-  bbox.bound(parent->mapFromRef(p3,CANVAS));
+  bbox.bound(parent->mapFromRef(p3,Coord::CANVAS));
 
   // make room for text
   if (tkfont_) {
@@ -308,9 +307,9 @@ void Ruler::calcAllBBox()
     char* buf = dupstr(str.str().c_str());
     int width = Tk_TextWidth(tkfont_, buf, strlen(buf));
 
-    Vector ll = parent->mapFromRef(v,CANVAS) *
+    Vector ll = parent->mapFromRef(v,Coord::CANVAS) *
       Translate(-width/2.,-metrics.descent);
-    Vector ur = parent->mapFromRef(v,CANVAS) *
+    Vector ur = parent->mapFromRef(v,Coord::CANVAS) *
       Translate(width/2.,metrics.ascent);
     
     bbox.bound(ll);
@@ -337,8 +336,8 @@ int Ruler::isOn(const Vector& v, const Vector& v1, const Vector& v2)
 
   // do this in canvas coords, not ref coords
 
-  Vector l1 = parent->mapFromRef(v1,CANVAS);
-  Vector l2 = parent->mapFromRef(v2,CANVAS);
+  Vector l1 = parent->mapFromRef(v1,Coord::CANVAS);
+  Vector l2 = parent->mapFromRef(v2,Coord::CANVAS);
   double a = (l2-l1).angle();
 
   Matrix m = Translate(-l1) * Rotate(a);
@@ -369,7 +368,7 @@ int Ruler::isIn(const Vector& vv)
   */
 
   // analysis in ref coords
-  Vector v = parent->mapToRef(vv,CANVAS);
+  Vector v = parent->mapToRef(vv,Coord::CANVAS);
 
   int crossings = 0;   // number of crossings
   int sign;
@@ -410,8 +409,8 @@ int Ruler::isIn(const Vector& vv)
   return fmod(float(crossings),float(2)) ? 1 : 0; // if odd, point is inside
 }
 
-void Ruler::setCoordSystem(CoordSystem sys, SkyFrame sky, 
-			   CoordSystem dsys, SkyDist dist)
+void Ruler::setCoordSystem(Coord::CoordSystem sys, Coord::SkyFrame sky, 
+			   Coord::CoordSystem dsys, Coord::SkyDist dist)
 {
   coordSystem = sys;
   skyFrame = sky;
@@ -423,28 +422,28 @@ void Ruler::setCoordSystem(CoordSystem sys, SkyFrame sky,
 void Ruler::distToStr(ostringstream& str)
 {
   switch (distSystem) {
-  case IMAGE:
+  case Coord::IMAGE:
     str << dist << " img";
     break;
-  case PHYSICAL:
+  case Coord::PHYSICAL:
     str << dist << " phy";
     break;
-  case AMPLIFIER:
+  case Coord::AMPLIFIER:
     str << dist << " amp";
     break;
-  case DETECTOR:
+  case Coord::DETECTOR:
     str << dist << " det";
     break;
   default:
     if (parent->findFits()->hasWCSCel(distSystem))
       switch (distDist) {
-      case DEGREES:
+      case Coord::DEGREE:
 	str << dist << " deg";
 	break;
-      case ARCMIN:
+      case Coord::ARCMIN:
 	str << dist << '\'';
 	break;
-      case ARCSEC:
+      case Coord::ARCSEC:
 	str << dist << '"';
 	break;
       }
@@ -455,22 +454,22 @@ void Ruler::distToStr(ostringstream& str)
 
 // list
 
-void Ruler::list(ostream& str, CoordSystem sys, SkyFrame sky,
-		 SkyFormat format, int conj, int strip)
+void Ruler::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		 Coord::SkyFormat format, int conj, int strip)
 {
   if (!strip) {
     FitsImage* ptr = parent->findFits(sys,center);
     listPre(str, sys, sky, ptr, strip, 1);
 
     switch (sys) {
-    case IMAGE:
-    case PHYSICAL:
-    case DETECTOR:
-    case AMPLIFIER:
+    case Coord::IMAGE:
+    case Coord::PHYSICAL:
+    case Coord::DETECTOR:
+    case Coord::AMPLIFIER:
       {
 	Vector v1 = ptr->mapFromRef(p1,sys);
 	Vector v2 = ptr->mapFromRef(p2,sys);
-	str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
+	str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
 	    << v2[0] << ',' << v2[1] << ')';
       }
       break;
@@ -478,15 +477,15 @@ void Ruler::list(ostream& str, CoordSystem sys, SkyFrame sky,
       if (ptr->hasWCS(sys)) {
 	if (ptr->hasWCSCel(sys)) {
 	  switch (format) {
-	  case DEGREES:
+	  case Coord::DEGREES:
 	    {
 	      Vector v1 = ptr->mapFromRef(p1,sys,sky);
 	      Vector v2 = ptr->mapFromRef(p2,sys,sky);
-	      str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+	      str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
 		  << ',' << v2[0] << ',' << v2[1] << ')';
 	    }
 	    break;
-	  case SEXAGESIMAL:
+	  case Coord::SEXAGESIMAL:
 	    {
 	      char buf[64];
 	      char ra1[16], ra2[16];
@@ -503,7 +502,7 @@ void Ruler::list(ostream& str, CoordSystem sys, SkyFrame sky,
 		istringstream wcs(x);
 		wcs >> ra2 >> dec2;
 	      }
-	      str << type << '(' << ra1 << ',' << dec1 << ',' 
+	      str << type_ << '(' << ra1 << ',' << dec1 << ',' 
 		  << ra2 << ',' << dec2 << ')';
 	    }
 	    break;
@@ -512,7 +511,7 @@ void Ruler::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	else {
 	  Vector v1 = ptr->mapFromRef(p1,sys);
 	  Vector v2 = ptr->mapFromRef(p2,sys);
-	  str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+	  str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
 	      << ',' << v2[0] << ',' << v2[1] << ')';
 	}
       }
@@ -522,15 +521,15 @@ void Ruler::list(ostream& str, CoordSystem sys, SkyFrame sky,
       str << " ||";
 
     str << " ruler=";
-    listCoordSystem(str, coordSystem, skyFrame, 1, ptr->hasWCSCel(coordSystem));
+    coord.listCoordSystem(str, coordSystem, skyFrame, 1, ptr->hasWCSCel(coordSystem));
     str << ' ';
-    listDistSystem(str, distSystem, distDist, ptr->hasWCSCel(distSystem));
+    coord.listDistSystem(str, distSystem, distDist, ptr->hasWCSCel(distSystem));
     listProperties(str, 0);
   }
 }
 
-void Ruler::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		    SkyFormat format)
+void Ruler::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		    Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   Vector vv[2];
@@ -538,12 +537,12 @@ void Ruler::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   vv[1] = p2;
 
   ostringstream sysstr;
-  listCoordSystem(sysstr,coordSystem,skyFrame,0,ptr->hasWCSCel(coordSystem));
+  coord.listCoordSystem(sysstr,coordSystem,skyFrame,0,ptr->hasWCSCel(coordSystem));
   ostringstream diststr;
-  listDistSystem(diststr,distSystem,distDist,ptr->hasWCSCel(distSystem));
+  coord.listDistSystem(diststr,distSystem,distDist,ptr->hasWCSCel(distSystem));
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowPoint(ptr,sys,sky,format,vv,2);
   XMLRow(XMLPARAM,(char*)(sysstr.str().c_str()));
diff --git a/saotk/frame/ruler.h b/saotk/frame/ruler.h
index ac9d423..3902776 100644
--- a/saotk/frame/ruler.h
+++ b/saotk/frame/ruler.h
@@ -10,14 +10,14 @@
 class Ruler : public BaseLine {
 private:
   Vector p3;
-  CoordSystem coordSystem;
-  SkyFrame skyFrame;
-  CoordSystem distSystem;
-  SkyDist distDist;
+  Coord::CoordSystem coordSystem;
+  Coord::SkyFrame skyFrame;
+  Coord::CoordSystem distSystem;
+  Coord::SkyDist distDist;
   double dist;
 
 private:
-  void renderX(Drawable, InternalSystem, RenderMode);
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
   GC renderXGC(RenderMode);
 
   void renderPS(int);
@@ -42,8 +42,8 @@ private:
 public:
   Ruler(const Ruler&);
   Ruler(Base* p, const Vector& ptr1, const Vector& ptr2,
-	CoordSystem sys, SkyFrame sky, 
-	CoordSystem distsys, SkyDist distfor,
+	Coord::CoordSystem sys, Coord::SkyFrame sky, 
+	Coord::CoordSystem distsys, Coord::SkyDist distfor,
 	const char* clr, int* dsh,
 	int wth, const char* fnt, const char* txt, 
 	unsigned short prop, const char* cmt,
@@ -58,16 +58,16 @@ public:
   const Vector& getP1() {return p1;}
   const Vector& getP2() {return p2;}
   const Vector& getP3() {return p3;}
-  void setCoordSystem(CoordSystem, SkyFrame, CoordSystem, SkyDist);
+  void setCoordSystem(Coord::CoordSystem, Coord::SkyFrame, Coord::CoordSystem, Coord::SkyDist);
 
-  CoordSystem getSystem() {return coordSystem;}
-  SkyFrame getSkyFrame() {return skyFrame;}
+  Coord::CoordSystem getSystem() {return coordSystem;}
+  Coord::SkyFrame getSkyFrame() {return skyFrame;}
 
-  CoordSystem getDistSystem() {return distSystem;}
-  SkyDist getDistDist() {return distDist;}
+  Coord::CoordSystem getDistSystem() {return distSystem;}
+  Coord::SkyDist getDistDist() {return distDist;}
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
 };
 
 #endif
diff --git a/saotk/frame/saoparser.C b/saotk/frame/saoparser.C
index dcb4114..764f872 100644
--- a/saotk/frame/saoparser.C
+++ b/saotk/frame/saoparser.C
@@ -1574,13 +1574,13 @@ yyreduce:
 
   case 26:
 #line 143 "saoparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), Coord::IMAGE);;}
     break;
 
   case 27:
 #line 147 "saoparser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::IMAGE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1595,7 +1595,7 @@ yyreduce:
   case 29:
 #line 159 "saoparser.Y"
     {
-	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::IMAGE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1738,7 +1738,7 @@ yyreduce:
 
   case 45:
 #line 263 "saoparser.Y"
-    {fr->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)), POINTSIZE, 
+    {fr->createPointCmd(Vector((yyvsp[(3) - (5)].vector)), Point::BOXCIRCLE, POINTSIZE, 
 	    color,dash,1,font,text,localProps,localComment,taglist,cblist);;}
     break;
 
diff --git a/saotk/frame/saoparser.Y b/saotk/frame/saoparser.Y
index e284961..0adbf68 100644
--- a/saotk/frame/saoparser.Y
+++ b/saotk/frame/saoparser.Y
@@ -140,12 +140,12 @@ optangle: /* empty */ {$$ = 0;}
 angle	: numeric {$$ = degToRad($1);} /* assume degree */
 	;
 
-value	: numeric {$$ = FITSPTR->mapLenToRef($1, IMAGE);}
+value	: numeric {$$ = FITSPTR->mapLenToRef($1, Coord::IMAGE);}
 	;
 
 vvalue	: numeric sp numeric 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::IMAGE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
@@ -157,7 +157,7 @@ numberof: N_ '=' INT {$$ = $3;}
 
 coord	: numeric sp numeric 
 	{
-	  Vector r = FITSPTR->mapToRef(Vector($1,$3), IMAGE);
+	  Vector r = FITSPTR->mapToRef(Vector($1,$3), Coord::IMAGE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
@@ -260,7 +260,7 @@ shape	: CIRCLE_ bp coord sp value ep shapeComment
 	}
 
 	| POINT_ bp coord ep shapeComment
-	  {fr->createBoxCirclePointCmd(Vector($3), POINTSIZE, 
+	  {fr->createPointCmd(Vector($3), Point::BOXCIRCLE, POINTSIZE, 
 	    color,dash,1,font,text,localProps,localComment,taglist,cblist);}
 
 	| POLYGON_ {polylist.deleteAll();} bp polyNodes ep shapeComment
diff --git a/saotk/frame/text.C b/saotk/frame/text.C
index 0b46c5c..71f6e8f 100644
--- a/saotk/frame/text.C
+++ b/saotk/frame/text.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "text.h"
-#include "framebase.h"
 #include "fitsimage.h"
 #include "rotstr.h"
 
@@ -24,7 +23,7 @@ Text::Text(Base* p, const Vector& ctr,
 	   const List<Tag>& tg, const List<CallBack>& cb) 
   : Marker(p, ctr, ang, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
 {
-  strcpy(type,"text");
+  strcpy(type_,"text");
   handle = new Vector[4];
   numHandle = 4;
   rotate = rot;
@@ -32,7 +31,7 @@ Text::Text(Base* p, const Vector& ctr,
   updateBBox();
 }
 
-void Text::renderX(Drawable drawable, InternalSystem sys, RenderMode mode)
+void Text::renderX(Drawable drawable, Coord::InternalSystem sys, RenderMode mode)
 {
   if (text && *text && tkfont_) {
     GC lgc = renderXGC(mode);
@@ -73,7 +72,7 @@ void Text::renderPS(int mode)
 	<< " scalefont setfont" << endl;
 
     double ang = rotate ? calcAngle() : 0;
-    Vector cc = (parent->mapFromRef(center,CANVAS)).TkCanvasPs(parent->canvas);
+    Vector cc = (parent->mapFromRef(center,Coord::CANVAS)).TkCanvasPs(parent->canvas);
     str << "newpath " << endl
 	<< cc << " moveto" << endl
 	<< '(' << psQuote(text) << ')' << endl
@@ -107,7 +106,7 @@ void Text::renderMACOSX()
     int width = Tk_TextWidth(psfont_, text, strlen(text));
 
     double ang = rotate ? calcAngle() : 0;
-    Vector cc = parent->mapFromRef(center,CANVAS);
+    Vector cc = parent->mapFromRef(center,Coord::CANVAS);
     Matrix mm = Translate(-cc) *
       Translate(-width/2.,metrics.descent) *
       Rotate(ang) * 
@@ -132,7 +131,7 @@ void Text::renderWIN32()
     int delta = (metrics.ascent-metrics.descent)/2.;
 
     double ang = rotate ? calcAngle() : 0;
-    Vector cc = parent->mapFromRef(center,CANVAS);
+    Vector cc = parent->mapFromRef(center,Coord::CANVAS);
     Matrix mm = Translate(-cc) *
       Translate(-width/2., delta) *
       Rotate(ang) *
@@ -148,7 +147,7 @@ void Text::renderWIN32()
 
 void Text::updateHandles()
 {
-  Vector cc = parent->mapFromRef(center,CANVAS);
+  Vector cc = parent->mapFromRef(center,Coord::CANVAS);
 
   if (text && *text && tkfont_) {
     Tk_FontMetrics metrics;
@@ -187,7 +186,7 @@ int Text::isIn(const Vector& vv)
     float ww = Tk_TextWidth(tkfont_, text, strlen(text))/2.;
     float hh = metrics.linespace/2.;
 
-    Vector pp = bckMap(vv,CANVAS);
+    Vector pp = bckMap(vv,Coord::CANVAS);
 
     if (pp[0]<-ww || pp[0]>ww || pp[1]<-hh || pp[1]>hh)
       return 0;
@@ -206,35 +205,35 @@ void Text::setRotate(int rot)
 
 // list
 
-void Text::list(ostream& str, CoordSystem sys, SkyFrame sky, 
-		SkyFormat format, int conj, int strip)
+void Text::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		Coord::SkyFormat format, int conj, int strip)
 {
   if (!strip) {
     FitsImage* ptr = parent->findFits(sys,center);
     listPre(str, sys, sky, ptr, strip, 1);
 
     switch (sys) {
-    case IMAGE:
-    case PHYSICAL:
-    case DETECTOR:
-    case AMPLIFIER:
+    case Coord::IMAGE:
+    case Coord::PHYSICAL:
+    case Coord::DETECTOR:
+    case Coord::AMPLIFIER:
       {
 	Vector v = ptr->mapFromRef(center,sys);
-	str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
+	str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
       }
       break;
     default:
       if (ptr->hasWCS(sys)) {
 	if (ptr->hasWCSCel(sys)) {
 	  switch (format) {
-	  case DEGREES:
+	  case Coord::DEGREES:
 	    {
 	      Vector v = ptr->mapFromRef(center,sys,sky);
-	      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] 
+	      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] 
 		  << ')';
 	    }
 	    break;
-	  case SEXAGESIMAL:
+	  case Coord::SEXAGESIMAL:
 	    {
 	      char buf[64];
 	      ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -244,14 +243,14 @@ void Text::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	      string x(buf);
 	      istringstream wcs(x);
 	      wcs >> ra >> dec;
-	      str << type << '(' << ra << ',' << dec << ')';
+	      str << type_ << '(' << ra << ',' << dec << ')';
 	    }
 	    break;
 	  }
 	}
 	else {
 	  Vector v = ptr->mapFromRef(center,sys);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] << ')';
 	}
       }
     }
@@ -267,13 +266,13 @@ void Text::list(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Text::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		   SkyFormat format)
+void Text::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		   Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
 
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowCenter(ptr,sys,sky,format);
   XMLRowAng(sys,sky);
@@ -283,8 +282,8 @@ void Text::listXML(ostream& str, CoordSystem sys, SkyFrame sky,
   XMLRowEnd(str);
 }
 
-void Text::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
-		      SkyFormat format, int strip)
+void Text::listSAOtng(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky,
+		      Coord::SkyFormat format, int strip)
 {
   FitsImage* ptr = parent->findFits();
   if (properties&INCLUDE)
@@ -293,27 +292,27 @@ void Text::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
     str << '-';
 
   switch (sys) {
-  case IMAGE:
-  case PHYSICAL:
-  case DETECTOR:
-  case AMPLIFIER:
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+  case Coord::DETECTOR:
+  case Coord::AMPLIFIER:
     {
-      Vector v = ptr->mapFromRef(center,IMAGE);
-      str << type << '(' << setprecision(8) << v[0] << ',' << v[1] 
+      Vector v = ptr->mapFromRef(center,Coord::IMAGE);
+      str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] 
 	  << ", \"" << text << "\")";
     }
     break;
   default:
     if (ptr->hasWCSCel(sys)) {
       switch (format) {
-      case DEGREES:
+      case Coord::DEGREES:
 	{
 	  Vector v = ptr->mapFromRef(center,sys,sky);
-	  str << type << '(' << setprecision(8) << v[0] << ',' << v[1] <<", \""
+	  str << type_ << '(' << setprecision(8) << v[0] << ',' << v[1] <<", \""
 	      << text << "\")";
 	}
 	break;
-      case SEXAGESIMAL:
+      case Coord::SEXAGESIMAL:
 	{
 	  char buf[64];
 	  ptr->mapFromRef(center,sys,sky,format,buf,64);
@@ -322,7 +321,7 @@ void Text::listSAOtng(ostream& str, CoordSystem sys, SkyFrame sky,
 	  string x(buf);
 	  istringstream wcs(x);
 	  wcs >> ra >> dec;
-	  str << type << '(' << ra << ',' << dec
+	  str << type_ << '(' << ra << ',' << dec
 	      << ", \"" << text << "\")";
 	}
 	break;
diff --git a/saotk/frame/text.h b/saotk/frame/text.h
index 0770a5c..61f7882 100644
--- a/saotk/frame/text.h
+++ b/saotk/frame/text.h
@@ -12,9 +12,9 @@ class Text : public Marker {
   int rotate;
 
  private:
-  void renderX(Drawable, InternalSystem, RenderMode);
-  void renderXText(Drawable, InternalSystem, RenderMode) {}
-  void renderXInclude(Drawable, InternalSystem, RenderMode) {}
+  void renderX(Drawable, Coord::InternalSystem, RenderMode);
+  void renderXText(Drawable, Coord::InternalSystem, RenderMode) {}
+  void renderXInclude(Drawable, Coord::InternalSystem, RenderMode) {}
 
   void renderPS(int);
   void renderPSText(int) {}
@@ -45,6 +45,7 @@ class Text : public Marker {
        const List<Tag>& tg, const List<CallBack>& cb);
 
   Marker* dup() {return new Text(*this);}
+
   int isIn(const Vector&);
 
   void editBegin(int) {}
@@ -54,9 +55,9 @@ class Text : public Marker {
   void setRotate(int);
   int getRotate() {return rotate;}
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int);
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int);
 };
 
 #endif
diff --git a/saotk/frame/tngparser.C b/saotk/frame/tngparser.C
index 99bdd16..e91521d 100644
--- a/saotk/frame/tngparser.C
+++ b/saotk/frame/tngparser.C
@@ -193,10 +193,10 @@ extern int tnglex(void*, tngFlexLexer*);
 extern void tngerror(Base*, tngFlexLexer*, const char*);
 extern void tngDiscard(int);
 
-static CoordSystem globalSystem;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static unsigned short globalProps;
 static unsigned short localProps;
@@ -218,8 +218,8 @@ static List<Tag> taglist;
 static List<CallBack> cblist;
 
 static void setProps(unsigned short* props, unsigned short prop, int value);
-static CoordSystem checkWCSSystem();
-static SkyFrame checkWCSSky();
+static Coord::CoordSystem checkWCSSystem();
+static Coord::SkyFrame checkWCSSky();
 
 
 /* Enabling traces.  */
@@ -1662,13 +1662,13 @@ yyreduce:
 
   case 27:
 #line 177 "tngparser.Y"
-    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real),IMAGE);;}
+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real),Coord::IMAGE);;}
     break;
 
   case 28:
 #line 181 "tngparser.Y"
     {
-	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), Coord::IMAGE);
 	  (yyval.vector)[0] = r[0];
 	  (yyval.vector)[1] = r[1];
 	  (yyval.vector)[2] = r[2];
@@ -1684,9 +1684,9 @@ yyreduce:
 #line 193 "tngparser.Y"
     {
 	  Vector r;
-	  CoordSystem sys = checkWCSSystem();
-	  SkyFrame sky = checkWCSSky();
-	  if (sky == GALACTIC || sky == ECLIPTIC) 
+	  Coord::CoordSystem sys = checkWCSSystem();
+	  Coord::SkyFrame sky = checkWCSSky();
+	  if (sky == Coord::GALACTIC || sky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
 	  else
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
@@ -1720,60 +1720,60 @@ yyreduce:
 
   case 33:
 #line 223 "tngparser.Y"
-    {(yyval.integer) = FK4;;}
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 34:
 #line 224 "tngparser.Y"
-    {(yyval.integer) = FK4;;}
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 35:
 #line 225 "tngparser.Y"
-    {(yyval.integer) = FK4_NO_E;;}
+    {(yyval.integer) = Coord::FK4_NO_E;;}
     break;
 
   case 36:
 #line 226 "tngparser.Y"
-    {(yyval.integer) = FK5;;}
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 37:
 #line 227 "tngparser.Y"
-    {(yyval.integer) = FK5;;}
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 38:
 #line 228 "tngparser.Y"
-    {(yyval.integer) = ICRS;;}
+    {(yyval.integer) = Coord::ICRS;;}
     break;
 
   case 39:
 #line 229 "tngparser.Y"
-    {(yyval.integer) = GALACTIC;;}
+    {(yyval.integer) = Coord::GALACTIC;;}
     break;
 
   case 40:
 #line 230 "tngparser.Y"
-    {(yyval.integer) = SUPERGALACTIC;;}
+    {(yyval.integer) = Coord::SUPERGALACTIC;;}
     break;
 
   case 41:
 #line 231 "tngparser.Y"
-    {(yyval.integer) = ECLIPTIC;;}
+    {(yyval.integer) = Coord::ECLIPTIC;;}
     break;
 
   case 42:
 #line 232 "tngparser.Y"
-    {(yyval.integer) = HELIOECLIPTIC;;}
+    {(yyval.integer) = Coord::HELIOECLIPTIC;;}
     break;
 
   case 43:
 #line 235 "tngparser.Y"
     {
 	  // global properties
-	  globalSystem = IMAGE;
-	  globalSky = FK5;
+	  globalSystem = Coord::IMAGE;
+	  globalSky = Coord::FK5;
 	  globalProps =
 	    Marker::SELECT | Marker::EDIT | Marker::MOVE |
 	    Marker::ROTATE | Marker::DELETE | Marker::HIGHLITE |
@@ -1854,7 +1854,7 @@ yyreduce:
 
   case 52:
 #line 298 "tngparser.Y"
-    {fr->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)), POINTSIZE, 
+    {fr->createPointCmd(Vector((yyvsp[(3) - (5)].vector)), Point::BOXCIRCLE, POINTSIZE, 
 	    localColor,dash,1,globalFont,localText,
 	    localProps,localComment,taglist,cblist);;}
     break;
@@ -1977,27 +1977,27 @@ yyreduce:
 
   case 82:
 #line 351 "tngparser.Y"
-    {globalSystem = localSystem = IMAGE;;}
+    {globalSystem = localSystem = Coord::IMAGE;;}
     break;
 
   case 83:
 #line 352 "tngparser.Y"
-    {globalSystem = localSystem = IMAGE;;}
+    {globalSystem = localSystem = Coord::IMAGE;;}
     break;
 
   case 84:
 #line 356 "tngparser.Y"
     {
-	    globalSystem = localSystem = WCS;
-	    globalSky = localSky = FK5;
+	    globalSystem = localSystem = Coord::WCS;
+	    globalSky = localSky = Coord::FK5;
 	  ;}
     break;
 
   case 85:
 #line 361 "tngparser.Y"
     {
-	    globalSystem = localSystem = WCS;
-	    globalSky = localSky = (SkyFrame)(yyvsp[(2) - (3)].integer);
+	    globalSystem = localSystem = Coord::WCS;
+	    globalSky = localSky = (Coord::SkyFrame)(yyvsp[(2) - (3)].integer);
 	  ;}
     break;
 
@@ -2228,23 +2228,23 @@ static void setProps(unsigned short* props, unsigned short prop, int value)
     *props &= ~prop;
 }
 
-static CoordSystem checkWCSSystem()
+static Coord::CoordSystem checkWCSSystem()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return WCS;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::WCS;
   default:
     return localSystem;
   }
 }
 
-static SkyFrame checkWCSSky()
+static Coord::SkyFrame checkWCSSky()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return FK5;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::FK5;
   default:
    return localSky;
   }
diff --git a/saotk/frame/tngparser.Y b/saotk/frame/tngparser.Y
index 11c1e83..bc3ef9a 100644
--- a/saotk/frame/tngparser.Y
+++ b/saotk/frame/tngparser.Y
@@ -29,10 +29,10 @@ extern int tnglex(void*, tngFlexLexer*);
 extern void tngerror(Base*, tngFlexLexer*, const char*);
 extern void tngDiscard(int);
 
-static CoordSystem globalSystem;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static unsigned short globalProps;
 static unsigned short localProps;
@@ -54,8 +54,8 @@ static List<Tag> taglist;
 static List<CallBack> cblist;
 
 static void setProps(unsigned short* props, unsigned short prop, int value);
-static CoordSystem checkWCSSystem();
-static SkyFrame checkWCSSky();
+static Coord::CoordSystem checkWCSSystem();
+static Coord::SkyFrame checkWCSSky();
 %}
 
 %union {
@@ -174,12 +174,12 @@ angle	: numeric {$$ = degToRad($1);} /* assume degree */
 	| ANGDEGREE {$$ = degToRad($1);}
 	;
 
-value	: numeric {$$ = FITSPTR->mapLenToRef($1,IMAGE);}
+value	: numeric {$$ = FITSPTR->mapLenToRef($1,Coord::IMAGE);}
 	;
 
 vvalue	: numeric sp numeric 
 	{
-	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), IMAGE);
+	  Vector r = FITSPTR->mapLenToRef(Vector($1,$3), Coord::IMAGE);
 	  $$[0] = r[0];
 	  $$[1] = r[1];
 	  $$[2] = r[2];
@@ -192,9 +192,9 @@ sexagesimal: SEXSTR {$$ = parseSEXStr($1);}
 coord	: sexagesimal sp sexagesimal
 	{
 	  Vector r;
-	  CoordSystem sys = checkWCSSystem();
-	  SkyFrame sky = checkWCSSky();
-	  if (sky == GALACTIC || sky == ECLIPTIC) 
+	  Coord::CoordSystem sys = checkWCSSystem();
+	  Coord::SkyFrame sky = checkWCSSky();
+	  if (sky == Coord::GALACTIC || sky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector($1,$3), sys, sky);
 	  else
 	    r = FITSPTR->mapToRef(Vector($1*360./24.,$3), sys, sky);
@@ -220,22 +220,22 @@ coord	: sexagesimal sp sexagesimal
 	}
 	;
 
-skyFrame : FK4_ {$$ = FK4;}
-	| B1950_ {$$ = FK4;}
-	| FK4_NO_E_ {$$ = FK4_NO_E;}
-	| FK5_ {$$ = FK5;}
-	| J2000_ {$$ = FK5;}
-	| ICRS_ {$$ = ICRS;}
-	| GALACTIC_ {$$ = GALACTIC;}
-	| SUPERGALACTIC_ {$$ = SUPERGALACTIC;}
-	| ECLIPTIC_ {$$ = ECLIPTIC;}
-	| HELIOECLIPTIC_ {$$ = HELIOECLIPTIC;}
+skyFrame : FK4_ {$$ = Coord::FK4;}
+	| B1950_ {$$ = Coord::FK4;}
+	| FK4_NO_E_ {$$ = Coord::FK4_NO_E;}
+	| FK5_ {$$ = Coord::FK5;}
+	| J2000_ {$$ = Coord::FK5;}
+	| ICRS_ {$$ = Coord::ICRS;}
+	| GALACTIC_ {$$ = Coord::GALACTIC;}
+	| SUPERGALACTIC_ {$$ = Coord::SUPERGALACTIC;}
+	| ECLIPTIC_ {$$ = Coord::ECLIPTIC;}
+	| HELIOECLIPTIC_ {$$ = Coord::HELIOECLIPTIC;}
 	;
 
 initGlobal:{
 	  // global properties
-	  globalSystem = IMAGE;
-	  globalSky = FK5;
+	  globalSystem = Coord::IMAGE;
+	  globalSky = Coord::FK5;
 	  globalProps =
 	    Marker::SELECT | Marker::EDIT | Marker::MOVE |
 	    Marker::ROTATE | Marker::DELETE | Marker::HIGHLITE |
@@ -295,7 +295,7 @@ shape	: CIRCLE_ bp coord sp value ep shapeComment
 	    localProps,localComment,taglist,cblist);}
 
 	| POINT_ bp coord ep shapeComment
-	  {fr->createBoxCirclePointCmd(Vector($3), POINTSIZE, 
+	  {fr->createPointCmd(Vector($3), Point::BOXCIRCLE, POINTSIZE, 
 	    localColor,dash,1,globalFont,localText,
 	    localProps,localComment,taglist,cblist);}
 
@@ -348,19 +348,19 @@ shapeComment : /* empty */
 
 tngFormat : HMS_ tngWCS
 	| DEGREES_ tngWCS
-	| PIXELS_ {globalSystem = localSystem = IMAGE;}
-	| PIXELS_ '(' PHYSICAL_ ')' {globalSystem = localSystem = IMAGE;}
+	| PIXELS_ {globalSystem = localSystem = Coord::IMAGE;}
+	| PIXELS_ '(' PHYSICAL_ ')' {globalSystem = localSystem = Coord::IMAGE;}
 	;
 
 tngWCS	: /* empty */
 	  {
-	    globalSystem = localSystem = WCS;
-	    globalSky = localSky = FK5;
+	    globalSystem = localSystem = Coord::WCS;
+	    globalSky = localSky = Coord::FK5;
 	  }
 	| '(' skyFrame ')' 
 	  {
-	    globalSystem = localSystem = WCS;
-	    globalSky = localSky = (SkyFrame)$2;
+	    globalSystem = localSystem = Coord::WCS;
+	    globalSky = localSky = (Coord::SkyFrame)$2;
 	  }
 	;
 
@@ -374,23 +374,23 @@ static void setProps(unsigned short* props, unsigned short prop, int value)
     *props &= ~prop;
 }
 
-static CoordSystem checkWCSSystem()
+static Coord::CoordSystem checkWCSSystem()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return WCS;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::WCS;
   default:
     return localSystem;
   }
 }
 
-static SkyFrame checkWCSSky()
+static Coord::SkyFrame checkWCSSky()
 {
   switch (localSystem) {
-  case IMAGE:
-  case PHYSICAL:
-    return FK5;
+  case Coord::IMAGE:
+  case Coord::PHYSICAL:
+    return Coord::FK5;
   default:
    return localSky;
   }
diff --git a/saotk/frame/vect.C b/saotk/frame/vect.C
index 7089b53..c9c0142 100644
--- a/saotk/frame/vect.C
+++ b/saotk/frame/vect.C
@@ -3,7 +3,6 @@
 // For conditions of distribution and use, see copyright notice in "copyright"
 
 #include "vect.h"
-#include "framebase.h"
 #include "fitsimage.h"
 
 Vect::Vect(Base* p, const Vector& ptr1,
@@ -15,7 +14,7 @@ Vect::Vect(Base* p, const Vector& ptr1,
 	   const List<Tag>& tg, const List<CallBack>& cb) 
   : Line(p, ptr1, ptr2, 0, arr, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
 {
-  strcpy(type,"vector");
+  strcpy(type_,"vector");
 }
 
 Vect::Vect(Base* p, const Vector& pt,
@@ -27,7 +26,7 @@ Vect::Vect(Base* p, const Vector& pt,
 	   const List<Tag>& tg, const List<CallBack>& cb) 
   : Line(p, pt, pt, 0, arr, clr, dsh, wth, fnt, txt, prop, cmt, tg, cb)
 {
-  strcpy(type,"vector");
+  strcpy(type_,"vector");
   p2 = Vector(mag,0) * Rotate(ang) * flip_ * Translate(p1);
   updateBBox();
 }
@@ -43,24 +42,24 @@ void Vect::setPoints(const Vector& pt, double mag, double ang)
 
 // list
 
-void Vect::list(ostream& str, CoordSystem sys, SkyFrame sky, 
-		SkyFormat format, int conj, int strip)
+void Vect::list(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		Coord::SkyFormat format, int conj, int strip)
 {
   if (!strip) {
     FitsImage* ptr = parent->findFits(sys,center);
     listPre(str, sys, sky, ptr, strip, 1);
 
     switch (sys) {
-    case IMAGE:
-    case PHYSICAL:
-    case DETECTOR:
-    case AMPLIFIER:
+    case Coord::IMAGE:
+    case Coord::PHYSICAL:
+    case Coord::DETECTOR:
+    case Coord::AMPLIFIER:
       {
 	Vector v1 = ptr->mapFromRef(p1,sys);
 	Vector v2 = ptr->mapFromRef(p2,sys);
 	double mag = (p2-p1).length();
 	double ang = (p2-p1).angle();
-	str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
+	str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] << ','
 	    << ptr->mapLenFromRef(mag,sys) << ',' 
 	    << radToDeg(parent->mapAngleFromRef(ang,sys)) << ')';
       }
@@ -69,19 +68,19 @@ void Vect::list(ostream& str, CoordSystem sys, SkyFrame sky,
       if (ptr->hasWCS(sys)) {
 	if (ptr->hasWCSCel(sys)) {
 	  switch (format) {
-	  case DEGREES:
+	  case Coord::DEGREES:
 	    {
 	      Vector v1 = ptr->mapFromRef(p1,sys,sky);
 	      Vector v2 = ptr->mapFromRef(p2,sys,sky);
 	      double mag = (p2-p1).length();
 	      double ang = (p2-p1).angle();
-	      str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
-		  << ','  << ptr->mapLenFromRef(mag,sys,ARCSEC) << "\""
+	      str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+		  << ','  << ptr->mapLenFromRef(mag,sys,Coord::ARCSEC) << "\""
 		  << ',' << radToDeg(parent->mapAngleFromRef(ang,sys,sky)) 
 		  << ')';
 	    }
 	    break;
-	  case SEXAGESIMAL:
+	  case Coord::SEXAGESIMAL:
 	    {
 	      char buf[64];
 	      char ra1[16], ra2[16];
@@ -94,8 +93,8 @@ void Vect::list(ostream& str, CoordSystem sys, SkyFrame sky,
 		istringstream wcs(x);
 		wcs >> ra1 >> dec1;
 	      }
-	      str << type << '(' << ra1 << ',' << dec1 
-		  << ',' << ptr->mapLenFromRef(mag,sys,ARCSEC) << "\"" 
+	      str << type_ << '(' << ra1 << ',' << dec1 
+		  << ',' << ptr->mapLenFromRef(mag,sys,Coord::ARCSEC) << "\"" 
 		  << ',' << radToDeg(parent->mapAngleFromRef(ang,sys,sky))
 		  << ')';
 	    }
@@ -107,7 +106,7 @@ void Vect::list(ostream& str, CoordSystem sys, SkyFrame sky,
 	  Vector v2 = ptr->mapFromRef(p2,sys);
 	  double mag = (p2-p1).length();
 	  double ang = (p2-p1).angle();
-	  str << type << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
+	  str << type_ << '(' << setprecision(8) << v1[0] << ',' << v1[1] 
 	      << ','  << ptr->mapLenFromRef(mag,sys) 
 	      << ',' << radToDeg(parent->mapAngleFromRef(ang,sys)) << ')';
 	}
@@ -122,16 +121,16 @@ void Vect::list(ostream& str, CoordSystem sys, SkyFrame sky,
   }
 }
 
-void Vect::listXML(ostream& str, CoordSystem sys, SkyFrame sky, 
-		   SkyFormat format)
+void Vect::listXML(ostream& str, Coord::CoordSystem sys, Coord::SkyFrame sky, 
+		   Coord::SkyFormat format)
 {
   FitsImage* ptr = parent->findFits(sys,center);
   Vector v1 = ptr->mapFromRef(p1,sys,sky);
   Vector v2 = ptr->mapFromRef(p2,sys,sky);
-  double rr = ptr->mapLenFromRef((p2-p1).length(),sys,ARCSEC);
+  double rr = ptr->mapLenFromRef((p2-p1).length(),sys,Coord::ARCSEC);
   
   XMLRowInit();
-  XMLRow(XMLSHAPE,type);
+  XMLRow(XMLSHAPE,type_);
 
   XMLRowPoint(ptr,sys,sky,format,p1);
   XMLRow(XMLR,rr);
diff --git a/saotk/frame/vect.h b/saotk/frame/vect.h
index 631a4b1..31835d0 100644
--- a/saotk/frame/vect.h
+++ b/saotk/frame/vect.h
@@ -31,9 +31,9 @@ public:
 
   void setPoints(const Vector& pt, double mag, double ang);
 
-  void list(ostream&, CoordSystem, SkyFrame, SkyFormat, int, int);
-  void listXML(ostream&, CoordSystem, SkyFrame, SkyFormat);
-  void listSAOtng(ostream&, CoordSystem, SkyFrame, SkyFormat, int) {}
+  void list(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int, int);
+  void listXML(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat);
+  void listSAOtng(ostream&, Coord::CoordSystem, Coord::SkyFrame, Coord::SkyFormat, int) {}
 };
 
 #endif
diff --git a/saotk/frame/xyparser.C b/saotk/frame/xyparser.C
index 4a94b24..7a5a4ea 100644
--- a/saotk/frame/xyparser.C
+++ b/saotk/frame/xyparser.C
@@ -213,10 +213,10 @@ extern void xyerror(Base*, xyFlexLexer*, const char*);
 
 static int dash[] = {8,3};
 
-static CoordSystem globalSystem;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static List<Tag> taglist;
 static List<CallBack> cblist;
@@ -1587,12 +1587,12 @@ yyreduce:
 
   case 9:
 #line 132 "xyparser.Y"
-    {globalSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+    {globalSystem = (Coord::CoordSystem)(yyvsp[(1) - (1)].integer);;}
     break;
 
   case 10:
 #line 134 "xyparser.Y"
-    {globalSystem = (CoordSystem)(yyvsp[(1) - (2)].integer); globalSky = (SkyFrame)(yyvsp[(2) - (2)].integer);;}
+    {globalSystem = (Coord::CoordSystem)(yyvsp[(1) - (2)].integer); globalSky = (Coord::SkyFrame)(yyvsp[(2) - (2)].integer);;}
     break;
 
   case 11:
@@ -1649,7 +1649,7 @@ yyreduce:
 #line 176 "xyparser.Y"
     {
 	  Vector r;
-	  if (localSky == GALACTIC || localSky == ECLIPTIC) 
+	  if (localSky == Coord::GALACTIC || localSky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),localSystem,localSky);
 	  else
 	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)),localSystem,localSky);
@@ -1701,222 +1701,222 @@ yyreduce:
 
   case 35:
 #line 216 "xyparser.Y"
-    {(yyval.integer) = IMAGE;;}
+    {(yyval.integer) = Coord::IMAGE;;}
     break;
 
   case 36:
 #line 217 "xyparser.Y"
-    {(yyval.integer) = IMAGE;;}
+    {(yyval.integer) = Coord::IMAGE;;}
     break;
 
   case 37:
 #line 218 "xyparser.Y"
-    {(yyval.integer) = PHYSICAL;;}
+    {(yyval.integer) = Coord::PHYSICAL;;}
     break;
 
   case 38:
 #line 219 "xyparser.Y"
-    {(yyval.integer) = PHYSICAL;;}
+    {(yyval.integer) = Coord::PHYSICAL;;}
     break;
 
   case 39:
 #line 220 "xyparser.Y"
-    {(yyval.integer) = AMPLIFIER;;}
+    {(yyval.integer) = Coord::AMPLIFIER;;}
     break;
 
   case 40:
 #line 221 "xyparser.Y"
-    {(yyval.integer) = DETECTOR;;}
+    {(yyval.integer) = Coord::DETECTOR;;}
     break;
 
   case 41:
 #line 222 "xyparser.Y"
-    {(yyval.integer) = WCS;;}
+    {(yyval.integer) = Coord::WCS;;}
     break;
 
   case 42:
 #line 223 "xyparser.Y"
-    {(yyval.integer) = WCSA;;}
+    {(yyval.integer) = Coord::WCSA;;}
     break;
 
   case 43:
 #line 224 "xyparser.Y"
-    {(yyval.integer) = WCSB;;}
+    {(yyval.integer) = Coord::WCSB;;}
     break;
 
   case 44:
 #line 225 "xyparser.Y"
-    {(yyval.integer) = WCSC;;}
+    {(yyval.integer) = Coord::WCSC;;}
     break;
 
   case 45:
 #line 226 "xyparser.Y"
-    {(yyval.integer) = WCSD;;}
+    {(yyval.integer) = Coord::WCSD;;}
     break;
 
   case 46:
 #line 227 "xyparser.Y"
-    {(yyval.integer) = WCSE;;}
+    {(yyval.integer) = Coord::WCSE;;}
     break;
 
   case 47:
 #line 228 "xyparser.Y"
-    {(yyval.integer) = WCSF;;}
+    {(yyval.integer) = Coord::WCSF;;}
     break;
 
   case 48:
 #line 229 "xyparser.Y"
-    {(yyval.integer) = WCSG;;}
+    {(yyval.integer) = Coord::WCSG;;}
     break;
 
   case 49:
 #line 230 "xyparser.Y"
-    {(yyval.integer) = WCSH;;}
+    {(yyval.integer) = Coord::WCSH;;}
     break;
 
   case 50:
 #line 231 "xyparser.Y"
-    {(yyval.integer) = WCSI;;}
+    {(yyval.integer) = Coord::WCSI;;}
     break;
 
   case 51:
 #line 232 "xyparser.Y"
-    {(yyval.integer) = WCSJ;;}
+    {(yyval.integer) = Coord::WCSJ;;}
     break;
 
   case 52:
 #line 233 "xyparser.Y"
-    {(yyval.integer) = WCSK;;}
+    {(yyval.integer) = Coord::WCSK;;}
     break;
 
   case 53:
 #line 234 "xyparser.Y"
-    {(yyval.integer) = WCSL;;}
+    {(yyval.integer) = Coord::WCSL;;}
     break;
 
   case 54:
 #line 235 "xyparser.Y"
-    {(yyval.integer) = WCSM;;}
+    {(yyval.integer) = Coord::WCSM;;}
     break;
 
   case 55:
 #line 236 "xyparser.Y"
-    {(yyval.integer) = WCSN;;}
+    {(yyval.integer) = Coord::WCSN;;}
     break;
 
   case 56:
 #line 237 "xyparser.Y"
-    {(yyval.integer) = WCSO;;}
+    {(yyval.integer) = Coord::WCSO;;}
     break;
 
   case 57:
 #line 238 "xyparser.Y"
-    {(yyval.integer) = WCSP;;}
+    {(yyval.integer) = Coord::WCSP;;}
     break;
 
   case 58:
 #line 239 "xyparser.Y"
-    {(yyval.integer) = WCSQ;;}
+    {(yyval.integer) = Coord::WCSQ;;}
     break;
 
   case 59:
 #line 240 "xyparser.Y"
-    {(yyval.integer) = WCSR;;}
+    {(yyval.integer) = Coord::WCSR;;}
     break;
 
   case 60:
 #line 241 "xyparser.Y"
-    {(yyval.integer) = WCSS;;}
+    {(yyval.integer) = Coord::WCSS;;}
     break;
 
   case 61:
 #line 242 "xyparser.Y"
-    {(yyval.integer) = WCST;;}
+    {(yyval.integer) = Coord::WCST;;}
     break;
 
   case 62:
 #line 243 "xyparser.Y"
-    {(yyval.integer) = WCSU;;}
+    {(yyval.integer) = Coord::WCSU;;}
     break;
 
   case 63:
 #line 244 "xyparser.Y"
-    {(yyval.integer) = WCSV;;}
+    {(yyval.integer) = Coord::WCSV;;}
     break;
 
   case 64:
 #line 245 "xyparser.Y"
-    {(yyval.integer) = WCSW;;}
+    {(yyval.integer) = Coord::WCSW;;}
     break;
 
   case 65:
 #line 246 "xyparser.Y"
-    {(yyval.integer) = WCSX;;}
+    {(yyval.integer) = Coord::WCSX;;}
     break;
 
   case 66:
 #line 247 "xyparser.Y"
-    {(yyval.integer) = WCSY;;}
+    {(yyval.integer) = Coord::WCSY;;}
     break;
 
   case 67:
 #line 248 "xyparser.Y"
-    {(yyval.integer) = WCSZ;;}
+    {(yyval.integer) = Coord::WCSZ;;}
     break;
 
   case 68:
 #line 251 "xyparser.Y"
-    {(yyval.integer) = FK4;;}
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 69:
 #line 252 "xyparser.Y"
-    {(yyval.integer) = FK4;;}
+    {(yyval.integer) = Coord::FK4;;}
     break;
 
   case 70:
 #line 253 "xyparser.Y"
-    {(yyval.integer) = FK4_NO_E;;}
+    {(yyval.integer) = Coord::FK4_NO_E;;}
     break;
 
   case 71:
 #line 254 "xyparser.Y"
-    {(yyval.integer) = FK5;;}
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 72:
 #line 255 "xyparser.Y"
-    {(yyval.integer) = FK5;;}
+    {(yyval.integer) = Coord::FK5;;}
     break;
 
   case 73:
 #line 256 "xyparser.Y"
-    {(yyval.integer) = ICRS;;}
+    {(yyval.integer) = Coord::ICRS;;}
     break;
 
   case 74:
 #line 257 "xyparser.Y"
-    {(yyval.integer) = GALACTIC;;}
+    {(yyval.integer) = Coord::GALACTIC;;}
     break;
 
   case 75:
 #line 258 "xyparser.Y"
-    {(yyval.integer) = SUPERGALACTIC;;}
+    {(yyval.integer) = Coord::SUPERGALACTIC;;}
     break;
 
   case 76:
 #line 259 "xyparser.Y"
-    {(yyval.integer) = ECLIPTIC;;}
+    {(yyval.integer) = Coord::ECLIPTIC;;}
     break;
 
   case 77:
 #line 260 "xyparser.Y"
-    {(yyval.integer) = HELIOECLIPTIC;;}
+    {(yyval.integer) = Coord::HELIOECLIPTIC;;}
     break;
 
   case 78:
 #line 263 "xyparser.Y"
-    {fr->createBoxCirclePointCmd(Vector((yyvsp[(1) - (1)].vector)), POINTSIZE, 
+    {fr->createPointCmd(Vector((yyvsp[(1) - (1)].vector)), Point::BOXCIRCLE, POINTSIZE, 
 	    "green",dash,1,"helvetica 10 normal roman","",
 	    Marker::SELECT | Marker::EDIT | Marker::MOVE | Marker::ROTATE | 
 	    Marker::DELETE | Marker::HIGHLITE | 
diff --git a/saotk/frame/xyparser.Y b/saotk/frame/xyparser.Y
index f540f0d..b09f0f5 100644
--- a/saotk/frame/xyparser.Y
+++ b/saotk/frame/xyparser.Y
@@ -29,10 +29,10 @@ extern void xyerror(Base*, xyFlexLexer*, const char*);
 
 static int dash[] = {8,3};
 
-static CoordSystem globalSystem;
-static SkyFrame globalSky;
-static CoordSystem localSystem;
-static SkyFrame localSky;
+static Coord::CoordSystem globalSystem;
+static Coord::SkyFrame globalSky;
+static Coord::CoordSystem localSystem;
+static Coord::SkyFrame localSky;
 
 static List<Tag> taglist;
 static List<CallBack> cblist;
@@ -129,9 +129,9 @@ commands: commands command terminator
 command : /* empty */
 	| DEBUG_ debug
 	| VERSION_ {cerr << "X Y Format 1.0" << endl;}
-	| coordSystem {globalSystem = (CoordSystem)$1;}
+	| coordSystem {globalSystem = (Coord::CoordSystem)$1;}
 	| coordSystem skyFrame 
-	  {globalSystem = (CoordSystem)$1; globalSky = (SkyFrame)$2;}
+	  {globalSystem = (Coord::CoordSystem)$1; globalSky = (Coord::SkyFrame)$2;}
 	| {localSystem = globalSystem; localSky = globalSky; maperr = 0;} shape comment
 	;
 
@@ -175,7 +175,7 @@ dms	: DMSSTR {$$ = parseDMSStr($1);}
 coord	: sexagesimal sp sexagesimal
 	{
 	  Vector r;
-	  if (localSky == GALACTIC || localSky == ECLIPTIC) 
+	  if (localSky == Coord::GALACTIC || localSky == Coord::ECLIPTIC) 
 	    r = FITSPTR->mapToRef(Vector($1,$3),localSystem,localSky);
 	  else
 	    r = FITSPTR->mapToRef(Vector($1*360./24.,$3),localSystem,localSky);
@@ -213,54 +213,54 @@ coord	: sexagesimal sp sexagesimal
 	}
 	;
 
-coordSystem : IMAGE_ {$$ = IMAGE;}
-	| LOGICAL_ {$$ = IMAGE;}
-	| PHYSICAL_ {$$ = PHYSICAL;}
-	| CCD_ {$$ = PHYSICAL;}
-	| AMPLIFIER_ {$$ = AMPLIFIER;}
-	| DETECTOR_ {$$ = DETECTOR;}
-	| WCS_ {$$ = WCS;}
-	| WCSA_ {$$ = WCSA;}
-	| WCSB_ {$$ = WCSB;}
-	| WCSC_ {$$ = WCSC;}
-	| WCSD_ {$$ = WCSD;}
-	| WCSE_ {$$ = WCSE;}
-	| WCSF_ {$$ = WCSF;}
-	| WCSG_ {$$ = WCSG;}
-	| WCSH_ {$$ = WCSH;}
-	| WCSI_ {$$ = WCSI;}
-	| WCSJ_ {$$ = WCSJ;}
-	| WCSK_ {$$ = WCSK;}
-	| WCSL_ {$$ = WCSL;}
-	| WCSM_ {$$ = WCSM;}
-	| WCSN_ {$$ = WCSN;}
-	| WCSO_ {$$ = WCSO;}
-	| WCSP_ {$$ = WCSP;}
-	| WCSQ_ {$$ = WCSQ;}
-	| WCSR_ {$$ = WCSR;}
-	| WCSS_ {$$ = WCSS;}
-	| WCST_ {$$ = WCST;}
-	| WCSU_ {$$ = WCSU;}
-	| WCSV_ {$$ = WCSV;}
-	| WCSW_ {$$ = WCSW;}
-	| WCSX_ {$$ = WCSX;}
-	| WCSY_ {$$ = WCSY;}
-	| WCSZ_ {$$ = WCSZ;}
+coordSystem : IMAGE_ {$$ = Coord::IMAGE;}
+	| LOGICAL_ {$$ = Coord::IMAGE;}
+	| PHYSICAL_ {$$ = Coord::PHYSICAL;}
+	| CCD_ {$$ = Coord::PHYSICAL;}
+	| AMPLIFIER_ {$$ = Coord::AMPLIFIER;}
+	| DETECTOR_ {$$ = Coord::DETECTOR;}
+	| WCS_ {$$ = Coord::WCS;}
+	| WCSA_ {$$ = Coord::WCSA;}
+	| WCSB_ {$$ = Coord::WCSB;}
+	| WCSC_ {$$ = Coord::WCSC;}
+	| WCSD_ {$$ = Coord::WCSD;}
+	| WCSE_ {$$ = Coord::WCSE;}
+	| WCSF_ {$$ = Coord::WCSF;}
+	| WCSG_ {$$ = Coord::WCSG;}
+	| WCSH_ {$$ = Coord::WCSH;}
+	| WCSI_ {$$ = Coord::WCSI;}
+	| WCSJ_ {$$ = Coord::WCSJ;}
+	| WCSK_ {$$ = Coord::WCSK;}
+	| WCSL_ {$$ = Coord::WCSL;}
+	| WCSM_ {$$ = Coord::WCSM;}
+	| WCSN_ {$$ = Coord::WCSN;}
+	| WCSO_ {$$ = Coord::WCSO;}
+	| WCSP_ {$$ = Coord::WCSP;}
+	| WCSQ_ {$$ = Coord::WCSQ;}
+	| WCSR_ {$$ = Coord::WCSR;}
+	| WCSS_ {$$ = Coord::WCSS;}
+	| WCST_ {$$ = Coord::WCST;}
+	| WCSU_ {$$ = Coord::WCSU;}
+	| WCSV_ {$$ = Coord::WCSV;}
+	| WCSW_ {$$ = Coord::WCSW;}
+	| WCSX_ {$$ = Coord::WCSX;}
+	| WCSY_ {$$ = Coord::WCSY;}
+	| WCSZ_ {$$ = Coord::WCSZ;}
 	;
 
-skyFrame : FK4_ {$$ = FK4;}
-	| B1950_ {$$ = FK4;}
-	| FK4_NO_E_ {$$ = FK4_NO_E;}
-	| FK5_ {$$ = FK5;}
-	| J2000_ {$$ = FK5;}
-	| ICRS_ {$$ = ICRS;}
-	| GALACTIC_ {$$ = GALACTIC;}
-	| SUPERGALACTIC_ {$$ = SUPERGALACTIC;}
-	| ECLIPTIC_ {$$ = ECLIPTIC;}
-	| HELIOECLIPTIC_ {$$ = HELIOECLIPTIC;}
+skyFrame : FK4_ {$$ = Coord::FK4;}
+	| B1950_ {$$ = Coord::FK4;}
+	| FK4_NO_E_ {$$ = Coord::FK4_NO_E;}
+	| FK5_ {$$ = Coord::FK5;}
+	| J2000_ {$$ = Coord::FK5;}
+	| ICRS_ {$$ = Coord::ICRS;}
+	| GALACTIC_ {$$ = Coord::GALACTIC;}
+	| SUPERGALACTIC_ {$$ = Coord::SUPERGALACTIC;}
+	| ECLIPTIC_ {$$ = Coord::ECLIPTIC;}
+	| HELIOECLIPTIC_ {$$ = Coord::HELIOECLIPTIC;}
 	;
 
-shape	: coord {fr->createBoxCirclePointCmd(Vector($1), POINTSIZE, 
+shape	: coord {fr->createPointCmd(Vector($1), Point::BOXCIRCLE, POINTSIZE, 
 	    "green",dash,1,"helvetica 10 normal roman","",
 	    Marker::SELECT | Marker::EDIT | Marker::MOVE | Marker::ROTATE | 
 	    Marker::DELETE | Marker::HIGHLITE | 
diff --git a/saotk/util/grid25dbase.C b/saotk/util/grid25dbase.C
index a9b7ec1..0e829b8 100644
--- a/saotk/util/grid25dbase.C
+++ b/saotk/util/grid25dbase.C
@@ -34,7 +34,7 @@ int Grid25dBase::gLine(int n, float* x, float* y)
   float yy[n];
 
   for (int ii=0; ii<n; ii++) {
-    vv[ii] = pp->mapFromRef(Vector(x[ii],y[ii]),WIDGET);
+    vv[ii] = pp->mapFromRef(Vector(x[ii],y[ii]),Coord::WIDGET);
     xx[ii] = vv[ii][0];
     yy[ii] = vv[ii][1];
   }
@@ -104,7 +104,7 @@ int Grid25dBase::gText(const char* txt, float x, float y, const char* just,
     return 0;
 
   Frame3dBase* pp = (Frame3dBase*)parent_;
-  Vector vv = pp->mapFromRef(Vector(x,y),WIDGET);
+  Vector vv = pp->mapFromRef(Vector(x,y),Coord::WIDGET);
 
   switch (renderMode_) {
   case X11:
@@ -156,7 +156,7 @@ int Grid25dBase::gTxExt(const char* txt, float x, float y, const char* just,
   }
 
   Frame3dBase* pp = (Frame3dBase*)parent_;
-  Vector vv = pp->mapFromRef(Vector(x,y),WIDGET);
+  Vector vv = pp->mapFromRef(Vector(x,y),Coord::WIDGET);
 
   double angle = 0;
   Vector cc = vv * calcTextPos(vv, angle, txt, just, Vector(0, 1), font);
diff --git a/saotk/util/ps.C b/saotk/util/ps.C
index c855a00..49cbd23 100644
--- a/saotk/util/ps.C
+++ b/saotk/util/ps.C
@@ -286,9 +286,9 @@ Ascii85::Ascii85(int l) : Encode(l)
   index = 0;
 }
 
-BIT32 Ascii85::swap(unsigned BIT32* p)
+int32_t Ascii85::swap(uint32_t* p)
 {
-  BIT32 r;
+  int32_t r;
   swap4((char*)p, (char*)&r);
   return r;
 }
@@ -317,18 +317,18 @@ void Ascii85::dump(ostream& str)
     }
   }
   else {
-    unsigned BIT32 b;
+    uint32_t b;
     if (!byteswap)
       b = buf85.c;
     else
       b = swap(&buf85.c);
 
     for (int ii=4; ii>=0 ; ii--) {
-      unsigned BIT32 base = 1;
+      uint32_t base = 1;
       for (int jj=0; jj<ii; jj++)
 	base *= 85;
 
-      unsigned BIT32 a = b / base;
+      uint32_t a = b / base;
       b -= a * base;
       str << (char)(a + '!');
       if (++lineCount >= LINELIMIT) {
@@ -349,18 +349,18 @@ void Ascii85::eflush(ostream& str)
   // we can't have any z's here
   // also, only write index+1 chars
   if (index) {
-    unsigned BIT32 b;
+    uint32_t b;
     if (!byteswap)
       b = buf85.c;
     else
       b = swap(&buf85.c);
  
     for (int ii=4; ii>=(4-index); ii--) {
-      unsigned BIT32 base = 1;
+      uint32_t base = 1;
       for (int jj=0; jj<ii; jj++)
 	base *= 85;
  
-      unsigned BIT32 a = b / base;
+      uint32_t a = b / base;
       b -= a * base;
       str << (char)(a + '!');
        if (++lineCount >= LINELIMIT) {
diff --git a/saotk/util/ps.h b/saotk/util/ps.h
index b1955ae..a7b4a29 100644
--- a/saotk/util/ps.h
+++ b/saotk/util/ps.h
@@ -5,6 +5,8 @@
 #ifndef __ps_h__
 #define __ps_h__
 
+#include <stdint.h>
+
 #include <iostream>
 #include <sstream>
 #include <iomanip>
@@ -13,12 +15,6 @@ using namespace std;
 #include "zlib.h"
 extern int DebugGZ;
 
-#if defined( __alpha) || defined(__mips64) || defined(__sparcv9) || defined(__M64)
-#define BIT32 int
-#else
-#define BIT32 long
-#endif
-
 // we need this large for gzip
 #define GZIPSIZE 65536
 #define BUFSIZE GZIPSIZE*2
@@ -123,11 +119,11 @@ private:
   int byteswap;
   union {
     unsigned char b[4];
-    unsigned BIT32 c;
+    uint32_t c;
   } buf85;
 
   void dump(ostream&);
-  BIT32 swap(unsigned BIT32* ptr);
+  int32_t swap(uint32_t* ptr);
 
 public:
   Ascii85(int);
diff --git a/saotk/util/smooth.C b/saotk/util/smooth.C
index ff137b6..c5d86a2 100644
--- a/saotk/util/smooth.C
+++ b/saotk/util/smooth.C
@@ -82,11 +82,8 @@ void convolve(double* kernel, double* src, double* dest,
 	  for (int mm=ii-r, pp=0; mm<=ii+r; mm++, pp++) {
 	    if (mm>=0 && mm<width) {
 	      double vv = src[nd+mm];
-	      if (!isnanf(vv)) 
+	      if (!isnand(vv)) 
 		*dptr += vv*kernel[qd+pp];
-	      else
-		if (nn==jj && mm==ii)
-		  *dptr = vv;
 	    }
 	  }
 	}
diff --git a/saotk/util/util.C b/saotk/util/util.C
index 7dd2676..8a44002 100644
--- a/saotk/util/util.C
+++ b/saotk/util/util.C
@@ -139,6 +139,15 @@ double zero360(double aa)
   return rr;
 }
 
+double m180To180(double aa)
+{
+  // incoming 0-360
+  double rr = aa;
+  if (rr>180)
+    rr -= 360;
+  return rr;
+}
+
 double degToRad(double dd)
 {
   double rr =  M_PI*dd/180.;
diff --git a/saotk/util/util.h b/saotk/util/util.h
index f041cb1..1f3bbd2 100644
--- a/saotk/util/util.h
+++ b/saotk/util/util.h
@@ -86,6 +86,7 @@ extern char* toConstUpper(const char*);
 
 extern double zeroTWOPI(double);
 extern double zero360(double);
+extern double m180To180(double);
 extern double degToRad(double);
 extern double radToDeg(double);
 
diff --git a/src/Makefile b/src/Makefile
index e7a6890..a65a9a0 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -52,6 +52,7 @@ SCRIPTS = \
 	error.tcl \
 	eso.tcl \
 	examine.tcl \
+	export.tcl \
 	external.tcl \
 	fits.tcl \
 	first.tcl \
@@ -66,12 +67,15 @@ SCRIPTS = \
 	hvsup.tcl \
 	iis.tcl \
 	imexam.tcl \
+	import.tcl \
 	imgsvr.tcl \
 	info.tcl \
 	layout.tcl \
 	line.tcl \
 	magnifier.tcl \
 	marker.tcl \
+	markeranalysisplot2d.tcl \
+	markeranalysisplot3d.tcl \
 	markerbase.tcl \
 	markerbaseannulus.tcl \
 	markerbaseannulusrect.tcl \
@@ -79,7 +83,6 @@ SCRIPTS = \
 	markerbaseline.tcl \
 	markerbasepanda.tcl \
 	markerbasepandarect.tcl \
-	markerbaserect.tcl \
 	markerdialog.tcl \
 	mask.tcl \
 	manalysis.tcl \
@@ -109,12 +112,12 @@ SCRIPTS = \
 	prefsdialog.tcl \
 	print.tcl \
 	projection.tcl \
-	projection3d.tcl \
 	rgb.tcl \
 	ruler.tcl \
 	samp.tcl \
 	sao.tcl \
-	saveas.tcl \
+	saveimage.tcl \
+	savempeg.tcl \
 	scale.tcl \
 	skyview.tcl \
 	slider.tcl \
diff --git a/src/annulus.tcl b/src/annulus.tcl
index a9838e8..a1fbda1 100644
--- a/src/annulus.tcl
+++ b/src/annulus.tcl
@@ -38,7 +38,6 @@ proc AnnulusDialog {varname} {
     MarkerBaseAnnulusMethodMenu $varname
 
     # callbacks
-    $var(frame) marker $var(id) callback move AnnulusEditCB $varname
     $var(frame) marker $var(id) callback edit AnnulusEditCB $varname
     $var(frame) marker $var(id) callback end edit AnnulusEditCB $varname
 
@@ -93,7 +92,6 @@ proc AnnulusClose {varname} {
     upvar #0 $varname var
     global $varname
 
-    $var(frame) marker $var(id) delete callback move AnnulusEditCB
     $var(frame) marker $var(id) delete callback edit AnnulusEditCB
     $var(frame) marker $var(id) delete callback end edit AnnulusEditCB
 
@@ -169,6 +167,5 @@ proc AnnulusDistCB {varname {dummy {}}} {
 	puts stderr "AnnulusDistCB"
     }
 
-    MarkerBaseDistCB $varname
     AnnulusEditCB $varname
 }
diff --git a/src/backup.tcl b/src/backup.tcl
index c1f903d..08f337e 100644
--- a/src/backup.tcl
+++ b/src/backup.tcl
@@ -318,13 +318,57 @@ proc BackupFrameLoad {ch which fdir rdir channel} {
 	    }
 	    set param(file,name) "[file join $rdir $ff]"		
 	}
+	photo {
+	    if {$pds9(backup)} {
+		set id [string first "\[" $param(file,name)]
+		if {$id > 0} {
+		    set fn [string range $param(file,name) 0 [expr $id-1]]
+		} else {
+		    set fn $param(file,name)
+		}
+		
+		set src [lindex [file split $fn] end]
+		if {![file exists [file join $fdir $src]]} {
+		    if {[catch {file copy $fn $fdir}]} {
+			Error [msgcat::mc {An error has occurred during backup}]
+			return
+		    }
+		}
+		set param(file,name) \
+		    "$rdir/[lindex [file split $param(file,name)] end]"		
+
+	    } else {
+		if {[file pathtype $param(file,name)] == {relative}} {
+		    set param(file,name) [file join [pwd] $param(file,name)]
+		}
+	    }
+
+	    puts $ch "global bcktmp"
+	    puts $ch "if {\[catch {image create photo -file $param(file,name)} bcktmp\]} {"
+	    puts $ch "Error \[msgcat::mc {An error has occurred during restore}\]"
+	    puts $ch "return"
+	    puts $ch "}"
+	}
     }
 
     puts $ch "global loadParam"
     puts $ch "array set loadParam \[list [array get param]\]"
+
+    switch $param(load,type) {
+	photo {
+	    puts $ch "set loadParam(var,name) \$bcktmp"
+	}
+    }
+
     puts $ch "if \[BackupFindFile loadParam\] {"
     puts $ch "  ProcessLoad"
     puts $ch "}"
+
+    switch $param(load,type) {
+	photo {
+	    puts $ch "image delete \$bcktmp"
+	}
+    }
 }
 
 proc BackupGUI {ch} {
diff --git a/src/bin.tcl b/src/bin.tcl
index 74a9198..259cded 100644
--- a/src/bin.tcl
+++ b/src/bin.tcl
@@ -83,6 +83,21 @@ proc BinCols {x y z} {
     global rgb
 
     if {$current(frame) != {}} {
+	if {![$current(frame) has bin column $x]} {
+	    Error "[msgcat::mc {Invalid Column Name}] $x"
+	    return
+	}
+	if {![$current(frame) has bin column $y]} {
+	    Error "[msgcat::mc {Invalid Column Name}] $y"
+	    return
+	}
+	if {$z!={""}} {
+	    if {![$current(frame) has bin column $z]} {
+		Error "[msgcat::mc {Invalid Column Name}] $z"
+		return
+	    }
+	}
+
 	RGBEvalLockCurrent rgb(lock,bin) "$current(frame) bin cols \{$x\} \{$y\} \{$z\}"
 	UpdateBin
     }
diff --git a/src/box.tcl b/src/box.tcl
index a9a4019..49ba28d 100644
--- a/src/box.tcl
+++ b/src/box.tcl
@@ -14,16 +14,53 @@ proc BoxDialog {varname} {
 	return
     }
 
+    # variables
+    set rr [$var(frame) get wcs]
+    set var(dcoord) [lindex $rr 0]
+    set var(dformat) degrees
+    AdjustCoordSystem $varname dcoord
+
     # procs
-    set var(which) box
     set var(proc,apply) BoxApply
     set var(proc,close) BoxClose
     set var(proc,coordCB) BoxCoordCB
-    set var(proc,editCB) BoxEditCB
-    set var(proc,distCB) BoxDistCB
 
     # base
-    MarkerBaseRectDialog $varname size
+    MarkerBaseCenterDialog $varname
+
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
+
+    # plot3d
+    MarkerAnalysisPlot3dDialog $varname
+
+    # init
+    BoxEditCB $varname
+    MarkerBaseCenterRotateCB $varname
+
+    # callbacks
+    $var(frame) marker $var(id) callback edit BoxEditCB $varname
+    $var(frame) marker $var(id) callback rotate \
+	MarkerBaseCenterRotateCB $varname
+
+    set f $var(top).param
+
+    # Radius
+    ttk::label $f.tradius -text Size
+    ttk::entry $f.radius1 -textvariable ${varname}(radius1) -width 13 
+    ttk::entry $f.radius2 -textvariable ${varname}(radius2) -width 13 
+    DistMenuButton $f.uradius $varname dcoord 1 dformat \
+	[list BoxEditCB $varname]
+    DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat
+
+    # Angle
+    ttk::label $f.tangle -text [msgcat::mc {Angle}]
+    ttk::entry $f.angle -textvariable ${varname}(angle) -width 13 
+    ttk::label $f.uangle -text [msgcat::mc {Degrees}]
+
+    grid $f.tradius $f.radius1 $f.radius2 $f.uradius -padx 2 -pady 2 -sticky w
+    grid $f.tangle $f.angle $f.uangle -padx 2 -pady 2 -sticky w
 }
 
 # actions
@@ -32,14 +69,24 @@ proc BoxClose {varname} {
     upvar #0 $varname var
     global $varname
 
-    MarkerBaseRectClose $varname
+    $var(frame) marker $var(id) delete callback edit BoxEditCB
+    $var(frame) marker $var(id) delete callback rotate MarkerBaseCenterRotateCB
+
+    MarkerBaseCenterClose $varname
 }
 
 proc BoxApply {varname} {
     upvar #0 $varname var
     global $varname
 
-    MarkerBaseRectApply $varname
+    if {$var(radius1) != {} &&
+	$var(radius2) !={}} {
+	$var(frame) marker $var(id) box radius \
+	    $var(radius1) $var(radius2) $var(dcoord) $var(dformat)
+    }
+
+    MarkerBaseCenterRotate $varname
+    MarkerBaseCenterApply $varname
 }
 
 # callbacks
@@ -53,7 +100,9 @@ proc BoxCoordCB {varname {dummy {}}} {
 	puts stderr "BoxCoordCB"
     }
 
-    MarkerBaseRectCoordCB $varname
+    MarkerBaseCoordCB $varname
+    MarkerBaseCenterMoveCB $varname
+    MarkerBaseCenterRotateCB $varname
 }
 
 proc BoxEditCB {varname {dummy {}}} {
@@ -65,17 +114,8 @@ proc BoxEditCB {varname {dummy {}}} {
 	puts stderr "BoxEditCB"
     }
 
-    MarkerBaseRectEditCB $varname
-}
-
-proc BoxDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "BoxDistCB"
-    }
-
-    MarkerBaseRectDistCB $varname
+    set r [$var(frame) get marker $var(id) box radius \
+	       $var(dcoord) $var(dformat)]
+    set var(radius1) [lindex $r 0]
+    set var(radius2) [lindex $r 1]
 }
diff --git a/src/boxannulus.tcl b/src/boxannulus.tcl
index abc6061..484f173 100644
--- a/src/boxannulus.tcl
+++ b/src/boxannulus.tcl
@@ -16,74 +16,13 @@ proc BoxAnnulusDialog {varname} {
 
     # procs
     set var(which) boxannulus
-    set var(proc,apply) BoxAnnulusApply
-    set var(proc,close) BoxAnnulusClose
-    set var(proc,generate) BoxAnnulusGenerate
-    set var(proc,coordCB) BoxAnnulusCoordCB
-    set var(proc,editCB) BoxAnnulusEditCB
-    set var(proc,distCB) BoxAnnulusDistCB
+    set var(proc,apply) MarkerBaseAnnulusRectApply
+    set var(proc,close) MarkerBaseAnnulusRectClose
+    set var(proc,generate) MarkerBaseAnnulusGenerateBox
+    set var(proc,coordCB) MarkerBaseAnnulusRectCoordCB
+    set var(proc,editCB) MarkerBaseAnnulusRectEditCB
+    set var(proc,distCB) MarkerBaseAnnulusRectDistCB
 
     # base
     MarkerBaseAnnulusRectDialog $varname size Width Height
 }
-
-# actions
-
-proc BoxAnnulusClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseAnnulusRectClose $varname
-}
-
-proc BoxAnnulusApply {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseAnnulusRectApply $varname
-}
-
-proc BoxAnnulusGenerate {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseAnnulusGenerateBox $varname
-}
-
-# callbacks
-
-proc BoxAnnulusCoordCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "BoxAnnulusCoordCB"
-    }
-
-    MarkerBaseAnnulusRectCoordCB $varname
-}
-
-proc BoxAnnulusEditCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "BoxAnnulusEditCB"
-    }
-
-    MarkerBaseAnnulusRectEditCB $varname
-}
-
-proc BoxAnnulusDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "BoxAnnulusDistCB"
-    }
-
-    MarkerBaseAnnulusRectDistCB $varname
-}
diff --git a/src/bpanda.tcl b/src/bpanda.tcl
index 21a3327..35898d9 100644
--- a/src/bpanda.tcl
+++ b/src/bpanda.tcl
@@ -16,33 +16,17 @@ proc BpandaDialog {varname} {
 
     # procs
     set var(which) bpanda
-    set var(proc,apply) BpandaApply
-    set var(proc,close) BpandaClose
+    set var(proc,apply) MarkerBasePandaRectApply
+    set var(proc,close) MarkerBasePandaRectClose
     set var(proc,generate) BpandaGenerate
-    set var(proc,coordCB) BpandaCoordCB
-    set var(proc,editCB) BpandaEditCB
-    set var(proc,distCB) BpandaDistCB
+    set var(proc,coordCB) MarkerBasePandaRectCoordCB
+    set var(proc,editCB) MarkerBasePandaRectEditCB
+    set var(proc,distCB) MarkerBasePandaRectDistCB
 
     # base panda rect dialog
     MarkerBasePandaRectDialog $varname
 }
 
-# actions
-
-proc BpandaClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBasePandaRectClose $varname
-}
-
-proc BpandaApply {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBasePandaRectApply $varname
-}
-
 proc BpandaGenerate {varname} {
     upvar #0 $varname var
     global $varname
@@ -50,41 +34,3 @@ proc BpandaGenerate {varname} {
     MarkerBaseAnnulusGenerateBox $varname
     MarkerBasePandaGenerateAngles $varname
 }
-
-# callbacks
-
-proc BpandaCoordCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "BpandaCoordCB"
-    }
-
-    MarkerBasePandaRectCoordCB $varname
-}
-
-proc BpandaEditCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "BpandaEditCB"
-    }
-
-    MarkerBasePandaRectEditCB $varname
-}
-
-proc BpandaDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "BpandaDistCB"
-    }
-
-    MarkerBasePandaDistCB $varname
-}
diff --git a/src/cat.tcl b/src/cat.tcl
index 9990e7c..bf37542 100644
--- a/src/cat.tcl
+++ b/src/cat.tcl
@@ -1065,7 +1065,7 @@ proc ProcessCatalogCmd {varname iname} {
     global pcat
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     set cvarname {}
 
diff --git a/src/catcdssrch.tcl b/src/catcdssrch.tcl
index 2ee9ed9..74b7bbd 100644
--- a/src/catcdssrch.tcl
+++ b/src/catcdssrch.tcl
@@ -332,7 +332,7 @@ proc CATCDSSrchVOTParse {t token} {
     set T(tree,prev) {}
     if [catch {$xml parse [http::data $token]} err] {
 	if {$debug(tcl,cat)} {
-	    puts stderr "CATVOTParse: $err"
+	    puts stderr "CATCDSSrchVOTParse: $err"
 	}
     }
 
diff --git a/src/catdialog.tcl b/src/catdialog.tcl
index c7712e3..5601f56 100644
--- a/src/catdialog.tcl
+++ b/src/catdialog.tcl
@@ -25,7 +25,7 @@ proc CATDialog {varname format catalog title action} {
 
     global debug
     if {$debug(tcl,cat)} {
-	puts stderr "CATDialog $varname :$format:$catalog:$title:$action"
+	puts stderr "CATDialog $varname:$format:$catalog:$title:$action"
     }
 
     # main dialog
@@ -86,7 +86,12 @@ proc CATDialog {varname format catalog title action} {
     set w $var(top)
     set mb $var(mb)
 
-    Toplevel $w $mb 7 [msgcat::mc {Catalog Tool}] "CATDestroy $varname"
+    if {$title!= {}} {
+	set tt $title
+    } else {
+	set tt [msgcat::mc {Catalog Tool}]
+    }
+    Toplevel $w $mb 7 $tt "CATDestroy $varname"
 
     $mb add cascade -label [msgcat::mc {File}] -menu $mb.file
     $mb add cascade -label [msgcat::mc {Edit}] -menu $mb.edit
@@ -199,40 +204,43 @@ proc CATDialog {varname format catalog title action} {
 	-command "CATSymDialog $varname"
 
     menu $mb.symbol.shape
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Circle Point}] \
+    $mb.symbol.shape add radiobutton -label [msgcat::mc {Circle}] \
+	-variable ${flt}(1,$sn) -value circle \
+	-command "CATPlot $varname"
+    $mb.symbol.shape add radiobutton -label [msgcat::mc {Ellipse}] \
+	-variable ${flt}(1,$sn) -value ellipse \
+	-command "CATPlot $varname"
+    $mb.symbol.shape add radiobutton -label [msgcat::mc {Box}] \
+	-variable ${flt}(1,$sn) -value box \
+	-command "CATPlot $varname"
+    $mb.symbol.shape add radiobutton -label [msgcat::mc {Text}] \
+	-variable ${flt}(1,$sn) -value text \
+	-command "CATPlot $varname"
+    $mb.symbol.shape add cascade -label [msgcat::mc {Point}] \
+	-menu $mb.symbol.shape.point
+
+    menu $mb.symbol.shape.point
+    $mb.symbol.shape.point add radiobutton -label [msgcat::mc {Circle}] \
 	-variable ${flt}(1,$sn) -value {circle point} \
 	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Box Point}] \
+    $mb.symbol.shape.point add radiobutton -label [msgcat::mc {Box}] \
 	-variable ${flt}(1,$sn) -value {box point} \
 	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Diamond Point}] \
+    $mb.symbol.shape.point add radiobutton -label [msgcat::mc {Diamond}] \
 	-variable ${flt}(1,$sn) -value {diamond point} \
 	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Cross Point}] \
+    $mb.symbol.shape.point add radiobutton -label [msgcat::mc {Cross}] \
 	-variable ${flt}(1,$sn) -value {cross point} \
 	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {X Point}] \
+    $mb.symbol.shape.point add radiobutton -label [msgcat::mc {X}] \
 	-variable ${flt}(1,$sn) -value {x point} \
 	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Arrow Point}] \
+    $mb.symbol.shape.point add radiobutton -label [msgcat::mc {Arrow}] \
 	-variable ${flt}(1,$sn) -value {arrow point} \
 	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {BoxCircle Point}]\
+    $mb.symbol.shape.point add radiobutton -label [msgcat::mc {BoxCircle}]\
 	-variable ${flt}(1,$sn) -value {boxcircle point} \
 	-command "CATPlot $varname"
-    $mb.symbol.shape add separator
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Circle}] \
-	-variable ${flt}(1,$sn) -value circle \
-	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Ellipse}] \
-	-variable ${flt}(1,$sn) -value ellipse \
-	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Box}] \
-	-variable ${flt}(1,$sn) -value box \
-	-command "CATPlot $varname"
-    $mb.symbol.shape add radiobutton -label [msgcat::mc {Text}] \
-	-variable ${flt}(1,$sn) -value text \
-	-command "CATPlot $varname"
 
     ColorMenu $mb.symbol.color $flt 1,$cn [list CATPlot $varname]
 
@@ -263,8 +271,12 @@ proc CATDialog {varname format catalog title action} {
     ttk::label $f.cat -textvariable ${varname}(catalog) \
 	-relief groove -width 60 -anchor w
 
-    grid $f.ttitle x $f.title -padx 2 -pady 2 -sticky w
-    grid $f.tcat x $f.cat -padx 2 -pady 2 -sticky w
+    ttk::label $f.loctitle -text [msgcat::mc {IAU Location Code}]
+    ttk::entry $f.loc -textvariable ${varname}(loc) -width 7
+
+    grid $f.ttitle $f.title -padx 2 -pady 2 -sticky w
+    grid $f.tcat $f.cat -padx 2 -pady 2 -sticky w
+    grid $f.loctitle $f.loc -padx 2 -pady 2 -sticky w
 
     # Object
     set f [ttk::labelframe $w.obj -text [msgcat::mc {Object}] -padding 2]
diff --git a/src/catreg.tcl b/src/catreg.tcl
index 6f6ec0b..94ef189 100644
--- a/src/catreg.tcl
+++ b/src/catreg.tcl
@@ -158,8 +158,9 @@ proc CATReg {varname row interactive resultname} {
 
 	    # xx
 	    set xx [starbase_get $var(tbldb) $ii $colx]
-	    if {$xformat == {h:m:s}} {
-		set xx [uformat $xformat d $xx]
+	    switch $xformat {
+		{h:m:s} -
+		{d:m:s} {set xx [uformat $xformat d $xx]}
 	    }
 
 	    # yy
diff --git a/src/catskybot.tcl b/src/catskybot.tcl
index a67a679..36d464d 100644
--- a/src/catskybot.tcl
+++ b/src/catskybot.tcl
@@ -101,14 +101,38 @@ proc CATSkyBotVOT {varname} {
 	if {$ut == {}} {
 	    set ut [string trim [$current(frame) get fits header 1 keyword TIME_OBS]]
 	}
+
 	if {$ut != {}} {
 	    append epoch "T$ut"
 	} else {
-	    ARError $varname [msgcat::mc {Unable to determine date of observation}]
+	    ARError $varname [msgcat::mc {Unable to determine time of observation}]
 	    return
 	}
     }
 
+    # do we finally have a date with time?
+    set dt [split $epoch {T}]
+    set dd [lindex $dt 0]
+    set tt [lindex $dt 1]
+    if {$tt != {}} {
+	# do we have EXPTIME or EXP_TIME?
+	set exp [string trim [$current(frame) get fits header 1 keyword EXPTIME]]
+	if {$exp == {}} {
+	    set exp [string trim [$current(frame) get fits header 1 keyword EXP_TIME]]
+	}
+
+	if {$exp != {} && [string is double $exp]} {
+	    # ok, rebuild epoch
+	    set ttt [split $tt {:}]
+	    set total [expr [lindex $ttt 0]*60.*60. + [lindex $ttt 1]*60. + [lindex $ttt 2] + [expr $exp/2.]]
+	    set hh [format "%02d" [expr int($total/60./60.)]]
+	    set total [expr $total - $hh*60.*60.]
+	    set mm [format "%02d" [expr int($total/60.)]]
+	    set ss [format "%02.1f" [expr $total - $mm*60.]]
+	    set epoch "${dd}T${hh}:${mm}:${ss}"
+	}
+    }
+
     # query
     set var(query) [http::formatQuery EPOCH $epoch RA $xx DEC $yy SR $rr VERB $type -mime votable -loc $var(loc)]
     set var(url) "http://vo.imcce.fr/webservices/skybot/skybotconesearch_query.php"
diff --git a/src/catsym.tcl b/src/catsym.tcl
index aef6a9d..74d3a95 100644
--- a/src/catsym.tcl
+++ b/src/catsym.tcl
@@ -128,22 +128,6 @@ proc CATSymDialog {parent} {
 	-command "CATEditDialog $varname angle $pvar(catdb)"
 
     menu $f.shape.menu
-    $f.shape.menu add radiobutton -label [msgcat::mc {Circle Point}] \
-	-variable ${varname}(shape) -value {circle point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Box Point}] \
-	-variable ${varname}(shape) -value {box point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Diamond Point}] \
-	-variable ${varname}(shape) -value {diamond point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Cross Point}] \
-	-variable ${varname}(shape) -value {cross point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {X Point}] \
-	-variable ${varname}(shape) -value {x point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Arrow Point}] \
-	-variable ${varname}(shape) -value {arrow point}
-    $f.shape.menu add radiobutton \
-	-label [msgcat::mc {BoxCircle Point}] \
-	-variable ${varname}(shape) -value {boxcircle point}
-    $f.shape.menu add separator
     $f.shape.menu add radiobutton  -label [msgcat::mc {Circle}] \
 	-variable ${varname}(shape) -value {circle}
     $f.shape.menu add radiobutton  -label [msgcat::mc {Ellipse}] \
@@ -154,6 +138,24 @@ proc CATSymDialog {parent} {
 	-variable ${varname}(shape) -value {vector}
     $f.shape.menu add radiobutton  -label [msgcat::mc {Text}] \
 	-variable ${varname}(shape) -value {text}
+    $f.shape.menu add cascade -label [msgcat::mc {Point}] \
+	-menu $f.shape.menu.point
+
+    menu $f.shape.menu.point
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Circle}] \
+	-variable ${varname}(shape) -value {circle point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Box}] \
+	-variable ${varname}(shape) -value {box point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Diamond}] \
+	-variable ${varname}(shape) -value {diamond point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Cross}] \
+	-variable ${varname}(shape) -value {cross point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {X}] \
+	-variable ${varname}(shape) -value {x point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Arrow}] \
+	-variable ${varname}(shape) -value {arrow point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {BoxCircle}] \
+	-variable ${varname}(shape) -value {boxcircle point}
 
     grid $f.tcondition $f.condition $f.bcondition -padx 2 -pady 2 -sticky w
     grid $f.tthen -padx 2 -pady 2 -sticky w
diff --git a/src/circle.tcl b/src/circle.tcl
index 0d28cdb..6f61749 100644
--- a/src/circle.tcl
+++ b/src/circle.tcl
@@ -21,21 +21,24 @@ proc CircleDialog {varname} {
     AdjustCoordSystem $varname dcoord
 
     # procs
-    set var(which) circle
     set var(proc,apply) CircleApply
     set var(proc,close) CircleClose
     set var(proc,coordCB) CircleCoordCB
-    set var(proc,editCB) CircleEditCB
-    set var(proc,distCB) CircleDistCB
 
     # base
     MarkerBaseCenterDialog $varname
 
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
+
+    # plot3d
+    MarkerAnalysisPlot3dDialog $varname
+
     # init
-    CircleDistCB $varname
+    CircleEditCB $varname
 
     # callbacks
-    $var(frame) marker $var(id) callback move CircleEditCB $varname
     $var(frame) marker $var(id) callback edit CircleEditCB $varname
 
     set f $var(top).param
@@ -44,7 +47,7 @@ proc CircleDialog {varname} {
     ttk::label $f.tradius -text [msgcat::mc {Radius}]
     ttk::entry $f.radius -textvariable ${varname}(radius) -width 13 
     DistMenuButton $f.uradius $varname dcoord 1 dformat \
-	[list CircleDistCB $varname]
+	[list CircleEditCB $varname]
     DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat
 
     grid $f.tradius $f.radius $f.uradius -padx 2 -pady 2 -sticky w
@@ -56,7 +59,6 @@ proc CircleClose {varname} {
     upvar #0 $varname var
     global $varname
 
-    $var(frame) marker $var(id) delete callback move CircleEditCB
     $var(frame) marker $var(id) delete callback edit CircleEditCB
 
     MarkerBaseCenterClose $varname
@@ -99,16 +101,3 @@ proc CircleEditCB {varname {dummy {}}} {
     set var(radius) [$var(frame) get marker $var(id) circle radius \
 			 $var(dcoord) $var(dformat)]
 }
-
-proc CircleDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "CircleDistCB"
-    }
-
-    MarkerBaseDistCB $varname
-    CircleEditCB $varname
-}
diff --git a/src/circle3d.tcl b/src/circle3d.tcl
deleted file mode 100644
index 3a32b2c..0000000
--- a/src/circle3d.tcl
+++ /dev/null
@@ -1,261 +0,0 @@
-#  Copyright (C) 1999-2012
-#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
-#  For conditions of distribution and use, see copyright notice in "copyright"
-
-package provide DS9 1.0
-
-proc Circle3dDialog {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    # see if we already have a header window visible
-    if [winfo exists $var(top)] {
-	raise $var(top)
-	return
-    }
-
-    # variables
-    set rr [$var(frame) get wcs]
-    set var(dcoord) [lindex $rr 0]
-    set var(dformat) degrees
-    AdjustCoordSystem $varname dcoord
-
-    # procs
-    set var(which) circle3d
-    set var(proc,apply) Circle3dApply
-    set var(proc,close) Circle3dClose
-    set var(proc,coordCB) Circle3dCoordCB
-    set var(proc,editCB) Circle3dEditCB
-    set var(proc,distCB) Circle3dDistCB
-
-    # base
-    MarkerBaseCenterDialog $varname
-    set var(pcoord) $var(system)
-
-    # menus
-    $var(mb) add cascade -label [msgcat::mc {Method}] -menu $var(mb).method
-    menu $var(mb).method
-    $var(mb).method add radiobutton -label [msgcat::mc {Average}] \
-	-variable ${varname}(method) -value 1 \
-	-command "Circle3dApply $varname"
-    $var(mb).method add radiobutton -label [msgcat::mc {Sum}] \
-	-variable ${varname}(method) -value 0 \
-	-command "Circle3dApply $varname"
-
-    $var(mb) add cascade -label [msgcat::mc {Coordinate}] -menu $var(mb).coord
-    CoordMenu $var(mb).coord $varname pcoord 2 {} {} \
-	[list Circle3dSystem $varname]
-    CoordMenuEnable $var(mb).coord $varname pcoord 2 {} {}
-
-    # init
-    Circle3dDistCB $varname
-
-    # callbacks
-    $var(frame) marker $var(id) callback move Circle3dEditCB $varname
-    $var(frame) marker $var(id) callback edit Circle3dEditCB $varname
-
-    set f $var(top).param
-
-    # Radius
-    ttk::label $f.tradius -text [msgcat::mc {Radius}]
-    ttk::entry $f.radius -textvariable ${varname}(radius) -width 13 
-    DistMenuButton $f.uradius $varname dcoord 1 dformat \
-	[list Circle3dDistCB $varname]
-    DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat
-
-    grid $f.tradius $f.radius x $f.uradius -padx 2 -pady 2 -sticky w
-
-    # make sure its opened
-    Circle3dPlotCB $var(frame) $var(id)
-}
-
-
-# actions
-
-proc Circle3dClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    $var(frame) marker $var(id) delete callback move Circle3dEditCB
-    $var(frame) marker $var(id) delete callback edit Circle3dEditCB
-
-    MarkerBaseCenterClose $varname
-}
-
-proc Circle3dApply {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    $var(frame) marker $var(id) circle3d $var(radius) \
-	$var(dcoord) $var(dformat) $var(method)
-
-    MarkerBaseCenterApply $varname
-}
-
-# callbacks
-
-proc Circle3dCoordCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "Circle3dCoordCB"
-    }
-
-    MarkerBaseCoordCB $varname
-    MarkerBaseCenterMoveCB $varname
-}
-
-proc Circle3dEditCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "Circle3dEditCB"
-    }
-
-    set var(radius) [$var(frame) get marker $var(id) circle3d radius \
-			 $var(dcoord) $var(dformat)]
-    set var(method) [$var(frame) get marker $var(id) circle3d method]
-}
-
-proc Circle3dDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "Circle3dDistCB"
-    }
-
-    MarkerBaseDistCB $varname
-    Circle3dEditCB $varname
-}
-
-# support
-
-proc Circle3dSystem {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    $var(frame) marker $var(id) circle3d system $var(pcoord)
-
-    Circle3dPlotCB $var(frame) $var(id)
-    Circle3dXAxisTitle $var(frame) $var(id)
-}
-
-# Plot
-
-proc Circle3dPlotInit {frame id} {
-    $frame marker $id callback move Circle3dPlotCB $frame
-    $frame marker $id callback edit Circle3dPlotCB $frame
-    $frame marker $id callback update Circle3dPlotCB $frame
-    $frame marker $id callback delete Circle3dPlotDeleteCB $frame
-    Circle3dPlotCB $frame $id
-}
-
-# hardcoded into ds9parser.Y
-# hardcoded into frmarkerxml.C
-proc Circle3dPlotCB {frame id} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set tt proj${id}${frame}
-    set xx proj${id}${frame}x
-    set yy proj${id}${frame}y
-    set xe proj${id}${frame}xe
-    set ye proj${id}${frame}ye
-
-    set xc proj${id}${frame}xc
-
-    global $xx $yy $xe $ye $xc
-    if {[APPing $varname]} {
-	$frame get marker $id circle3d $xx $yy $xc
-	APStats $varname
-    } else {
-	global ed
-	set rr [$frame get wcs]
-	set ed(system) [lindex $rr 0]
-	set ed(sky) [lindex $rr 1]
-	AdjustCoordSystem ed system
-
-	APDialog $varname Circle3d Circle3d $ed(system) Counts
-	$var(graph) xaxis configure -command [list Circle3dXAxis $frame $id]
-
-	set var(xdata) $xx
-	set var(ydata) $yy
-	set var(xedata) $xe
-	set var(yedata) $ye
-
-	blt::vector create $xx $yy $xe $ye $xc
-	$frame marker $id circle3d system $ed(system)
-	$frame get marker $id circle3d $xx $yy $xc
-
-	APExternal $varname
-	Circle3dXAxisTitle $frame $id
-    }
-}
-
-# hardcoded into ds9parser.Y
-# hardcoded into frmarkerxml.C
-proc Circle3dPlotDeleteCB {frame id} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set xc proj${id}${frame}xc
-
-    global $xc
-    catch {blt::vector destroy $xc}
-    # clear any errors
-    global errorInfo
-    set errorInfo {}
-
-    APDestroy $varname
-}
-
-proc Circle3dXAxisTitle {frame id} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set sys [$frame get marker $id circle3d system]
-    switch -- $sys {
-	image -
-	physical -
-	amplifier -
-	detector {set title "$sys coordinates"}
-	default {
-	    set w [string range $sys 3 3]
-	    set tt [string trim [$frame get fits header 1 keyword \{CTYPE3$w\}]]
-	    if {$tt != {}} {
-		set title "$tt coordinates"
-	    } else {
-		set title "$sys coordinates"
-	    }
-	}
-    }
-    $var(graph) xaxis configure -title $title
-}
-
-proc Circle3dXAxis {frame id w xx} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set x [expr $xx-1]
-    set xc proj${id}${frame}xc
-
-    global $xc
-    # sometimes, $x equals $xc length
-    set ll [$xc length]
-    if {($ll>=1) && ($x>=0) && ($x<$ll)} {
-	set a [format "%6.3f" [expr "$$xc\($x\)"]]
-	return "$a"
-    } else {
-	return {}
-    }
-}
diff --git a/src/colorbar.tcl b/src/colorbar.tcl
index 219cbfe..0575203 100644
--- a/src/colorbar.tcl
+++ b/src/colorbar.tcl
@@ -18,10 +18,12 @@ proc ColorbarDef {} {
     set icolorbar(horizontal,height) 45
     set icolorbar(num) 1024
     set icolorbar(start) $ds9(menu,start)
-    set icolorbar(count) $ds9(menu,start)
-    set icolorbar(cmaps) 0
+    set icolorbar(count) 0
+    set icolorbar(contrib) 0
+    set icolorbar(user) 0
     set icolorbar(private) false
     set icolorbar(frame) {}
+    set icolorbar(contrib,fn) [list cubehelix0.sao cubehelix1.sao]
 
     set colorbar(lock) 0
 
@@ -138,14 +140,16 @@ proc LoadColormapFile {filename} {
 	set id [colorbar get id]
 	set colorbar(map) [colorbar get name]
 
-	$ds9(mb).color insert $icolorbar(count) radiobutton \
+	$ds9(mb).color.user add radiobutton \
 	    -label "$colorbar(map)" \
-	    -variable colorbar(map) -command [list ChangeColormapID $id]
+	    -variable colorbar(map) \
+	    -command [list ChangeColormapID $id]
 
 	if {[winfo exists $icolorbar(top)]} {
-	    $icolorbar(mb).colormap insert $icolorbar(count) \
-		radiobutton -label "$colorbar(map)" \
-		-variable colorbar(map) -command [list ChangeColormapID $id]
+	    $icolorbar(mb).colormap.user add radiobutton \
+		-label "$colorbar(map)" \
+		-variable colorbar(map) \
+		-command [list ChangeColormapID $id]
 	}
 	incr icolorbar(count)
 
@@ -533,15 +537,43 @@ proc ColormapDialog {} {
     EditMenu $mb icolorbar
 
     menu $mb.colormap
-    set count 1
+    menu $mb.colormap.contrib
+    menu $mb.colormap.user
+
     set id [colorbar list id]
-    foreach ii $id {
-	set title [colorbar get name $ii]
-	$mb.colormap insert $count radiobutton \
-	    -label [msgcat::mc $title] -variable colorbar(map) \
-	    -command "ChangeColormapID $ii"
-	incr count
+    # base
+    for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
+	set jj [lindex $id $ii]
+	set name [colorbar get name $jj]
+	$mb.colormap add radiobutton \
+	    -label [msgcat::mc $name] \
+	    -variable colorbar(map) -value $name \
+	    -command "ChangeColormapID $jj"
+    }
+    # contrib
+    for {set ii $icolorbar(contrib)} {$ii<$icolorbar(user)} {incr ii} {
+	set jj [lindex $id $ii]
+	set name [colorbar get name $jj]
+	$mb.colormap.contrib add radiobutton \
+	    -label [msgcat::mc $name] \
+	    -variable colorbar(map) -value $name \
+	    -command "ChangeColormapID $jj"
+    }
+    # user
+    for {set ii $icolorbar(user)} {$ii<$icolorbar(count)} {incr ii} {
+	set jj [lindex $id $ii]
+	set name [colorbar get name $jj]
+	$mb.colormap.user add radiobutton \
+	    -label [msgcat::mc $name] \
+	    -variable colorbar(map) -value $name \
+	    -command "ChangeColormapID $jj"
     }
+
+    $mb.colormap add separator
+    $mb.colormap add cascade -label [msgcat::mc {Contributed}] \
+	-menu $mb.colormap.contrib
+    $mb.colormap add cascade -label [msgcat::mc {User}] \
+	-menu $mb.colormap.user
     $mb.colormap add separator
     $mb.colormap add checkbutton \
 	-label [msgcat::mc {Invert Colormap}] \
@@ -672,18 +704,26 @@ proc UpdateColorDialog {} {
 			"[msgcat::mc {Load Colormap}]..." -state normal
 		    $icolorbar(mb).file entryconfig \
 			"[msgcat::mc {Save Colormap}]..." -state normal
-		    for {set i $icolorbar(start)} {$i<$icolorbar(count)} {incr i} {
-			$icolorbar(mb).colormap entryconfig $i -state normal
+		    for {set ii $icolorbar(start)} {$ii<=$icolorbar(contrib)} {incr ii} {
+			$icolorbar(mb).colormap entryconfig $ii -state normal
 		    }
+		    $icolorbar(mb).colormap entryconfig \
+			[msgcat::mc {Contributed}] -state normal
+		    $icolorbar(mb).colormap entryconfig \
+			[msgcat::mc {User}] -state normal
 		}
 		rgb {
 		    $icolorbar(mb).file entryconfig \
 			"[msgcat::mc {Load Colormap}]..." -state disabled
 		    $icolorbar(mb).file entryconfig \
 			"[msgcat::mc {Save Colormap}]..." -state disabled
-		    for {set i $icolorbar(start)} {$i<$icolorbar(count)} {incr i} {
-			$icolorbar(mb).colormap entryconfig $i -state disabled
+		    for {set ii $icolorbar(start)} {$ii<=$icolorbar(contrib)} {incr ii} {
+			$icolorbar(mb).colormap entryconfig $ii -state disabled
 		    }
+		    $icolorbar(mb).colormap entryconfig \
+			[msgcat::mc {Contributed}] -state disabled
+		    $icolorbar(mb).colormap entryconfig \
+			[msgcat::mc {User}] -state disabled
 		}
 	    }
 	} else {
@@ -691,9 +731,13 @@ proc UpdateColorDialog {} {
 		"[msgcat::mc {Load Colormap}]..." -state normal
 	    $icolorbar(mb).file entryconfig \
 		"[msgcat::mc {Save Colormap}]..." -state normal
-	    for {set i $icolorbar(start)} {$i<$icolorbar(count)} {incr i} {
-		$icolorbar(mb).colormap entryconfig $i -state normal
+	    for {set ii $icolorbar(start)} {$ii<=$icolorbar(contrib)} {incr ii} {
+		$icolorbar(mb).colormap entryconfig $ii -state normal
 	    }
+	    $icolorbar(mb).colormap entryconfig [msgcat::mc {Contributed}] \
+		-state normal
+	    $icolorbar(mb).colormap entryconfig [msgcat::mc {User}] \
+		-state normal
 	}
     }
 }
@@ -815,8 +859,8 @@ proc ColorbarBackupCmaps {ch dir} {
 
     # save any loaded cmaps
     set id [colorbar list id]
-    if {$icolorbar(cmaps)<[llength $id]} {
-	for {set ii $icolorbar(cmaps)} {$ii<[llength $id]} {incr ii} {
+    if {$icolorbar(user)<[llength $id]} {
+	for {set ii $icolorbar(user)} {$ii<[llength $id]} {incr ii} {
 	    set which [lindex $id $ii]
 	    set nn [lindex [file split [colorbar get file name $which]] end]
 	    colorbar save $which \"[file join $dir $nn]\"
@@ -838,7 +882,7 @@ proc ProcessCmapCmd {varname iname} {
     global rgb
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     switch -- [string tolower [lindex $var $i]] {
 	open {ColormapDialog}
diff --git a/src/comm.tcl b/src/comm.tcl
index e2a4eb7..6a8129c 100644
--- a/src/comm.tcl
+++ b/src/comm.tcl
@@ -52,6 +52,8 @@ proc CommSet {fn paramlist} {
 	dsseso {ProcessESOCmd param i}
 	dssstsci {ProcessSTSCICmd param i}
 	exit {ProcessQuitCmd param i}
+	export -
+	savefits {ProcessExportCmd param i}
 	file {ProcessFileCmd param i {} {}}
 	first {ProcessFIRSTCmd param i}
 	fits {ProcessFitsCmd param i {} $fn}
@@ -62,6 +64,8 @@ proc CommSet {fn paramlist} {
 	iconify {ProcessIconifyCmd param i}
 	iis {ProcessIISCmd param i}
 	imexam {}
+	image -
+	import {ProcessImportCmd param i}
 	lock {ProcessLockCmd param i}
 	lower {ProcessLowerCmd param i}
 	magnifier {ProcessMagnifierCmd param i}
@@ -91,7 +95,6 @@ proc CommSet {fn paramlist} {
 	rgb {ProcessRGBCmd param i}
 	rotate {ProcessRotateCmd param i}
 	saveimage {ProcessSaveImageCmd param i}
-	savefits {ProcessSaveFitsCmd param i}
 	savempeg {ProcessSaveMPEGCmd param i}
 	scale {ProcessScaleCmd param i}
 	single {ProcessSingleCmd param i}
@@ -156,6 +159,8 @@ proc CommGet {proc id paramlist fn} {
 	dsseso {ProcessSendESOCmd $proc $id $param}
 	dssstsci {ProcessSendSTSCICmd $proc $id $param}
 	exit {}
+	export -
+	savefits {}
 	file {ProcessSendFileCmd $proc $id $param}
 	first {ProcessSendFIRSTCmd $proc $id $param}
 	fits {ProcessSendFitsCmd $proc $id $param {} $fn}
@@ -166,6 +171,7 @@ proc CommGet {proc id paramlist fn} {
 	iconify {ProcessSendIconifyCmd $proc $id $param}
 	iis {ProcessSendIISCmd $proc $id $param}
 	imexam {ProcessSendImexamCmd $proc $id $param}
+	import {}
 	lock {ProcessSendLockCmd $proc $id $param}
 	lower {}
 	magnifier {ProcessSendMagnifierCmd $proc $id $param}
@@ -195,7 +201,6 @@ proc CommGet {proc id paramlist fn} {
 	rgb {ProcessSendRGBCmd $proc $id $param}
 	rotate {ProcessSendRotateCmd $proc $id $param}
 	saveimage {}
-	savefits {}
 	savempeg {}
 	scale {ProcessSendScaleCmd $proc $id $param}
 	single {ProcessSendSingleCmd $proc $id $param}
diff --git a/src/command.tcl b/src/command.tcl
index 20b11fc..d5589d4 100644
--- a/src/command.tcl
+++ b/src/command.tcl
@@ -139,6 +139,8 @@ proc ProcessCommand {argv argc} {
 	    -eso {incr i; ProcessESOCmd argv i}
 	    -dssstsci -
 	    -stsci {incr i; ProcessSTSCICmd argv i}
+	    -export -
+	    -savefits {incr i; ProcessExportCmd argv i}
 	    -exit -
 	    -quit {ProcessQuitCmd argv i}
 	    -frame {incr i; ProcessFrameCmd argv i}
@@ -182,6 +184,8 @@ proc ProcessCommand {argv argc} {
 	    }
 	    -iconify {incr i; ProcessIconifyCmd argv i}
 	    -iis {incr i; ProcessIISCmd argv i}
+	    -image -
+	    -import {set file(mode) photo}
 	    -info {
 		# backward compatibility
 		set view(info) 1
@@ -325,7 +329,6 @@ proc ProcessCommand {argv argc} {
 	    -samp {incr i; ProcessSAMPCmd argv i}
 	    -saveas -
 	    -saveimage {incr i; ProcessSaveImageCmd argv i}
-	    -savefits {incr i; ProcessSaveFitsCmd argv i}
 	    -savempeg {incr i; ProcessSaveMPEGCmd argv i}
 	    -scale -
 	    -ztrans {incr i; ProcessScaleCmd argv i}
@@ -477,6 +480,7 @@ proc CommandLineLoad {item filename argvname iname} {
 
     switch -- $file(mode) {
 	array {FileLast arrayfbox $item}
+	photo {FileLast importfbox $item}
 	url {}
 	default {FileLast fitsfbox $item}
     }
@@ -567,13 +571,16 @@ proc CommandLineLoadBase {item filename argvname iname} {
 	    LoadRGBArray $item
 	}
 
-	slice {
-	    LoadSliceFits $item
-	}
+	slice {LoadSliceFits $item}
 	url {
 	    MultiLoad $file(layer)
 	    LoadURL $item
 	}
+
+	photo {
+	    MultiLoad
+	    ImportPhoto $item
+	}
     }
 }
 
@@ -616,25 +623,30 @@ proc CommandLineLoadRGB {item filename argvname iname} {
 	}
 
 	rgbcube {
-	    CreateRGBFrame
+	    MultiLoadRGB
 	    LoadRGBCubeFits $item
 	}
 	srgbcube {
-	    CreateRGBFrame
+	    MultiLoadRGB
 	    incr i
 	    LoadRGBCubeSFits $item [lindex $argv $i]
 	}
 	rgbimage {
-	    CreateRGBFrame
+	    MultiLoadRGB
 	    LoadRGBImageFits $item
 	}
 	rgbarray {
-	    CreateRGBFrame
+	    MultiLoadRGB
 	    LoadRGBArray $item
 	}
-	slice {LoadSliceFits $item}
 
+	slice {LoadSliceFits $item}
 	url {LoadURL $item}
+
+	photo {
+	    MultiLoadRGB
+	    ImportPhoto $item
+	}
     }
 }
 
@@ -701,13 +713,16 @@ proc CommandLineLoad3D {item filename argvname iname} {
 	    # not supported
 	}
 
-	slice {
-	    LoadSliceFits $item
-	}
+	slice {LoadSliceFits $item}
 	url {
 	    MultiLoad
 	    LoadURL $item
 	}
+
+	photo {
+	    MultiLoad
+	    ImportPhoto $item
+	}
     }
 }
 
diff --git a/src/contour.tcl b/src/contour.tcl
index e123905..6d67092 100644
--- a/src/contour.tcl
+++ b/src/contour.tcl
@@ -793,7 +793,7 @@ proc ProcessContourCmd {varname iname} {
     global current
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     switch -- [string tolower [lindex $var $i]] {
 	open {ContourDialog}
diff --git a/src/convert.tcl b/src/convert.tcl
index c4f3f09..8407b20 100644
--- a/src/convert.tcl
+++ b/src/convert.tcl
@@ -61,6 +61,9 @@ proc strtod {d} {
     if { [string first - $d] >= 0 } {
 	set sign "-"
 	regsub -all -- "-" $d  {} d
+    } elseif { [string first + $d] >= 0 } {
+	set sign {}
+	regsub -all -- {\+} $d  {} d
     } else {
 	set sign {}
     }
@@ -104,7 +107,9 @@ proc strtod {d} {
 	}
     }
     set val [expr  $d + ($m / 60.0) + ($s / 3600.0)]
-    set val [format "%s%g" $sign $val]
+    # we don't want this. it rounds off to a precision of 6, which can
+    # cause problems with h:m:s to degree convertions
+    #   set val [format "%s%g" $sign $val]
     return $val
 }
 
diff --git a/src/crop.tcl b/src/crop.tcl
index d859ebe..73997b7 100644
--- a/src/crop.tcl
+++ b/src/crop.tcl
@@ -70,6 +70,7 @@ proc UpdateCrop {which} {
     UpdateGraphXAxis $which
     UpdateCropDialog
     UpdateCubeDialog
+    UpdateScaleDialog
     UpdateMain
     GridUpdateZoom
 }
@@ -383,7 +384,7 @@ proc ProcessCropCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     global crop
     global current
diff --git a/src/crosshair.tcl b/src/crosshair.tcl
index ce6d9f7..d46022a 100644
--- a/src/crosshair.tcl
+++ b/src/crosshair.tcl
@@ -101,7 +101,7 @@ proc ProcessCrosshairCmd {varname iname} {
     global crosshair
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     switch -- [string tolower [lindex $var $i]] {
 	match {
diff --git a/src/dialog.tcl b/src/dialog.tcl
index 719d85c..9af1480 100644
--- a/src/dialog.tcl
+++ b/src/dialog.tcl
@@ -252,10 +252,10 @@ proc SimpleTextDialog {varname title width height action pos txt
 	set var(search) {}
 	set var(destroyCB) $destroyCB
 	set var(destroyParam) $destroyParam
-	set var(font) courier
-	set var(font,size) [PixelsToPoints [font actual TkFixedFont -size]]
-	set var(font,weight) [font actual TkFixedFont -weight]
-	set var(font,slant) [font actual TkFixedFont -slant]
+	set var(font) $pds9(text,font)
+	set var(font,size) $pds9(text,font,size)
+	set var(font,weight) $pds9(text,font,weight)
+	set var(font,slant) $pds9(text,font,slant)
 
 	$var(mb) add cascade -label [msgcat::mc {File}] -menu $var(mb).file
 	menu $var(mb).file
diff --git a/src/ds9.tcl b/src/ds9.tcl
index acca11a..5ab2dc8 100755
--- a/src/ds9.tcl
+++ b/src/ds9.tcl
@@ -7,7 +7,7 @@ proc DS9Def {} {
     global pds9
 
     set ds9(title) "$ds9(app)"
-    set ds9(version) {7.0 beta 18}
+    set ds9(version) {7.0 beta 19}
 
     set ds9(top) .
     set ds9(mb) .mb
@@ -16,8 +16,6 @@ proc DS9Def {} {
     set ds9(depth) 8
     set ds9(FTY_MAXAXES) 10
 
-    set ds9(3D) 1
-
     set ds9(x) -1
     set ds9(y) -1
 
@@ -51,6 +49,7 @@ proc DS9Def {} {
     set ds9(lock) 0
     set ds9(next) {}
     set ds9(next,num) 1
+    set ds9(last) {}
 
     set ds9(event,opendoc) {}
     set ds9(event,printdoc) {}
@@ -137,6 +136,11 @@ proc DS9Def {} {
     set pds9(font,weight) [font configure TkDefaultFont -weight]
     set pds9(font,slant) [font configure TkDefaultFont -slant]
 
+    set pds9(text,font) courier
+    set pds9(text,font,size) [PixelsToPoints [font actual TkFixedFont -size]]
+    set pds9(text,font,weight) [font actual TkFixedFont -weight]
+    set pds9(text,font,slant) [font actual TkFixedFont -slant]
+
     set pds9(backup) 1
     set pds9(automarker) 1
     set pds9(tcl) 0
@@ -187,8 +191,12 @@ switch $ds9(wm) {
 set ds9(root) "[pwd]/zvfsmntpt"
 
 # tcl modules
-source $ds9(root)/tcl8/8.5/msgcat-1.4.3.tm
-source $ds9(root)/tcl8/8.4/http-2.7.5.tm
+if {![namespace exists msgcat]} {
+    source $ds9(root)/tcl8/8.5/msgcat-1.4.3.tm
+}
+if {![namespace exists http]} {
+    source $ds9(root)/tcl8/8.4/http-2.7.5.tm
+}
 
 source $ds9(root)/tk8.5/tearoff.tcl
 source $ds9(root)/tk8.5/comdlg.tcl
@@ -240,6 +248,7 @@ CursorDef
 DebugDef 
 ESODef
 ExamineDef
+ExportDef
 FIRSTDef
 GraphDef
 GridDef
@@ -265,6 +274,7 @@ RGBDef
 SAMPDef
 SAODef
 SaveImageDef
+SaveMPEGDef
 ScaleDef
 SkyViewDef
 SmoothDef
diff --git a/src/ellipse.tcl b/src/ellipse.tcl
index e0018df..911111e 100644
--- a/src/ellipse.tcl
+++ b/src/ellipse.tcl
@@ -14,16 +14,53 @@ proc EllipseDialog {varname} {
 	return
     }
 
+    # variables
+    set rr [$var(frame) get wcs]
+    set var(dcoord) [lindex $rr 0]
+    set var(dformat) degrees
+    AdjustCoordSystem $varname dcoord
+
     # procs
-    set var(which) ellipse
     set var(proc,apply) EllipseApply
     set var(proc,close) EllipseClose
     set var(proc,coordCB) EllipseCoordCB
-    set var(proc,editCB) EllipseEditCB
-    set var(proc,distCB) EllipseDistCB
 
     # base
-    MarkerBaseRectDialog $varname radius
+    MarkerBaseCenterDialog $varname
+
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
+
+    # plot3d
+    MarkerAnalysisPlot3dDialog $varname
+
+    # init
+    EllipseEditCB $varname
+    MarkerBaseCenterRotateCB $varname
+
+    # callbacks
+    $var(frame) marker $var(id) callback edit EllipseEditCB $varname
+    $var(frame) marker $var(id) callback rotate \
+	MarkerBaseCenterRotateCB $varname
+
+    set f $var(top).param
+
+    # Radius
+    ttk::label $f.tradius -text Radius
+    ttk::entry $f.radius1 -textvariable ${varname}(radius1) -width 13 
+    ttk::entry $f.radius2 -textvariable ${varname}(radius2) -width 13 
+    DistMenuButton $f.uradius $varname dcoord 1 dformat \
+	[list EllipseEditCB $varname]
+    DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat
+
+    # Angle
+    ttk::label $f.tangle -text [msgcat::mc {Angle}]
+    ttk::entry $f.angle -textvariable ${varname}(angle) -width 13 
+    ttk::label $f.uangle -text [msgcat::mc {Degrees}]
+
+    grid $f.tradius $f.radius1 $f.radius2 $f.uradius -padx 2 -pady 2 -sticky w
+    grid $f.tangle $f.angle $f.uangle -padx 2 -pady 2 -sticky w
 }
 
 # actions
@@ -32,14 +69,24 @@ proc EllipseClose {varname} {
     upvar #0 $varname var
     global $varname
 
-    MarkerBaseRectClose $varname
+    $var(frame) marker $var(id) delete callback edit EllipseEditCB
+    $var(frame) marker $var(id) delete callback rotate MarkerBaseCenterRotateCB
+
+    MarkerBaseCenterClose $varname
 }
 
 proc EllipseApply {varname} {
     upvar #0 $varname var
     global $varname
 
-    MarkerBaseRectApply $varname
+    if {$var(radius1) != {} &&
+	$var(radius2) !={}} {
+	$var(frame) marker $var(id) ellipse radius \
+	    $var(radius1) $var(radius2) $var(dcoord) $var(dformat)
+    }
+
+    MarkerBaseCenterRotate $varname
+    MarkerBaseCenterApply $varname
 }
 
 # callbacks
@@ -53,7 +100,9 @@ proc EllipseCoordCB {varname {dummy {}}} {
 	puts stderr "EllipseCoordCB"
     }
 
-    MarkerBaseRectCoordCB $varname
+    MarkerBaseCoordCB $varname
+    MarkerBaseCenterMoveCB $varname
+    MarkerBaseCenterRotateCB $varname
 }
 
 proc EllipseEditCB {varname {dummy {}}} {
@@ -65,18 +114,8 @@ proc EllipseEditCB {varname {dummy {}}} {
 	puts stderr "EllipseEditCB"
     }
 
-    MarkerBaseRectEditCB $varname
+    set r [$var(frame) get marker $var(id) ellipse radius \
+	       $var(dcoord) $var(dformat)]
+    set var(radius1) [lindex $r 0]
+    set var(radius2) [lindex $r 1]
 }
-
-proc EllipseDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "EllipseDistCB"
-    }
-
-    MarkerBaseRectDistCB $varname
-}
-
diff --git a/src/ellipseannulus.tcl b/src/ellipseannulus.tcl
index d96482c..83d3e47 100644
--- a/src/ellipseannulus.tcl
+++ b/src/ellipseannulus.tcl
@@ -16,74 +16,13 @@ proc EllipseAnnulusDialog {varname} {
 
     # procs
     set var(which) ellipseannulus
-    set var(proc,apply) EllipseAnnulusApply
-    set var(proc,close) EllipseAnnulusClose
-    set var(proc,generate) EllipseAnnulusGenerate
-    set var(proc,coordCB) EllipseAnnulusCoordCB
-    set var(proc,editCB) EllipseAnnulusEditCB
-    set var(proc,distCB) EllipseAnnulusDistCB
+    set var(proc,apply) MarkerBaseAnnulusRectApply
+    set var(proc,close) MarkerBaseAnnulusRectClose
+    set var(proc,generate) MarkerBaseAnnulusGenerateEllipse
+    set var(proc,coordCB) MarkerBaseAnnulusRectCoordCB
+    set var(proc,editCB) MarkerBaseAnnulusRectEditCB
+    set var(proc,distCB) MarkerBaseAnnulusRectDistCB
 
     # base
     MarkerBaseAnnulusRectDialog $varname radius Major Minor
 }
-
-# actions
-
-proc EllipseAnnulusClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseAnnulusRectClose $varname
-}
-
-proc EllipseAnnulusApply {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseAnnulusRectApply $varname
-}
-
-proc EllipseAnnulusGenerate {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseAnnulusGenerateEllipse $varname
-}
-
-# callbacks
-
-proc EllipseAnnulusCoordCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "EllipseAnnulusCoordCB"
-    }
-
-    MarkerBaseAnnulusRectCoordCB $varname
-}
-
-proc EllipseAnnulusEditCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "EllipseAnnulusEditCB"
-    }
-
-    MarkerBaseAnnulusRectEditCB $varname
-}
-
-proc EllipseAnnulusDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "EllipseAnnulusDistCB"
-    }
-
-    MarkerBaseAnnulusRectDistCB $varname
-}
diff --git a/src/epanda.tcl b/src/epanda.tcl
index effac89..09c5681 100644
--- a/src/epanda.tcl
+++ b/src/epanda.tcl
@@ -16,12 +16,12 @@ proc EpandaDialog {varname} {
 
     # procs
     set var(which) epanda
-    set var(proc,apply) EpandaApply
-    set var(proc,close) EpandaClose
+    set var(proc,apply) MarkerBasePandaRectApply
+    set var(proc,close) MarkerBasePandaRectClose
     set var(proc,generate) EpandaGenerate
-    set var(proc,coordCB) EpandaCoordCB
-    set var(proc,editCB) EpandaEditCB
-    set var(proc,distCB) EpandaDistCB
+    set var(proc,coordCB) MarkerBasePandaRectCoordCB
+    set var(proc,editCB) MarkerBasePandaRectEditCB
+    set var(proc,distCB) MarkerBasePandaRectDistCB
 
     # base panda rect dialog
     MarkerBasePandaRectDialog $varname
@@ -29,20 +29,6 @@ proc EpandaDialog {varname} {
 
 # actions
 
-proc EpandaClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBasePandaRectClose $varname
-}
-
-proc EpandaApply {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBasePandaRectApply $varname
-}
-
 proc EpandaGenerate {varname} {
     upvar #0 $varname var
     global $varname
@@ -50,41 +36,3 @@ proc EpandaGenerate {varname} {
     MarkerBaseAnnulusGenerateEllipse $varname
     MarkerBasePandaGenerateAngles $varname
 }
-
-# callbacks
-
-proc EpandaCoordCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "EpandaCoordCB"
-    }
-
-    MarkerBasePandaRectCoordCB $varname
-}
-
-proc EpandaEditCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "EpandaEditCB"
-    }
-
-    MarkerBasePandaRectEditCB $varname
-}
-
-proc EpandaDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "EpandaDistCB"
-    }
-
-    MarkerBasePandaDistCB $varname
-}
diff --git a/src/export.tcl b/src/export.tcl
new file mode 100644
index 0000000..86a9924
--- /dev/null
+++ b/src/export.tcl
@@ -0,0 +1,210 @@
+#  Copyright (C) 1999-2012
+#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+#  For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc ExportDef {} {
+    global export
+
+    set export(base) ds9
+    set export(format) jpeg
+    set export(jpeg,quality) 75
+    set export(tiff,compression) none
+}
+
+proc ExportDialog {} {
+    global export
+    global exportfbox
+    global ed
+
+    set w {.export}
+
+    set ed(ok) 0
+    set ed(format) $export(format)
+
+    DialogCreate $w [msgcat::mc {Export}] ed(ok)
+
+    # Param
+    set f [ttk::frame $w.param]
+    ttk::label $f.title -text [msgcat::mc {Format}]
+    ttk::radiobutton $f.fits -text {FITS} \
+	-variable ed(format) -value fits
+    ttk::radiobutton $f.gif -text {GIF} \
+	-variable ed(format) -value gif
+    ttk::radiobutton $f.jpeg -text {JPEG} \
+	-variable ed(format) -value jpeg
+    ttk::radiobutton $f.tiff -text {TIFF RGB 24-bit} \
+	-variable ed(format) -value tiff
+    ttk::radiobutton $f.png -text {PNG 24-bit (Portable Network Graphics)} \
+	-variable ed(format) -value png
+    ttk::radiobutton $f.ppm -text {PPM RGB (Portable Pixmap)} \
+	-variable ed(format) -value ppm
+    grid $f.fits -padx 2 -pady 2 -sticky w
+    grid $f.gif -padx 2 -pady 2 -sticky w
+    grid $f.jpeg -padx 2 -pady 2 -sticky w
+    grid $f.tiff -padx 2 -pady 2 -sticky w
+    grid $f.png -padx 2 -pady 2 -sticky w
+    grid $f.ppm -padx 2 -pady 2 -sticky w
+
+    # Buttons
+    set f [ttk::frame $w.buttons]
+    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed(ok) 1} \
+	-default active 
+    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed(ok) 0}
+    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
+
+    bind $w <Return> {set ed(ok) 1}
+
+    # Fini
+    ttk::separator $w.sep -orient horizontal
+    pack $w.buttons $w.sep -side bottom -fill x
+    pack $w.param -side top -fill both -expand true
+
+    DialogCenter $w 
+    DialogWait $w ed(ok)
+    DialogDismiss $w
+
+    if {$ed(ok)} {
+	set export(format) $ed(format)
+	set exportfbox(types) [FormatToFBox $export(format)]
+ 	FileLast exportfbox "$export(base).$export(format)"
+ 	set fn [SaveFileDialog exportfbox]
+
+	if {$fn != {}} {
+ 	    set export(base) [file rootname [file tail $fn]]
+
+	    set ok 1
+	    switch -- $export(format) {
+		fits {}
+		gif {}
+		jpeg {set ok [SaveJPEGParams export(jpeg,quality)]}
+		tiff {set ok [SaveTIFFParams export(tiff,compression)]}
+		png {}
+		ppm {}
+	    }
+
+	    if {$ok} {
+		Export $fn
+	    }
+	}
+    }
+
+    set rr $ed(ok)
+    unset ed
+    return $rr
+}
+
+proc Export {fn} {
+    global current
+    global export
+
+    if {$fn == {} || 
+	![$current(frame) has fits] || 
+	[$current(frame) get type] != {base}} {
+	return
+    }
+
+    switch -- $export(format) {
+	fits {$current(frame) save fits image file "\{$fn\}"}
+	default {ExportPhoto $fn}
+    }
+}
+
+# Support
+
+proc ExportPhoto {fn} {
+    global ds9
+    global export
+    global current
+
+    if {[catch {image create photo} ph]} {
+	Error [msgcat::mc {An error has occurred while creating image.}]
+	return
+    }
+
+    $current(frame) save photo $ph
+
+    switch -- $export(format) {
+	gif {$ph write $fn -format $export(format)}
+	jpeg {$ph write $fn -format \
+		  [list $export(format) -quality $export(jpeg,quality)]}
+	tiff {$ph write $fn -format \
+		  [list $export(format) -compression $export(tiff,compression)]}
+	png {$ph write $fn -format $export(format)}
+	ppm {$ph write $fn -format $export(format)}
+    }
+
+    image delete $ph
+}
+
+proc ProcessExportCmd {varname iname} {
+    upvar $varname var
+    upvar $iname i
+
+    # we need to be realized
+    ProcessRealizeDS9
+
+    set format {}
+    set fn [lindex $var $i]
+    if {$fn == {}} {
+	return
+    }
+
+    # backward compatibility
+    switch $fn {
+	fits -
+	gif -
+	tif -
+	tiff -
+	jpg -
+	jpeg -
+	png -
+	ppm {
+	    set format $fn
+	    set fn {}
+	    incr i
+	}
+    }
+
+    # one last time
+    if {$fn == {}} {
+	set fn [lindex $var $i]
+	if {$fn == {}} {
+	    return
+	}
+    }
+
+    global export
+    if {$format == {}} {
+	set export(format) [ExtToFormat $fn]
+    }
+
+    set param [string tolower [lindex $var [expr $i+1]]]
+    switch $export(format) {
+	fits -
+	gif -
+	png -
+	ppm {}
+	jpeg {
+	    if {$param != {} && [string is integer $param]} {
+		set export(jpeg,quality) $param
+		incr i
+	    }
+	}
+	tiff {
+	    switch $param {
+		none -
+		jpeg -
+		packbits -
+		deflate {
+		    set export(tiff,compression) $param
+		    incr i
+		}
+	    }
+	}
+    }
+
+    Export $fn
+    FileLast exportfbox $fn
+}
diff --git a/src/fits.tcl b/src/fits.tcl
index 60eda57..26d95d4 100644
--- a/src/fits.tcl
+++ b/src/fits.tcl
@@ -833,28 +833,49 @@ proc MultiLoad {{layer {}}} {
     }
 }
 
-proc MultiLoadBasic {} {
+proc MultiLoadBase {} {
     global ds9
     global current
 
     global debug
     if {$debug(tcl,layout)} {
-	puts stderr "MultiLoadBasic"
+	puts stderr "MultiLoadBase"
     }
 
-    switch -- [$current(frame) get type] {
-	base -
-	3d {
-	    CreateFrame
+    CreateFrame
 
-	    # go into tile mode if more than one
-	    set cnt [llength $ds9(frames)]
-	    if {$cnt > 1 && $current(display) != "tile"} {
-		set current(display) tile
-		DisplayMode
-	    }
+    # go into tile mode if more than one
+    set cnt [llength $ds9(frames)]
+    if {$cnt > 1 && $current(display) != "tile"} {
+	set current(display) tile
+	DisplayMode
+    }
+}
+
+proc MultiLoadRGB {} {
+    global ds9
+    global current
+
+    global debug
+    if {$debug(tcl,layout)} {
+	puts stderr "MultiLoadRGB"
+    }
+
+    if {$current(frame) != {}} {
+	if {![$current(frame) has fits]} {
+	    return
 	}
-	rgb {}
+	CreateRGBFrame
+    } else {
+	CreateRGBFrame
+	return
+    }
+
+    # go into tile mode if more than one
+    set cnt [llength $ds9(frames)]
+    if {$cnt > 1 && $current(display) != "tile"} {
+	set current(display) tile
+	DisplayMode
     }
 }
 
@@ -925,6 +946,9 @@ proc ProcessLoad {{err 1}} {
 		     $loadParam(load,type) \
 		     $loadParam(var,name) \
 		     $loadParam(load,layer)}
+	    photo {$current(frame) load $loadParam(file,type) \
+		       $loadParam(var,name) \{$loadParam(file,name)\}
+	    }
 	}
     } rr] {
 	if {$err} {
diff --git a/src/frame.tcl b/src/frame.tcl
index cee1e32..454866a 100644
--- a/src/frame.tcl
+++ b/src/frame.tcl
@@ -2189,7 +2189,7 @@ proc ProcessSingleCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     global current
     set current(display) single
@@ -2360,7 +2360,7 @@ proc ProcessLockCmd {varname iname} {
     global colorbar
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     switch -- [string tolower [lindex $var $i]] {
 	frame -
@@ -2461,7 +2461,7 @@ proc ProcessMatchCmd {varname iname} {
     global current
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     switch -- [string tolower [lindex $var $i]] {
 	frame -
diff --git a/src/hvsup.tcl b/src/hvsup.tcl
index 13f1b3c..02b4381 100644
--- a/src/hvsup.tcl
+++ b/src/hvsup.tcl
@@ -1260,21 +1260,11 @@ proc HVParseImg {varname} {
 	puts stderr "HVParseImg $var(url)"
     }
 
-    # fake html 
-    set html \
-	"<html>\n<body>\n<img src=\"$var(fn)\" border=0>\n</body>\n</html>"
+    ImportPhoto $var(fn)
 
-    HVSetURL $varname "$var(url)" {} {}
-    HVSetResult $varname 200 "text/html"
-    HVSetData $varname $html "$var(fn)"
-
-    set var(cache,images) 0
-
-    $var(widget) clear
-    $var(widget) config -base {}
-    $var(widget) parse $var(data)
-
-    HVGotoHTML $varname
+    HVClearTmpFile $varname
+    HVClearAll $varname
+    HVUpdateDialog $varname
 }
 
 proc HVParseFITS {varname} {
@@ -1303,7 +1293,7 @@ proc HVParseFITS {varname} {
     }
 
     switch -- $var(frame) {
-	new {MultiLoadBasic}
+	new {MultiLoadBase}
 	current {}
     }
 
diff --git a/src/imgsvr.tcl b/src/imgsvr.tcl
index 9f6edba..3cadaf5 100644
--- a/src/imgsvr.tcl
+++ b/src/imgsvr.tcl
@@ -193,12 +193,12 @@ proc IMGSVRUpdate {varname force} {
 		    return
 		}
 	    }
+	} else {
+	    set var(x) {}
+	    set var(y) {}
+	    set var(width) {}
+	    set var(height) {}
 	}
-
-	set var(x) {}
-	set var(y) {}
-	set var(width) {}
-	set var(height) {}
     }
 }
 
@@ -243,7 +243,7 @@ proc IMGSVRServer {varname} {
 
     if {($var(x) != {}) && ($var(y) != {})} {
 	switch -- $var(mode) {
-	    new {MultiLoadBasic}
+	    new {MultiLoadBase}
 	    current {}
 	}
 
diff --git a/src/import.tcl b/src/import.tcl
new file mode 100644
index 0000000..6b09253
--- /dev/null
+++ b/src/import.tcl
@@ -0,0 +1,56 @@
+#  Copyright (C) 1999-2012
+#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+#  For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc ImportDialog {} {
+    global importfbox
+
+    set fn [OpenFileDialog importfbox]
+    Import $fn
+}
+
+proc Import {fn} {
+    global current
+
+    if {$fn != {} && $current(frame) != {}} {
+	ImportPhoto $fn
+    }
+}
+
+# Support
+
+proc ImportPhoto {fn} {
+    global current
+    global loadParam
+
+    if {[catch {image create photo -file $fn} ph]} {
+	Error [msgcat::mc {An error has occurred while reading image.}]
+	return
+    }
+
+    StartLoad
+    set loadParam(load,type) photo
+    set loadParam(load,layer) {}
+    set loadParam(file,type) photo
+    set loadParam(file,mode) {}
+    set loadParam(file,name) $fn
+    set loadParam(var,name) $ph
+    ProcessLoad
+    FinishLoad
+
+    image delete $ph
+}
+
+proc ProcessImportCmd {varname iname} {
+    upvar $varname var
+    upvar $iname i
+
+    # we need to be realized
+    ProcessRealizeDS9
+
+    set fn [lindex $var $i]
+    Import $fn
+    FileLast importfbox $fn
+}
diff --git a/src/info.tcl b/src/info.tcl
index 1f28163..31f2cfb 100644
--- a/src/info.tcl
+++ b/src/info.tcl
@@ -646,6 +646,7 @@ proc LayoutInfoPanelHorz {} {
 
     # wcs
     foreach ll {{} a b c d e f g h i j k l m n o p q r s t u v w x y z} {
+	$ds9(info).wcsLabel$ll  configure -width $ww
 	$ds9(info).wcsXValue$ll configure -width $ww
 	$ds9(info).wcsYValue$ll configure -width $ww
 	$ds9(info).wcsZValue$ll configure -width $ww
@@ -860,6 +861,7 @@ proc LayoutInfoPanelVert {} {
 
     # wcs
     foreach ll {{} a b c d e f g h i j k l m n o p q r s t u v w x y z} {
+	$ds9(info).wcsLabel$ll  configure -width $ww
 	$ds9(info).wcsXValue$ll configure -width $ww
 	$ds9(info).wcsYValue$ll configure -width $ww
 	$ds9(info).wcsZValue$ll configure -width $ww
diff --git a/src/layout.tcl b/src/layout.tcl
index a86d7eb..5d9e3a3 100644
--- a/src/layout.tcl
+++ b/src/layout.tcl
@@ -793,7 +793,7 @@ proc ProcessHeightCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     global canvas
     set canvas(height) [lindex $var $i]
@@ -810,7 +810,7 @@ proc ProcessWidthCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     global canvas
     set canvas(width) [lindex $var $i]
diff --git a/src/line.tcl b/src/line.tcl
index 7029cbe..73fd6b2 100644
--- a/src/line.tcl
+++ b/src/line.tcl
@@ -22,7 +22,6 @@ proc LineDialog {varname} {
     # procs
     set var(which) line
     set var(proc,apply) LineApply
-    set var(proc,close) LineClose
     set var(proc,coordCB) LineCoordCB
     set var(proc,editCB) LineEditCB
     set var(proc,distCB) LineDistCB
@@ -30,6 +29,13 @@ proc LineDialog {varname} {
     # base
     MarkerBaseLineDialog $varname 375 150
 
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
+
+    # plot2d
+    MarkerAnalysisPlot2dDialog $varname
+
     set f $var(top).param
 
     # Arrows
@@ -44,13 +50,6 @@ proc LineDialog {varname} {
 
 # actions
 
-proc LineClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseLineClose $varname
-}
-
 proc LineApply {varname} {
     upvar #0 $varname var
     global $varname
@@ -61,6 +60,8 @@ proc LineApply {varname} {
     MarkerBaseLineApply $varname
 }
 
+# support
+
 proc LineArrow {varname} {
     upvar #0 $varname var
     global $varname
@@ -109,8 +110,6 @@ proc LineDistCB {varname {dummy {}}} {
 	puts stderr "LineDistCB"
     }
 
-    MarkerBaseDistCB $varname
-
     set var(dist) [$var(frame) get marker $var(id) line length \
 		       $var(dcoord) $var(dformat)]
 }
diff --git a/src/manalysis.tcl b/src/manalysis.tcl
index e63048e..a35d002 100644
--- a/src/manalysis.tcl
+++ b/src/manalysis.tcl
@@ -366,21 +366,6 @@ proc PrefsDialogCatalog {} {
 	-variable pcat(server) -value ukirt
 
     menu $f.shape.menu
-    $f.shape.menu add radiobutton -label [msgcat::mc {Circle Point}] \
-	-variable pcat(sym,shape) -value {circle point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Box Point}] \
-	-variable pcat(sym,shape) -value {box point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Diamond Point}] \
-	-variable pcat(sym,shape) -value {diamond point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Cross Point}] \
-	-variable pcat(sym,shape) -value {cross point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {X Point}] \
-	-variable pcat(sym,shape) -value {x point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {Arrow Point}] \
-	-variable pcat(sym,shape) -value {arrow point}
-    $f.shape.menu add radiobutton -label [msgcat::mc {BoxCircle Point}] \
-	-variable pcat(sym,shape) -value {boxcircle point}
-    $f.shape.menu add separator
     $f.shape.menu add radiobutton -label [msgcat::mc {Circle}] \
 	-variable pcat(sym,shape) -value circle
     $f.shape.menu add radiobutton -label [msgcat::mc {Ellipse}] \
@@ -389,6 +374,25 @@ proc PrefsDialogCatalog {} {
 	-variable pcat(sym,shape) -value box
     $f.shape.menu add radiobutton -label [msgcat::mc {Text}] \
 	-variable pcat(sym,shape) -value text
+    $f.shape.menu add cascade -label [msgcat::mc {Point}] \
+	-menu $f.shape.menu.point
+
+    menu $f.shape.menu.point
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Circle}] \
+	-variable pcat(sym,shape) -value {circle point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Box}] \
+	-variable pcat(sym,shape) -value {box point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Diamond}] \
+	-variable pcat(sym,shape) -value {diamond point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Cross}] \
+	-variable pcat(sym,shape) -value {cross point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {X}] \
+	-variable pcat(sym,shape) -value {x point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {Arrow}] \
+	-variable pcat(sym,shape) -value {arrow point}
+    $f.shape.menu.point add radiobutton -label [msgcat::mc {BoxCircle}] \
+	-variable pcat(sym,shape) -value {boxcircle point}
+    $f.shape.menu.point add separator
 
     grid $f.stitle $f.svr -padx 2 -pady 2 -sticky w
     grid $f.shtitle $f.shape -padx 2 -pady 2 -sticky w
diff --git a/src/marker.tcl b/src/marker.tcl
index ca1508b..b3404f0 100644
--- a/src/marker.tcl
+++ b/src/marker.tcl
@@ -38,6 +38,8 @@ proc MarkerDef {} {
     set marker(font,slant) roman
     set marker(preserve) 0
 
+    set marker(analysis,3d) 0
+
     set marker(copy) {}
     set marker(copy,system) {}
     set marker(maxdialog) 48
@@ -97,11 +99,8 @@ proc MarkerDef {} {
     set pmarker(polygon,width) 20
     set pmarker(polygon,height) 20
     set pmarker(projection,thick) 0
-    set pmarker(projection,method) 1
     set pmarker(compass,radius) 40
     set pmarker(point,size) 11
-    set pmarker(circle3d,radius) 20
-    set pmarker(circle3d,method) 1
 }
 
 # procs shared between pointer and catalog mode
@@ -340,14 +339,13 @@ proc MarkerButton {which x y} {
 	ruler -
 	compass -
 	projection -
-	"circle point" -
-	"box point" -
-	"diamond point" -
-	"cross point" -
-	"x point" -
-	"arrow point" -
-	"boxcircle point" -
-	circle3d {MarkerCreateShape $which $x $y}
+	{circle point} -
+	{box point} -
+	{diamond point} -
+	{cross point} -
+	{x point} -
+	{arrow point} -
+	{boxcircle point} {MarkerCreateShape $which $x $y}
 	default {
 	    set fn "$ds9(root)/template/$itemplate($marker(shape))"
 	    set ch [open $fn r]
@@ -450,9 +448,17 @@ proc MarkerRelease {which x y} {
 	    $which marker edit end
 	    MarkerDefault $which
 
-	    if {$marker(centroid,auto)} {
-		$which marker centroid $imarker(id) 
+	    if {$imarker(id)>=0} {
+		if {$marker(centroid,auto)} {
+		    $which marker centroid $imarker(id) 
+		}
+
+		# special callbacks
+		switch [$which get marker $imarker(id) type] {
+		    projection {MarkerAnalysisPlot2dCB $which $imarker(id)}
+		}
 	    }
+
 	    set imarker(id) -1
 	    set imarker(x) -1
 	    set imarker(y) -1
@@ -467,15 +473,17 @@ proc MarkerRelease {which x y} {
 		MarkerDefault $which
 	    }
 
-	    # special callbacks
-	    switch [$which get marker $imarker(id) type] {
-		projection {ProjectionPlotInit $which $imarker(id)}
-		circle3d {Circle3dPlotInit $which $imarker(id)}
-	    }
+	    if {$imarker(id)>=0} {
+		if {$marker(centroid,auto)} {
+		    $which marker centroid $imarker(id) 
+		}
 
-	    if {$marker(centroid,auto)} {
-		$which marker centroid $imarker(id) 
+		# special callbacks
+		switch [$which get marker $imarker(id) type] {
+		    projection {MarkerAnalysisPlot2dCB $which $imarker(id)}
+		}
 	    }
+
 	    set imarker(id) -1
 	    set imarker(x) -1
 	    set imarker(y) -1
@@ -519,6 +527,21 @@ proc MarkerDouble {which x y} {
     if {$id} {
 	if [$which get marker $id PROPERTY SELECT] {
 	    MarkerDialog $which $id
+
+	    set varname mk${which}-${id}
+	    global $varname
+	    upvar #0 $varname var
+
+	    switch -- [$which get marker $id type] {
+		circle -
+		box -
+		ellipse -
+		point -
+		polygon {MarkerAnalysisPlot3d $varname}
+		line -
+		vector -
+		projection {MarkerAnalysisPlot2d $varname}
+	    }
 	}
     }
 }
@@ -563,14 +586,13 @@ proc MarkerCreateShape {which x y} {
 	ruler {append cmd " $x $y $ed(system) $ed(sky) $ed(system) $ed(format)"}
 	compass {append cmd " 15 $ed(system) $ed(sky) "}
 	projection {append cmd " $x $y $pmarker(projection,thick) "}
-	"circle point" -
-	"box point" -
-	"diamond point" -
-	"cross point" -
-	"x point" -
-	"arrow point" -
-	"boxcircle point" {append cmd " $pmarker(point,size)"}
-	circle3d {append cmd " 0"}
+	{circle point} -
+	{box point} -
+	{diamond point} -
+	{cross point} -
+	{x point} -
+	{arrow point} -
+	{boxcircle point} {append cmd " $pmarker(point,size)"}
     }
     append cmd " color = $marker(color)"
     append cmd " width = $marker(width)"
@@ -602,8 +624,7 @@ proc MarkerCreateShape {which x y} {
 	boxannulus -
 	bpanda -
 	compass -
-	polygon -
-	circle3d {
+	polygon {
 	    set imarker(handle) 1
 	    $which marker $imarker(id) edit begin $imarker(handle)
 	}
@@ -631,7 +652,8 @@ proc MarkerDefault {which} {
 	set zz $z2
     }
 
-    switch -- [$which get marker $imarker(id) type] {
+    set item [$which get marker $imarker(id) type]
+    switch -- $item {
 	circle {
 	    $which marker $imarker(id) circle radius \
 		[expr ($pmarker(circle,radius)/$zz)] \
@@ -696,8 +718,8 @@ proc MarkerDefault {which} {
 		$pmarker(bpanda,annuli) image
 	}
 	compass {
-	    $which marker $imarker(id) compass radius $pmarker(compass,radius) \
-		image degrees
+	    $which marker $imarker(id) compass radius \
+		$pmarker(compass,radius) image degrees
 	}
 	polygon {
 	    $which marker $imarker(id) polygon reset \
@@ -708,12 +730,11 @@ proc MarkerDefault {which} {
 	line -
 	vector -
 	ruler -
-	projection {$which marker $imarker(id) delete}
-	circle3d {
-	    $which marker $imarker(id) circle3d \
-		[expr ($pmarker(circle3d,radius)/$zz)] \
-		image degrees $pmarker(circle3d,method)
-	    Circle3dPlotInit $which $imarker(id)
+	projection {
+	    $which marker $imarker(id) delete
+	    set imarker(id) -1
+	    set imarker(x) -1
+	    set imarker(y) -1
 	}
     }
 }
@@ -1148,14 +1169,7 @@ proc MarkerDialog {frame id} {
 	ruler {RulerDialog $varname}
 	compass {CompassDialog $varname}
 	projection {ProjectionDialog $varname}
-	{circle point} -
-	{box point} -
-	{diamond point} -
-	{cross point} -
-	{x point} -
-	{arrow point} -
-	{boxcircle point} {PointDialog $varname}
-	circle3d {Circle3dDialog $varname}
+	point {PointDialog $varname}
 	composite {CompositeDialog $varname}
     }
 }
@@ -1299,8 +1313,8 @@ proc ProcessRegionsCmd {varname iname sock fn} {
     global current
     global marker
 
-    # don't realize here, too slow
-    # RealizeDS9
+    # we need to be realized
+    ProcessRealizeDS9
 
     switch -- [string tolower [lindex $var $i]] {
 	show {
diff --git a/src/markeranalysisplot2d.tcl b/src/markeranalysisplot2d.tcl
new file mode 100644
index 0000000..808b2cf
--- /dev/null
+++ b/src/markeranalysisplot2d.tcl
@@ -0,0 +1,185 @@
+#  Copyright (C) 1999-2012
+#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+#  For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+# support
+
+proc MarkerAnalysisPlot2dDialog {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    # init
+    set var(plot2d) 0
+    set var(pcoord) $var(system)
+    set var(psky) $var(sky)
+    set var(method) [$var(frame) get marker $var(id) analysis param]
+
+    $var(mb).analysis add checkbutton -label [msgcat::mc {Plot 2D}] \
+	-variable ${varname}(plot2d) \
+	-command "MarkerAnalysisPlot2d $varname"
+    $var(mb).analysis add separator
+    $var(mb).analysis add cascade -label [msgcat::mc {Method}] \
+	-menu $var(mb).analysis.method
+    $var(mb).analysis add cascade -label [msgcat::mc {Coordinate}] \
+	-menu $var(mb).analysis.coord
+
+    menu $var(mb).analysis.method
+    $var(mb).analysis.method add radiobutton -label [msgcat::mc {Average}] \
+	-variable ${varname}(method) -value average \
+	-command "MarkerAnalysisPlot2dMethod $varname"
+    $var(mb).analysis.method add radiobutton -label [msgcat::mc {Sum}] \
+	-variable ${varname}(method) -value sum \
+	-command "MarkerAnalysisPlot2dMethod $varname"
+
+    CoordMenu $var(mb).analysis.coord $varname pcoord 1 psky {} \
+	[list MarkerAnalysisPlot2dSystem $varname]
+    CoordMenuEnable $var(mb).analysis.coord $varname pcoord 1 psky {}
+}
+
+proc MarkerAnalysisPlot2d {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    $var(frame) marker $var(id) analysis plot2d $var(plot2d)
+    if {$var(plot2d)} {
+	MarkerAnalysisPlot2dCB $var(frame) $var(id)
+
+	set id $var(id)
+	set frame $var(frame)
+	set vvarname proj${id}${frame}
+	upvar #0 $vvarname vvar
+	global $vvarname
+
+	APRaise $vvarname
+    } else {
+	MarkerAnalysisPlot2dDeleteCB $var(frame) $var(id)
+    }
+}
+
+proc MarkerAnalysisPlot2dMethod {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    $var(frame) marker $var(id) analysis param $var(method)
+    if {$var(plot2d)} {
+	MarkerAnalysisPlot2dCB $var(frame) $var(id)
+    }
+}
+
+proc MarkerAnalysisPlot2dSystem {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    $var(frame) marker $var(id) analysis system $var(pcoord) $var(psky)
+    if {$var(plot2d)} {
+	MarkerAnalysisPlot2dCB $var(frame) $var(id)
+	MarkerAnalysisPlot2dXAxisTitle $var(frame) $var(id)
+    }
+}
+
+# hardcoded marker.C
+proc MarkerAnalysisPlot2dCB {frame id} {
+    set varname proj${id}${frame}
+    upvar #0 $varname var
+    global $varname
+
+    set xx proj${id}${frame}x
+    set yy proj${id}${frame}y
+    set xe proj${id}${frame}xe
+    set ye proj${id}${frame}ye
+
+    set xc proj${id}${frame}xc
+    set yc proj${id}${frame}yc
+
+    global $xx $yy $xe $ye $xc $yc
+    if {[APPing $varname]} {
+	$frame get marker $id analysis plot2d $xx $yy $xc $yc 
+	APStats $varname
+    } else {
+	global ed
+	set rr [$frame get wcs]
+	set ed(pcoord) [lindex $rr 0]
+	set ed(psky) [lindex $rr 1]
+	AdjustCoordSystem ed pcoord
+
+	set tt [string totitle [$frame get marker $id type]]
+	APDialog $varname $tt $tt $ed(pcoord) Counts
+	$var(graph) xaxis configure -command "MarkerAnalysisPlot2dXAxis $frame $id"
+
+	set var(xdata) $xx
+	set var(ydata) $yy
+	set var(xedata) $xe
+	set var(yedata) $ye
+
+	blt::vector create $xx $yy $xe $ye $xc $yc
+	$frame marker $id analysis system $ed(pcoord) $ed(psky)
+	$frame get marker $id analysis plot2d $xx $yy $xc $yc
+
+	APExternal $varname
+	MarkerAnalysisPlot2dXAxisTitle $frame $id
+    }
+}
+
+proc MarkerAnalysisPlot2dDeleteCB {frame id} {
+    set varname proj${id}${frame}
+    upvar #0 $varname var
+    global $varname
+
+    set xc proj${id}${frame}xc
+    set yc proj${id}${frame}yc
+
+    global $xc $yc
+    catch {blt::vector destroy $xc $yc}
+    # clear any errors
+    global errorInfo
+    set errorInfo {}
+
+    APDestroy $varname
+}
+
+proc MarkerAnalysisPlot2dXAxisTitle {frame id} {
+    set varname proj${id}${frame}
+    upvar #0 $varname var
+    global $varname
+
+    set ss [$frame get marker $id analysis system]
+    set system [lindex $ss 0]
+    set sky  [lindex $ss 1]
+    switch -- $system {
+	image -
+	physical -
+	amplifier -
+	detector {set title "$system coordinates"}
+	default {
+	    if {[$frame has wcs equatorial $system]} {
+		set title "$sky coordinates"
+	    } else {
+		set title "[$frame get wcs name $system] coordinates"
+	    }
+	}
+    }
+    $var(graph) xaxis configure -title $title
+}
+
+proc MarkerAnalysisPlot2dXAxis {frame id w xx} {
+    set varname proj${id}${frame}
+    upvar #0 $varname var
+    global $varname
+
+    set x [expr $xx-1]
+    set xc proj${id}${frame}xc
+    set yc proj${id}${frame}yc
+
+    global $xc $yc
+    # sometimes, $x equals $xc length
+    set ll [$xc length]
+    if {($ll>=1) && ($x>=0) && ($x<$ll)} {
+	set a [format "%6.3f" [expr "$$xc\($x\)"]]
+	set b [format "%6.3f" [expr "$$yc\($x\)"]]
+	return "$a\n$b"
+    } else {
+	return {}
+    }
+}
diff --git a/src/markeranalysisplot3d.tcl b/src/markeranalysisplot3d.tcl
new file mode 100644
index 0000000..45d73c8
--- /dev/null
+++ b/src/markeranalysisplot3d.tcl
@@ -0,0 +1,156 @@
+#  Copyright (C) 1999-2012
+#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+#  For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc MarkerAnalysisPlot3dDialog {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    # init
+    set var(plot3d) 0
+    set var(pcoord) $var(system)
+    set var(method) [$var(frame) get marker $var(id) analysis param]
+
+    $var(mb).analysis add checkbutton -label [msgcat::mc {Plot 3D}] \
+	-variable ${varname}(plot3d) \
+	-command "MarkerAnalysisPlot3d $varname"
+    $var(mb).analysis add separator
+    $var(mb).analysis add cascade -label [msgcat::mc {Method}] \
+	-menu $var(mb).analysis.method
+    $var(mb).analysis add cascade -label [msgcat::mc {Coordinate}] \
+	-menu $var(mb).analysis.coord
+
+    menu $var(mb).analysis.method
+    $var(mb).analysis.method add radiobutton -label [msgcat::mc {Average}] \
+	-variable ${varname}(method) -value average \
+	-command "MarkerAnalysisPlot3dMethod $varname"
+    $var(mb).analysis.method add radiobutton -label [msgcat::mc {Sum}] \
+	-variable ${varname}(method) -value sum \
+	-command "MarkerAnalysisPlot3dMethod $varname"
+
+    CoordMenu $var(mb).analysis.coord $varname pcoord 2 {} {} \
+	[list MarkerAnalysisPlot3dSystem $varname]
+    CoordMenuEnable $var(mb).analysis.coord $varname pcoord 2 {} {}
+}
+
+# support
+
+proc MarkerAnalysisPlot3d {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    $var(frame) marker $var(id) analysis plot3d $var(plot3d)
+    if {$var(plot3d)} {
+	MarkerAnalysisPlot3dCB $var(frame) $var(id)
+
+	set id $var(id)
+	set frame $var(frame)
+	set vvarname proj${id}${frame}
+	upvar #0 $vvarname vvar
+	global $vvarname
+
+	APRaise $vvarname
+    } else {
+	MarkerAnalysisPlot3dDeleteCB $var(frame) $var(id)
+    }
+}
+
+proc MarkerAnalysisPlot3dMethod {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    $var(frame) marker $var(id) analysis param $var(method)
+    if {$var(plot3d)} {
+	MarkerAnalysisPlot3dCB $var(frame) $var(id)
+    }
+}
+
+proc MarkerAnalysisPlot3dSystem {varname} {
+    upvar #0 $varname var
+    global $varname
+
+    $var(frame) marker $var(id) analysis system $var(pcoord)
+    if {$var(plot3d)} {
+	MarkerAnalysisPlot3dCB $var(frame) $var(id)
+	MarkerAnalysisPlot3dXAxisTitle $var(frame) $var(id)
+    }
+}
+
+# hardcoded marker.C
+proc MarkerAnalysisPlot3dCB {frame id} {
+    set varname proj${id}${frame}
+    upvar #0 $varname var
+    global $varname
+
+    set tt proj${id}${frame}
+    set xx proj${id}${frame}x
+    set yy proj${id}${frame}y
+    set xe proj${id}${frame}xe
+    set ye proj${id}${frame}ye
+
+    global $xx $yy $xe $ye
+    if {[APPing $varname]} {
+	$frame get marker $id analysis plot3d $xx $yy
+	APStats $varname
+    } else {
+	global ed
+	set rr [$frame get wcs]
+	set ed(system) [lindex $rr 0]
+	set ed(sky) [lindex $rr 1]
+	AdjustCoordSystem ed system
+
+	set tt [string totitle [$frame get marker $id type]]
+	APDialog $varname $tt $tt $ed(system) Counts
+
+	set var(xdata) $xx
+	set var(ydata) $yy
+	set var(xedata) $xe
+	set var(yedata) $ye
+
+	blt::vector create $xx $yy $xe $ye
+	$frame marker $id analysis system $ed(system)
+	$frame get marker $id analysis plot3d $xx $yy
+
+	APExternal $varname
+	MarkerAnalysisPlot3dXAxisTitle $frame $id
+    }
+}
+
+# hardcoded marker.C
+proc MarkerAnalysisPlot3dDeleteCB {frame id} {
+    set varname proj${id}${frame}
+    upvar #0 $varname var
+    global $varname
+
+    # clear any errors
+    global errorInfo
+    set errorInfo {}
+
+    APDestroy $varname
+}
+
+proc MarkerAnalysisPlot3dXAxisTitle {frame id} {
+    set varname proj${id}${frame}
+    upvar #0 $varname var
+    global $varname
+
+    set sys [lindex [$frame get marker $id analysis system] 0]
+    switch -- $sys {
+	image -
+	physical -
+	amplifier -
+	detector {set title "$sys coordinates"}
+	default {
+	    set w [string range $sys 3 3]
+	    set tt [string trim [$frame get fits header 1 keyword \{CTYPE3$w\}]]
+	    if {$tt != {}} {
+		set title "$tt coordinates"
+	    } else {
+		set title "$sys coordinates"
+	    }
+	}
+    }
+    $var(graph) xaxis configure -title $title
+}
diff --git a/src/markerbase.tcl b/src/markerbase.tcl
index 822bfc9..c802321 100644
--- a/src/markerbase.tcl
+++ b/src/markerbase.tcl
@@ -249,16 +249,6 @@ proc MarkerBaseCoordCB {varname {dummy {}}} {
     AdjustCoordSystem $varname system
 }
 
-proc MarkerBaseDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "MarkerBaseDistCB"
-    }
-}
-
 # menus
 
 proc MarkerBaseMenu {varname} {
diff --git a/src/markerbaseannulusrect.tcl b/src/markerbaseannulusrect.tcl
index b42b0a1..eed01ab 100644
--- a/src/markerbaseannulusrect.tcl
+++ b/src/markerbaseannulusrect.tcl
@@ -31,7 +31,7 @@ proc MarkerBaseAnnulusRectDialog {varname unit major minor} {
     MarkerBaseAnnulusMethodMenu $varname
 
     # callbacks
-    $var(frame) marker $var(id) callback move $var(proc,editCB) $varname
+#    $var(frame) marker $var(id) callback move $var(proc,editCB) $varname
     $var(frame) marker $var(id) callback edit $var(proc,editCB) $varname
     $var(frame) marker $var(id) callback end edit $var(proc,editCB) $varname
     $var(frame) marker $var(id) callback rotate MarkerBaseCenterRotateCB $varname
@@ -100,7 +100,7 @@ proc MarkerBaseAnnulusRectClose {varname} {
     upvar #0 $varname var
     global $varname
 
-    $var(frame) marker $var(id) delete callback move $var(proc,editCB)
+ #   $var(frame) marker $var(id) delete callback move $var(proc,editCB)
     $var(frame) marker $var(id) delete callback edit $var(proc,editCB)
     $var(frame) marker $var(id) delete callback end edit $var(proc,editCB)
     $var(frame) marker $var(id) delete callback rotate MarkerBaseCenterRotateCB
@@ -173,6 +173,5 @@ proc MarkerBaseAnnulusRectDistCB {varname {dummy {}}} {
 	puts stderr "MarkerBaseAnnulusRectDistCB"
     }
 
-    MarkerBaseDistCB $varname
     $var(proc,editCB) $varname
 }
diff --git a/src/markerbaseline.tcl b/src/markerbaseline.tcl
index 65260ff..2106d3a 100644
--- a/src/markerbaseline.tcl
+++ b/src/markerbaseline.tcl
@@ -17,6 +17,9 @@ proc MarkerBaseLineDialog {varname width height} {
     }
     AdjustCoordSystem $varname dcoord
 
+    # procs
+    set var(proc,close) MarkerBaseLineClose
+
     # base
     MarkerBaseDialog $varname
 
diff --git a/src/markerbasepanda.tcl b/src/markerbasepanda.tcl
index 5f408a0..7a32ed5 100644
--- a/src/markerbasepanda.tcl
+++ b/src/markerbasepanda.tcl
@@ -25,7 +25,7 @@ proc MarkerBasePandaDialog {varname} {
     MarkerBaseAnnulusMethodMenu $varname
 
     # callbacks
-    $var(frame) marker $var(id) callback move $var(proc,editCB) $varname
+#    $var(frame) marker $var(id) callback move $var(proc,editCB) $varname
     $var(frame) marker $var(id) callback edit $var(proc,editCB) $varname
     $var(frame) marker $var(id) callback end edit $var(proc,editCB) $varname
 
@@ -99,7 +99,7 @@ proc MarkerBasePandaClose {varname} {
     upvar #0 $varname var
     global $varname
 
-    $var(frame) marker $var(id) delete callback move $var(proc,editCB)
+#    $var(frame) marker $var(id) delete callback move $var(proc,editCB)
     $var(frame) marker $var(id) delete callback edit $var(proc,editCB)
     $var(frame) marker $var(id) delete callback end edit $var(proc,editCB)
 
@@ -201,7 +201,6 @@ proc MarkerBasePandaDistCB {varname {dummy {}}} {
 	puts stderr "MarkerBasePandaDistCB"
     }
 
-    MarkerBaseDistCB $varname
     $var(proc,editCB) $varname
 }
 
diff --git a/src/markerbaserect.tcl b/src/markerbaserect.tcl
deleted file mode 100644
index 8912548..0000000
--- a/src/markerbaserect.tcl
+++ /dev/null
@@ -1,120 +0,0 @@
-#  Copyright (C) 1999-2012
-#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
-#  For conditions of distribution and use, see copyright notice in "copyright"
-
-package provide DS9 1.0
-
-proc MarkerBaseRectDialog {varname unit} {
-    upvar #0 $varname var
-    global $varname
-
-    set unit2 [string totitle $unit]
-
-    # variables
-    set rr [$var(frame) get wcs]
-    set var(dcoord) [lindex $rr 0]
-    set var(dformat) degrees
-    AdjustCoordSystem $varname dcoord
-
-    # base
-    MarkerBaseCenterDialog $varname
-
-    # init
-    $var(proc,distCB) $varname
-    MarkerBaseCenterRotateCB $varname
-
-    # callbacks
-    $var(frame) marker $var(id) callback move $var(proc,editCB) $varname
-    $var(frame) marker $var(id) callback edit $var(proc,editCB) $varname
-    $var(frame) marker $var(id) callback rotate \
-	MarkerBaseCenterRotateCB $varname
-
-    set f $var(top).param
-
-    # Radius
-    ttk::label $f.tradius -text $unit2
-    ttk::entry $f.radius1 -textvariable ${varname}(radius1) -width 13 
-    ttk::entry $f.radius2 -textvariable ${varname}(radius2) -width 13 
-    DistMenuButton $f.uradius $varname dcoord 1 dformat \
-	[list $var(proc,distCB) $varname]
-    DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat
-
-    # Angle
-    ttk::label $f.tangle -text [msgcat::mc {Angle}]
-    ttk::entry $f.angle -textvariable ${varname}(angle) -width 13 
-    ttk::label $f.uangle -text [msgcat::mc {Degrees}]
-
-    grid $f.tradius $f.radius1 $f.radius2 $f.uradius -padx 2 -pady 2 -sticky w
-    grid $f.tangle $f.angle $f.uangle -padx 2 -pady 2 -sticky w
-}
-
-# actions
-
-proc MarkerBaseRectClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    $var(frame) marker $var(id) delete callback move $var(proc,editCB)
-    $var(frame) marker $var(id) delete callback edit $var(proc,editCB)
-    $var(frame) marker $var(id) delete callback rotate MarkerBaseCenterRotateCB
-
-    MarkerBaseCenterClose $varname
-}
-
-proc MarkerBaseRectApply {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    if {$var(radius1) != {} &&
-	$var(radius2) !={}} {
-	$var(frame) marker $var(id) $var(which) radius \
-	    $var(radius1) $var(radius2) $var(dcoord) $var(dformat)
-    }
-
-    MarkerBaseCenterRotate $varname
-    MarkerBaseCenterApply $varname
-}
-
-# callbacks
-
-proc MarkerBaseRectCoordCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "MarkerBaseRectCoordCB"
-    }
-
-    MarkerBaseCoordCB $varname
-    MarkerBaseCenterMoveCB $varname
-    MarkerBaseCenterRotateCB $varname
-}
-
-proc MarkerBaseRectEditCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "MarkerBaseRectEditCB"
-    }
-
-    set r [$var(frame) get marker $var(id) $var(which) radius \
-	       $var(dcoord) $var(dformat)]
-    set var(radius1) [lindex $r 0]
-    set var(radius2) [lindex $r 1]
-}
-
-proc MarkerBaseRectDistCB {varname {dummy {}}} {
-    upvar #0 $varname var
-    global $varname
-
-    global debug
-    if {$debug(tcl,marker)} {
-	puts stderr "MarkerBaseRectDistCB"
-    }
-
-    MarkerBaseDistCB $varname
-    $var(proc,editCB) $varname
-}
diff --git a/src/mcolor.tcl b/src/mcolor.tcl
index 46e065a..d6c5184 100644
--- a/src/mcolor.tcl
+++ b/src/mcolor.tcl
@@ -25,19 +25,27 @@ proc ColorMainMenu {} {
 
     menu $ds9(mb).color
 
-    # we don't have to worry about user added cmaps yet
     set id [colorbar list id]
-    foreach ii $id {
-	set name [colorbar get name $ii]
+    # base
+    foreach jj $id {
+	set name [colorbar get name $jj]
 	$ds9(mb).color add radiobutton \
 	    -label [msgcat::mc $name] \
 	    -variable colorbar(map) -value $name \
-	    -command "ChangeColormapID $ii"
+	    -command "ChangeColormapID $jj"
 	incr icolorbar(count)
-	incr icolorbar(cmaps)
     }
+    # no contrib
+    set icolorbar(contrib) $icolorbar(count)
+    # no user
+    set icolorbar(user) $icolorbar(contrib)
 
     $ds9(mb).color add separator
+    $ds9(mb).color add cascade -label [msgcat::mc {Contributed}] \
+	-menu $ds9(mb).color.contrib
+    $ds9(mb).color add cascade -label [msgcat::mc {User}] \
+	-menu $ds9(mb).color.user
+    $ds9(mb).color add separator
     $ds9(mb).color add checkbutton -label [msgcat::mc {Invert Colormap}] \
 	-variable colorbar(invert) -command InvertColorbar
     $ds9(mb).color add command -label [msgcat::mc {Reset Colormap}] \
@@ -49,6 +57,9 @@ proc ColorMainMenu {} {
     $ds9(mb).color add command -label "[msgcat::mc {Colormap Parameters}]..." \
 	-command ColormapDialog
 
+    menu $ds9(mb).color.contrib
+    menu $ds9(mb).color.user
+
     menu $ds9(mb).color.colorbar
     $ds9(mb).color.colorbar add cascade -label [msgcat::mc {Orientation}] \
 	-menu $ds9(mb).color.colorbar.orient
@@ -86,6 +97,31 @@ proc ColorMainMenu {} {
 
     FontMenu $ds9(mb).color.colorbar.cb colorbar font font,size font,weight \
 	font,slant UpdateView
+
+    CreateContribColorMenu
+}
+
+proc CreateContribColorMenu {} {
+    global ds9
+    global icolorbar
+
+    foreach fn $icolorbar(contrib,fn) {
+	set ch [open "$ds9(root)/cmaps/$fn" r]
+	global vardata 
+	set vardata [read $ch]
+	close $ch
+
+	colorbar load var "\{$fn\}" vardata
+	set id [colorbar get id]
+	set map [colorbar get name]
+	incr icolorbar(user)
+	incr icolorbar(count)
+
+	$ds9(mb).color.contrib add radiobutton \
+	    -label "$map" \
+	    -variable map \
+	    -command [list ChangeColormapID $id]
+    }
 }
 
 proc PrefsDialogColorMenu {w} {
@@ -103,14 +139,17 @@ proc PrefsDialogColorMenu {w} {
     set m $f.menu.menu
     menu $m
 
-    # we don't wany any user added cmaps
     set id [colorbar list id]
-    for {set ii 0} {$ii<$icolorbar(cmaps)} {incr ii} {
+    # base
+    for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
 	set jj [lindex $id $ii]
 	set name [colorbar get name $jj]
 	$m add radiobutton -label [msgcat::mc $name] \
 	    -variable pcolorbar(map) -value $name
     }
+    # no contrib
+    # no user
+
     $m add separator
     $m add checkbutton -label [msgcat::mc {Invert Colormap}] \
 	-variable pcolorbar(invert)
@@ -215,16 +254,20 @@ proc CreateButtonsColor {} {
     global buttons
     global ds9
     global colorbar
+    global icolorbar
 
     ttk::frame $ds9(buttons).color
 
-    # don't worry about user created cmaps yet
     set id [colorbar list id]
-    foreach ii $id {
-	set name [colorbar get name $ii]
+    # base
+    for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
+	set jj [lindex $id $ii]
+	set name [colorbar get name $jj]
 	RadioButton $ds9(buttons).color.$name [msgcat::mc $name] \
-	    colorbar(map) $name "ChangeColormapID $ii"
+	    colorbar(map) $name "ChangeColormapID $jj"
     }
+    # no contrib
+    # no user
 
     CheckButton $ds9(buttons).color.invert \
 	[string tolower [msgcat::mc {Invert}]] colorbar(invert) InvertColorbar
@@ -250,12 +293,15 @@ proc CreateButtonsColor {} {
 	[string tolower [msgcat::mc {Parameters}]] ColormapDialog
 
     set buttons(color) {}
-    # don't worry about user created cmaps yet
     set id [colorbar list id]
-    foreach ii $id {
-	set name [colorbar get name $ii]
+    # base
+    for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
+	set jj [lindex $id $ii]
+	set name [colorbar get name $jj]
 	append buttons(color) "$ds9(buttons).color.$name pbuttons(color,$name) "
     }
+    # no contrib
+    # no user
     append buttons(color) "$ds9(buttons).color.invert pbuttons(color,invert) "
     append buttons(color) "$ds9(buttons).color.reset pbuttons(color,reset) "
     append buttons(color) "$ds9(buttons).color.horz pbuttons(color,horz) "
@@ -276,15 +322,18 @@ proc PrefsDialogButtonbarColor {f} {
     set m $f.menu
     menu $m
 
-    # we don't wany any user added cmaps
     set id [colorbar list id]
-    for {set ii 0} {$ii<$icolorbar(cmaps)} {incr ii} {
+    # base
+    for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
 	set jj [lindex $id $ii]
 	set name [colorbar get name $jj]
 	$m add checkbutton -label [msgcat::mc $name] \
 	    -variable pbuttons(color,$name) \
 	    -command {UpdateButtons buttons(color)}
     }
+    # no contrib
+    # no user
+
     $m add separator
     $m add checkbutton -label [msgcat::mc {Invert Colormap}] \
 	-variable pbuttons(color,invert) \
@@ -344,14 +393,19 @@ proc UpdateColorMenu {} {
 	    base -
 	    3d {
 		# menus
-		for {set ii $icolorbar(start)} {$ii<$icolorbar(count)} {incr ii} {
+		# base
+		for {set ii $icolorbar(start)} {$ii<=$icolorbar(contrib)} {incr ii} {
 		    $ds9(mb).color entryconfig $ii -state normal
 		}
+		$ds9(mb).color entryconfig [msgcat::mc {Contributed}] \
+		    -state normal
+		$ds9(mb).color entryconfig [msgcat::mc {User}] \
+		    -state normal
 
 		# buttons
-		# we don't wany any user added cmaps
 		set id [colorbar list id]
-		for {set ii 0} {$ii<$icolorbar(cmaps)} {incr ii} {
+		# base
+		for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
 		    set jj [lindex $id $ii]
 		    set name [colorbar get name $jj]
 		    $ds9(buttons).color.$name configure -state normal
@@ -359,14 +413,19 @@ proc UpdateColorMenu {} {
 	    }
 	    rgb {
 		# menus
-		for {set ii $icolorbar(start)} {$ii<$icolorbar(count)} {incr ii} {
+		# base
+		for {set ii $icolorbar(start)} {$ii<=$icolorbar(contrib)} {incr ii} {
 		    $ds9(mb).color entryconfig $ii -state disabled
 		}
+		$ds9(mb).color entryconfig [msgcat::mc {Contributed}] \
+		    -state disabled
+		$ds9(mb).color entryconfig [msgcat::mc {User}] \
+		    -state disable
 
 		# buttons
-		# we don't wany any user added cmaps
 		set id [colorbar list id]
-		for {set ii 0} {$ii<$icolorbar(cmaps)} {incr ii} {
+		# base
+		for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
 		    set jj [lindex $id $ii]
 		    set name [colorbar get name $jj]
 		    $ds9(buttons).color.$name configure -state disabled
@@ -375,14 +434,17 @@ proc UpdateColorMenu {} {
 	}
     } else {
 	# menus
-	for {set ii $icolorbar(start)} {$ii<$icolorbar(count)} {incr ii} {
+	# base
+	for {set ii $icolorbar(start)} {$ii<=$icolorbar(contrib)} {incr ii} {
 	    $ds9(mb).color entryconfig $ii -state normal
 	}
+	$ds9(mb).color entryconfig [msgcat::mc {Contributed}] -state normal
+	$ds9(mb).color entryconfig [msgcat::mc {User}] -state normal
 
 	# buttons
-	# we don't wany any user added cmaps
 	set id [colorbar list id]
-	for {set ii 0} {$ii<$icolorbar(cmaps)} {incr ii} {
+	# base
+	for {set ii 0} {$ii<$icolorbar(contrib)} {incr ii} {
 	    set jj [lindex $id $ii]
 	    set name [colorbar get name $jj]
 	    $ds9(buttons).color.$name configure -state normal
diff --git a/src/mfile.tcl b/src/mfile.tcl
index 8659560..4d6738c 100644
--- a/src/mfile.tcl
+++ b/src/mfile.tcl
@@ -25,16 +25,19 @@ proc FileMainMenu {} {
     $ds9(mb).file add cascade -label [msgcat::mc {Open Other}] \
 	-menu $ds9(mb).file.open
     $ds9(mb).file add separator
-    $ds9(mb).file add cascade -label [msgcat::mc {Preserve During Load}] \
-	-menu $ds9(mb).file.preserve
+    $ds9(mb).file add command -label "[msgcat::mc {Import}]..." \
+	-command ImportDialog
+    $ds9(mb).file add command -label "[msgcat::mc {Export}]..." \
+	-command ExportDialog
     $ds9(mb).file add separator
     $ds9(mb).file add command -label "[msgcat::mc {Save Image}]..." \
 	-command SaveImageDialog
-    $ds9(mb).file add command -label "[msgcat::mc {Save Frame as Fits}]..." \
-	-command SaveFitsDialog
-    $ds9(mb).file add command -label "[msgcat::mc {Save Frames as MPEG}]..." \
+    $ds9(mb).file add command -label "[msgcat::mc {Save Movie}]..." \
 	-command SaveMPEGDialog
     $ds9(mb).file add separator
+    $ds9(mb).file add cascade -label [msgcat::mc {Preserve During Load}] \
+	-menu $ds9(mb).file.preserve
+    $ds9(mb).file add separator
     $ds9(mb).file add command -label "[msgcat::mc {Display Fits Header}]..." \
 	-command DisplayHeaderMenu 
     $ds9(mb).file add separator
@@ -235,8 +238,9 @@ proc ButtonsFileDef {} {
     array set pbuttons {
 	file,about 1
 	file,open 1
+	file,import 0
+	file,export 0
 	file,saveimage 1
-	file,savefits 0
 	file,savempeg 0
 	file,header 1
 	file,samp,image 0
@@ -263,12 +267,15 @@ proc CreateButtonsFile {} {
     ButtonButton $ds9(buttons).file.open \
 	[string tolower [msgcat::mc {Open}]] OpenFits
 
+    ButtonButton $ds9(buttons).file.export \
+	[string tolower [msgcat::mc {Import}]] ImportDialog
+    ButtonButton $ds9(buttons).file.import \
+	[string tolower [msgcat::mc {Export}]] ExportDialog
+
     ButtonButton $ds9(buttons).file.saveimage \
 	[string tolower [msgcat::mc {Save Image}]] SaveImageDialog
-    ButtonButton $ds9(buttons).file.savefits \
-	[string tolower [msgcat::mc {Save FITS}]] SaveFitsDialog
     ButtonButton $ds9(buttons).file.savempeg \
-	[string tolower [msgcat::mc {Save MPEG}]] SaveMPEGDialog
+	[string tolower [msgcat::mc {Save Movie}]] SaveMPEGDialog
 
     ButtonButton $ds9(buttons).file.header \
 	[string tolower [msgcat::mc {Header}]] DisplayHeaderMenu
@@ -317,12 +324,13 @@ proc CreateButtonsFile {} {
     set buttons(file) "
         $ds9(buttons).file.about pbuttons(file,about)
         $ds9(buttons).file.open pbuttons(file,open)
+        $ds9(buttons).file.import pbuttons(file,import)
+        $ds9(buttons).file.export pbuttons(file,export)
         $ds9(buttons).file.saveimage pbuttons(file,saveimage)
-        $ds9(buttons).file.savefits pbuttons(file,savefits)
         $ds9(buttons).file.savempeg pbuttons(file,savempeg)
+        $ds9(buttons).file.header pbuttons(file,header)
         $ds9(buttons).file.sampimage pbuttons(file,samp,image)
         $ds9(buttons).file.samptable pbuttons(file,samp,table)
-        $ds9(buttons).file.header pbuttons(file,header)
         $ds9(buttons).file.xpa pbuttons(file,xpa)
         $ds9(buttons).file.console pbuttons(file,console)
         $ds9(buttons).file.tcl pbuttons(file,tcl)
@@ -348,11 +356,14 @@ proc PrefsDialogButtonbarFile {f} {
     $m add checkbutton -label "[msgcat::mc {Open}]..." \
 	-variable pbuttons(file,open) -command {UpdateButtons buttons(file)}
     $m add separator
+    $m add checkbutton -label "[msgcat::mc {Import}]..." \
+	-variable pbuttons(file,import) -command {UpdateButtons buttons(file)}
+    $m add checkbutton -label "[msgcat::mc {Export}]..." \
+	-variable pbuttons(file,export) -command {UpdateButtons buttons(file)}
+    $m add separator
     $m add checkbutton -label "[msgcat::mc {Save Image}]..." \
 	-variable pbuttons(file,saveimage) -command {UpdateButtons buttons(file)}
-    $m add checkbutton -label "[msgcat::mc {Save Frame as Fits}]..." \
-	-variable pbuttons(file,savefits) -command {UpdateButtons buttons(file)}
-    $m add checkbutton -label "[msgcat::mc {Save Frames as MPEG}]..." \
+    $m add checkbutton -label "[msgcat::mc {Save Movie}]..." \
 	-variable pbuttons(file,savempeg) -command {UpdateButtons buttons(file)}
     $m add separator
     $m add checkbutton -label "[msgcat::mc {Display Fits Header}]..." \
@@ -404,32 +415,34 @@ proc UpdateFileMenuStatic {} {
 	    -state normal
 	$ds9(mb).file entryconfig [msgcat::mc {Open Other}] \
 	    -state normal
-	$ds9(mb).file entryconfig "[msgcat::mc {Save Image}]..." \
+	$ds9(mb).file entryconfig "[msgcat::mc {Import}]..." \
 	    -state normal
-	$ds9(mb).file entryconfig "[msgcat::mc {Save Frame as Fits}]..." \
+	$ds9(mb).file entryconfig "[msgcat::mc {Save Image}]..." \
 	    -state normal
-	$ds9(mb).file entryconfig "[msgcat::mc {Save Frames as MPEG}]..." \
+	$ds9(mb).file entryconfig "[msgcat::mc {Save Movie}]..." \
 	    -state normal
 
 	$ds9(buttons).file.open configure -state normal
+	$ds9(buttons).file.import configure -state normal
+	$ds9(buttons).file.export configure -state normal
 	$ds9(buttons).file.saveimage configure -state normal
-	$ds9(buttons).file.savefits configure -state normal
 	$ds9(buttons).file.savempeg configure -state normal
     } else {
 	$ds9(mb).file entryconfig "[msgcat::mc {Open}]..." \
 	    -state disabled
 	$ds9(mb).file entryconfig [msgcat::mc {Open Other}] \
 	    -state disabled
-	$ds9(mb).file entryconfig "[msgcat::mc {Save Image}]..." \
+	$ds9(mb).file entryconfig "[msgcat::mc {Import}]..." \
 	    -state disabled
-	$ds9(mb).file entryconfig "[msgcat::mc {Save Frame as Fits}]..." \
+	$ds9(mb).file entryconfig "[msgcat::mc {Save Image}]..." \
 	    -state disabled
-	$ds9(mb).file entryconfig "[msgcat::mc {Save Frames as MPEG}]..." \
+	$ds9(mb).file entryconfig "[msgcat::mc {Save Movie}]..." \
 	    -state disabled
 
 	$ds9(buttons).file.open configure -state disabled
+	$ds9(buttons).file.import configure -state disabled
+	$ds9(buttons).file.export configure -state disabled
 	$ds9(buttons).file.saveimage configure -state disabled
-	$ds9(buttons).file.savefits configure -state disabled
 	$ds9(buttons).file.savempeg configure -state disabled
     }
 }
@@ -458,8 +471,8 @@ proc UpdateFileMenu {} {
 	}
 
 	switch -- [$current(frame) get type] {
-	    base -
-	    3d {
+	    base {
+		$mm entryconfig "[msgcat::mc {Export}]..." -state normal
 		$mm.open entryconfig \
 		    "[msgcat::mc {Open RGB Fits Image}]..." -state disabled
 		$mm.open entryconfig \
@@ -468,6 +481,7 @@ proc UpdateFileMenu {} {
 		    "[msgcat::mc {Open RGB Array}]..." -state disabled
 	    }
 	    rgb {
+		$mm entryconfig "[msgcat::mc {Export}]..." -state disabled
 		$mm.open entryconfig \
 		    "[msgcat::mc {Open RGB Fits Image}]..." -state normal
 		$mm.open entryconfig \
@@ -475,6 +489,15 @@ proc UpdateFileMenu {} {
 		$mm.open entryconfig \
 		    "[msgcat::mc {Open RGB Array}]..." -state normal
 	    }
+	    3d {
+		$mm entryconfig "[msgcat::mc {Export}]..." -state disabled
+		$mm.open entryconfig \
+		    "[msgcat::mc {Open RGB Fits Image}]..." -state disabled
+		$mm.open entryconfig \
+		    "[msgcat::mc {Open RGB Fits Cube}]..." -state disabled
+		$mm.open entryconfig \
+		    "[msgcat::mc {Open RGB Array}]..." -state disabled
+	    }
 	}
 
 	if {[$current(frame) has fits]} {
diff --git a/src/mframe.tcl b/src/mframe.tcl
index af0ddfe..c35ac44 100644
--- a/src/mframe.tcl
+++ b/src/mframe.tcl
@@ -15,10 +15,8 @@ proc FrameMainMenu {} {
 	-command CreateFrame
     $ds9(mb).frame add command -label [msgcat::mc {New Frame RGB}] \
 	-command CreateRGBFrame
-    if {$ds9(3D)} {
-	$ds9(mb).frame add command -label [msgcat::mc {New Frame 3D}] \
-	    -command Create3DFrame
-    }
+    $ds9(mb).frame add command -label [msgcat::mc {New Frame 3D}] \
+	-command Create3DFrame
     $ds9(mb).frame add separator
     $ds9(mb).frame add command -label [msgcat::mc {Delete Frame}] \
 	-command DeleteCurrentFrame
@@ -64,10 +62,8 @@ proc FrameMainMenu {} {
 	-command CubeDialog
     $ds9(mb).frame add command -label "[msgcat::mc {RGB}]..." \
 	-command RGBDialog
-    if {$ds9(3D)} {
-	$ds9(mb).frame add command -label "[msgcat::mc {3D}]..." \
-	    -command 3DDialog
-    }
+    $ds9(mb).frame add command -label "[msgcat::mc {3D}]..." \
+	-command 3DDialog
     $ds9(mb).frame add separator
     $ds9(mb).frame add cascade -label [msgcat::mc {Frame Parameters}] \
 	-menu $ds9(mb).frame.params
@@ -325,7 +321,7 @@ proc ButtonsFrameDef {} {
     array set pbuttons {
 	frame,new 1
 	frame,newrgb 1
-	frame,new3d 0
+	frame,new3d 1
 	frame,delete 1
 	frame,deleteall 0
 	frame,clear 1
@@ -410,10 +406,8 @@ proc CreateButtonsFrame {} {
 	[string tolower [msgcat::mc {New}]] CreateFrame
     ButtonButton $ds9(buttons).frame.newrgb \
 	[string tolower [msgcat::mc {New RGB}]] CreateRGBFrame
-    if {$ds9(3D)} {
-	ButtonButton $ds9(buttons).frame.new3d \
-	    [string tolower [msgcat::mc {New 3D}]] Create3DFrame
-    }
+    ButtonButton $ds9(buttons).frame.new3d \
+	[string tolower [msgcat::mc {New 3D}]] Create3DFrame
 
     ButtonButton $ds9(buttons).frame.delete \
 	[string tolower [msgcat::mc {Delete}]] DeleteCurrentFrame
@@ -582,10 +576,8 @@ proc CreateButtonsFrame {} {
 	[string tolower [msgcat::mc {Cube}]] CubeDialog
     ButtonButton $ds9(buttons).frame.rgb \
 	[string tolower [msgcat::mc {RGB}]] RGBDialog
-    if {$ds9(3D)} {
-	ButtonButton $ds9(buttons).frame.3d \
+    ButtonButton $ds9(buttons).frame.3d \
 	[string tolower [msgcat::mc {3D}]] 3DDialog
-    }
 
     ButtonButton $ds9(buttons).frame.size \
 	[string tolower [msgcat::mc {Size}]] DisplayDefaultDialog
@@ -680,10 +672,8 @@ proc PrefsDialogButtonbarFrame {f} {
 	-variable pbuttons(frame,new) -command {UpdateButtons buttons(frame)}
     $m add checkbutton -label [msgcat::mc {New Frame RGB}] \
 	-variable pbuttons(frame,newrgb) -command {UpdateButtons buttons(frame)}
-    if {$ds9(3D)} {
-	$m add checkbutton -label [msgcat::mc {New Frame 3D}] \
-	    -variable pbuttons(frame,new3d) -command {UpdateButtons buttons(frame)}
-    }
+    $m add checkbutton -label [msgcat::mc {New Frame 3D}] \
+	-variable pbuttons(frame,new3d) -command {UpdateButtons buttons(frame)}
     $m add separator
     $m add checkbutton -label [msgcat::mc {Delete Frame}] \
 	-variable pbuttons(frame,delete) -command {UpdateButtons buttons(frame)}
@@ -722,10 +712,8 @@ proc PrefsDialogButtonbarFrame {f} {
 	-variable pbuttons(frame,cube) -command {UpdateButtons buttons(frame)}
     $m add checkbutton -label "[msgcat::mc {RGB}]..." \
 	-variable pbuttons(frame,rgb) -command {UpdateButtons buttons(frame)}
-    if {$ds9(3D)} {
-	$m add checkbutton -label "[msgcat::mc {3D}]..." \
-	    -variable pbuttons(frame,3d) -command {UpdateButtons buttons(frame)}
-    }
+    $m add checkbutton -label "[msgcat::mc {3D}]..." \
+	-variable pbuttons(frame,3d) -command {UpdateButtons buttons(frame)}
     $m add separator
     $m add cascade -label [msgcat::mc {Frame Parameters}] -menu $m.params
 
@@ -1040,38 +1028,26 @@ proc UpdateFrameMenu {} {
 	    base {
 		$ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
 		    -state disabled
-		if {$ds9(3D)} {
 		$ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
 		    -state normal
-		}
 		$ds9(buttons).frame.rgb configure -state disabled
-		if {$ds9(3D)} {
-		    $ds9(buttons).frame.3d configure -state normal
-		}
+		$ds9(buttons).frame.3d configure -state normal
 	    }
 	    rgb {
 		$ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
 		    -state normal
-		if {$ds9(3D)} {
 		$ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
 		    -state disabled
-		}
 		$ds9(buttons).frame.rgb configure -state normal
-		if {$ds9(3D)} {
-		    $ds9(buttons).frame.3d configure -state disabled
-		}
+		$ds9(buttons).frame.3d configure -state disabled
 	    }
 	    3d {
 		$ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
 		    -state disabled
-		if {$ds9(3D)} {
-		    $ds9(mb).frame entryconfig "[msgcat::mc {3D}]..."  \
-			-state normal
-		}
+		$ds9(mb).frame entryconfig "[msgcat::mc {3D}]..."  \
+		    -state normal
 		$ds9(buttons).frame.rgb configure -state disabled
-		if {$ds9(3D)} {
-		    $ds9(buttons).frame.3d configure -state normal
-		}
+		$ds9(buttons).frame.3d configure -state normal
 	    }
 	}
     } else {
@@ -1079,15 +1055,11 @@ proc UpdateFrameMenu {} {
 	    -state disabled
 	$ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
 	    -state disabled
-	if {$ds9(3D)} {
-	    $ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
-		-state disabled
-	}
+	$ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
+	    -state disabled
 	$ds9(buttons).frame.cube configure -state disabled
 	$ds9(buttons).frame.rgb configure -state disabled
-	if {$ds9(3D)} {
-	    $ds9(buttons).frame.3d configure -state disabled
-	}
+	$ds9(buttons).frame.3d configure -state disabled
     }
 }
 
diff --git a/src/mregion.tcl b/src/mregion.tcl
index 7dc4195..95e88a2 100644
--- a/src/mregion.tcl
+++ b/src/mregion.tcl
@@ -75,19 +75,23 @@ proc RegionMainMenu {} {
 	-variable marker(shape) -value box
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Polygon}] \
 	-variable marker(shape) -value polygon
+    $ds9(mb).region.shape add separator
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Line}] \
 	-variable marker(shape) -value line
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Vector}] \
 	-variable marker(shape) -value vector
+    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Projection}] \
+	-variable marker(shape) -value projection
+    $ds9(mb).region.shape add separator
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Text}] \
 	-variable marker(shape) -value text
+    $ds9(mb).region.shape add cascade -label [msgcat::mc {Point}] \
+	-menu $ds9(mb).region.shape.point
     $ds9(mb).region.shape add separator
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Ruler}] \
 	-variable marker(shape) -value ruler
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Compass}] \
 	-variable marker(shape) -value compass
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Projection}] \
-	-variable marker(shape) -value projection
     $ds9(mb).region.shape add separator
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Annulus}] \
 	-variable marker(shape) -value annulus
@@ -96,6 +100,7 @@ proc RegionMainMenu {} {
 	-variable marker(shape) -value ellipseannulus
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Box Annulus}] \
 	-variable marker(shape) -value boxannulus
+    $ds9(mb).region.shape add separator
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Panda}] \
 	-variable marker(shape) -value panda
     $ds9(mb).region.shape add radiobutton \
@@ -103,25 +108,22 @@ proc RegionMainMenu {} {
 	-variable marker(shape) -value epanda
     $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Box Panda}] \
 	-variable marker(shape) -value bpanda
-    $ds9(mb).region.shape add separator
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Circle Point}] \
-	-variable marker(shape) -value {circle point} 
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Box Point}] \
+
+    menu $ds9(mb).region.shape.point
+    $ds9(mb).region.shape.point add radiobutton -label [msgcat::mc {Circle}] \
+	-variable marker(shape) -value {circle point}
+    $ds9(mb).region.shape.point add radiobutton -label [msgcat::mc {Box}] \
 	-variable marker(shape) -value {box point}
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Diamond Point}] \
+    $ds9(mb).region.shape.point add radiobutton -label [msgcat::mc {Diamond}] \
 	-variable marker(shape) -value {diamond point}
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Cross Point}] \
+    $ds9(mb).region.shape.point add radiobutton -label [msgcat::mc {Cross}] \
 	-variable marker(shape) -value {cross point}
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {X Point}] \
+    $ds9(mb).region.shape.point add radiobutton -label [msgcat::mc {X}] \
 	-variable marker(shape) -value {x point}
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Arrow Point}] \
-	-variable marker(shape) -value {arrow point} 
-    $ds9(mb).region.shape add radiobutton \
-	-label [msgcat::mc {BoxCircle Point}] \
+    $ds9(mb).region.shape.point add radiobutton -label [msgcat::mc {Arrow}] \
+	-variable marker(shape) -value {arrow point}
+    $ds9(mb).region.shape.point add radiobutton -label [msgcat::mc {BoxCircle}]\
 	-variable marker(shape) -value {boxcircle point}
-    $ds9(mb).region.shape add separator
-    $ds9(mb).region.shape add radiobutton -label [msgcat::mc {Circle3d}] \
-	-variable marker(shape) -value circle3d
 
     menu $ds9(mb).region.composite
     $ds9(mb).region.composite add command -label [msgcat::mc {Create}] \
@@ -223,19 +225,23 @@ proc PrefsDialogRegionMenu {w} {
 	-variable pmarker(shape) -value box
     $m.shape add radiobutton -label [msgcat::mc {Polygon}] \
 	-variable pmarker(shape) -value polygon
+    $m.shape add separator
     $m.shape add radiobutton -label [msgcat::mc {Line}] \
 	-variable pmarker(shape) -value line
     $m.shape add radiobutton -label [msgcat::mc {Vector}] \
 	-variable pmarker(shape) -value vector
+    $m.shape add radiobutton -label [msgcat::mc {Projection}] \
+	-variable pmarker(shape) -value projection
+    $m.shape add separator
     $m.shape add radiobutton -label [msgcat::mc {Text}] \
 	-variable pmarker(shape) -value text
+    $m.shape add cascade -label [msgcat::mc {Point}] \
+	-menu $m.shape.point
     $m.shape add separator
     $m.shape add radiobutton -label [msgcat::mc {Ruler}] \
 	-variable pmarker(shape) -value ruler
     $m.shape add radiobutton -label [msgcat::mc {Compass}] \
 	-variable pmarker(shape) -value compass
-    $m.shape add radiobutton -label [msgcat::mc {Projection}] \
-	-variable pmarker(shape) -value projection
     $m.shape add separator
     $m.shape add radiobutton -label [msgcat::mc {Annulus}] \
 	-variable pmarker(shape) -value annulus
@@ -243,30 +249,29 @@ proc PrefsDialogRegionMenu {w} {
 	-variable pmarker(shape) -value ellipseannulus
     $m.shape add radiobutton -label [msgcat::mc {Box Annulus}] \
 	-variable pmarker(shape) -value boxannulus
+    $m.shape add separator
     $m.shape add radiobutton -label [msgcat::mc {Panda}] \
 	-variable pmarker(shape) -value panda
     $m.shape add radiobutton -label [msgcat::mc {Elliptical Panda}] \
 	-variable pmarker(shape) -value epanda
     $m.shape add radiobutton -label [msgcat::mc {Box Panda}] \
 	-variable pmarker(shape) -value bpanda
-    $m.shape add separator
-    $m.shape add radiobutton -label [msgcat::mc {Circle Point}] \
+
+    menu $m.shape.point
+    $m.shape.point add radiobutton -label [msgcat::mc {Circle}] \
 	-variable pmarker(shape) -value {circle point}
-    $m.shape add radiobutton -label [msgcat::mc {Box Point}] \
-	-variable pmarker(shape) -value {box point} 
-    $m.shape add radiobutton -label [msgcat::mc {Diamond Point}] \
+    $m.shape.point add radiobutton -label [msgcat::mc {Box}] \
+	-variable pmarker(shape) -value {box point}
+    $m.shape.point add radiobutton -label [msgcat::mc {Diamond}] \
 	-variable pmarker(shape) -value {diamond point}
-    $m.shape add radiobutton -label [msgcat::mc {Cross Point}] \
+    $m.shape.point add radiobutton -label [msgcat::mc {Cross}] \
 	-variable pmarker(shape) -value {cross point}
-    $m.shape add radiobutton -label [msgcat::mc {X Point}] \
+    $m.shape.point add radiobutton -label [msgcat::mc {X}] \
 	-variable pmarker(shape) -value {x point}
-    $m.shape add radiobutton -label [msgcat::mc {Arrow Point}] \
+    $m.shape.point add radiobutton -label [msgcat::mc {Arrow}] \
 	-variable pmarker(shape) -value {arrow point}
-    $m.shape add radiobutton -label [msgcat::mc {BoxCircle Point}] \
+    $m.shape.point add radiobutton -label [msgcat::mc {BoxCircle}]\
 	-variable pmarker(shape) -value {boxcircle point}
-    $m.shape add separator
-    $m.shape add radiobutton -label [msgcat::mc {Circle3d}] \
-	-variable pmarker(shape) -value circle3d
 
     ColorMenu $m.color pmarker color {}
     WidthDashMenu $m.width pmarker width dash {} {}
@@ -387,15 +392,6 @@ proc PrefsDialogRegion {} {
     grid $f.title $f.radius1 $f.unit -padx 2 -pady 2 -sticky w
     grid $f.title2 $f.radius2 $f.unit2 -padx 2 -pady 2 -sticky w
 
-    # Point
-    set f [ttk::labelframe $w.region.point -text [msgcat::mc {Point}]]
-
-    ttk::label $f.title -text [msgcat::mc {Size}]
-    ttk::entry $f.size -textvariable pmarker(point,size) -width 10
-    ttk::label $f.unit -text [msgcat::mc {Pixels}]
-    
-    grid $f.title $f.size $f.unit -padx 2 -pady 2 -sticky w
-
     # Projection
     set f [ttk::labelframe $w.region.projection -text [msgcat::mc {Projection}]]
 
@@ -405,19 +401,18 @@ proc PrefsDialogRegion {} {
     
     grid $f.title $f.thick $f.unit -padx 2 -pady 2 -sticky w
 
-    # Default Circle3d
-    set f [ttk::labelframe $w.region.circle3d -text [msgcat::mc {Circle3d}]]
+    # Point
+    set f [ttk::labelframe $w.region.point -text [msgcat::mc {Point}]]
 
-    ttk::label $f.title -text [msgcat::mc {Radius}]
-    ttk::entry $f.radius -textvariable pmarker(circle3d,radius) -width 10
-    ttk::label $f.unit -text [msgcat::mc {Image}]
+    ttk::label $f.title -text [msgcat::mc {Size}]
+    ttk::entry $f.size -textvariable pmarker(point,size) -width 10
+    ttk::label $f.unit -text [msgcat::mc {Pixels}]
     
-    grid $f.title $f.radius $f.unit -padx 2 -pady 2 -sticky w
+    grid $f.title $f.size $f.unit -padx 2 -pady 2 -sticky w
 
     pack $w.region.format \
 	$w.region.centroid $w.region.circle $w.region.ellipse \
-	$w.region.box $w.region.point $w.region.projection \
-	$w.region.circle3d \
+	$w.region.box $w.region.projection $w.region.point \
 	-side top -fill both -expand true
 }
 
@@ -623,18 +618,17 @@ proc ButtonsRegionDef {} {
 	region,polygon 0
 	region,line 0
 	region,vector 0
+	region,projection 0
 	region,text 0
 	region,point 0
 	region,ruler 0
 	region,compass 0
-	region,projection 0
 	region,annulus 0
 	region,ellipseannulus 0
 	region,boxannulus 0
 	region,panda 0
 	region,epanda 0
 	region,bpanda 0
-	region,circle3d 0
 	region,create 0
 	region,dissolve 0
 	region,loadtemplate 0
@@ -685,6 +679,9 @@ proc CreateButtonsRegion {} {
     RadioButton $ds9(buttons).region.vector \
 	[string tolower [msgcat::mc {Vector}]] \
 	marker(shape) vector {}
+    RadioButton $ds9(buttons).region.projection \
+	[string tolower [msgcat::mc {Projection}]] \
+	marker(shape) projection {}
     RadioButton $ds9(buttons).region.text \
 	[string tolower [msgcat::mc {Text}]] \
 	marker(shape) text {}
@@ -697,9 +694,6 @@ proc CreateButtonsRegion {} {
     RadioButton $ds9(buttons).region.compass \
 	[string tolower [msgcat::mc {Compass}]] \
 	marker(shape) compass {}
-    RadioButton $ds9(buttons).region.projection \
-	[string tolower [msgcat::mc {Projection}]] \
-	marker(shape) projection {}
     RadioButton $ds9(buttons).region.annulus \
 	[string tolower [msgcat::mc {Annulus}]] \
 	marker(shape) annulus {}
@@ -718,9 +712,6 @@ proc CreateButtonsRegion {} {
     RadioButton $ds9(buttons).region.bpanda \
 	[string tolower [msgcat::mc {Box Panda}]] \
 	marker(shape) bpanda {}
-    RadioButton $ds9(buttons).region.circle3d \
-	[string tolower [msgcat::mc {Circle3d}]] \
-	marker(shape) circle3d {}
 
     ButtonButton $ds9(buttons).region.create \
 	[string tolower [msgcat::mc {Composite}]] CompositeCreate
@@ -780,18 +771,17 @@ proc CreateButtonsRegion {} {
         $ds9(buttons).region.polygon pbuttons(region,polygon)
         $ds9(buttons).region.line pbuttons(region,line)
         $ds9(buttons).region.vector pbuttons(region,vector)
+        $ds9(buttons).region.projection pbuttons(region,projection)
         $ds9(buttons).region.text pbuttons(region,text)
         $ds9(buttons).region.point pbuttons(region,point)
         $ds9(buttons).region.ruler pbuttons(region,ruler)
         $ds9(buttons).region.compass pbuttons(region,compass)
-        $ds9(buttons).region.projection pbuttons(region,projection)
         $ds9(buttons).region.annulus pbuttons(region,annulus)
         $ds9(buttons).region.ellipseannulus pbuttons(region,ellipseannulus)
         $ds9(buttons).region.boxannulus pbuttons(region,boxannulus)
         $ds9(buttons).region.panda pbuttons(region,panda)
         $ds9(buttons).region.epanda pbuttons(region,epanda)
         $ds9(buttons).region.bpanda pbuttons(region,bpanda)
-        $ds9(buttons).region.circle3d pbuttons(region,circle3d)
         $ds9(buttons).region.create pbuttons(region,create)
         $ds9(buttons).region.dissolve pbuttons(region,dissolve)
         $ds9(buttons).region.loadtemplate pbuttons(region,loadtemplate)
@@ -890,12 +880,17 @@ proc PrefsDialogButtonbarRegion {f} {
     $m.shape add checkbutton -label [msgcat::mc {Polygon}] \
 	-variable pbuttons(region,polygon) \
 	-command {UpdateButtons buttons(region)}
+    $m.shape add separator
     $m.shape add checkbutton -label [msgcat::mc {Line}] \
 	-variable pbuttons(region,line) \
 	-command {UpdateButtons buttons(region)}
     $m.shape add checkbutton -label [msgcat::mc {Vector}] \
 	-variable pbuttons(region,vector) \
 	-command {UpdateButtons buttons(region)}
+    $m.shape add checkbutton -label [msgcat::mc {Projection}] \
+	-variable pbuttons(region,projection) \
+	-command {UpdateButtons buttons(region)}
+    $m.shape add separator
     $m.shape add checkbutton -label [msgcat::mc {Text}] \
 	-variable pbuttons(region,text) \
 	-command {UpdateButtons buttons(region)}
@@ -909,9 +904,6 @@ proc PrefsDialogButtonbarRegion {f} {
     $m.shape add checkbutton -label [msgcat::mc {Compass}] \
 	-variable pbuttons(region,compass) \
 	-command {UpdateButtons buttons(region)}
-    $m.shape add checkbutton -label [msgcat::mc {Projection}] \
-	-variable pbuttons(region,projection) \
-	-command {UpdateButtons buttons(region)}
     $m.shape add separator
     $m.shape add checkbutton -label [msgcat::mc {Annulus}] \
 	-variable pbuttons(region,annulus) \
@@ -931,10 +923,6 @@ proc PrefsDialogButtonbarRegion {f} {
     $m.shape add checkbutton -label [msgcat::mc {Box Panda}] \
 	-variable pbuttons(region,bpanda) \
 	-command {UpdateButtons buttons(region)}
-    $m.shape add separator
-    $m.shape add checkbutton -label [msgcat::mc {Circle3d}] \
-	-variable pbuttons(region,circle3d) \
-	-command {UpdateButtons buttons(region)}
 
     menu $m.composite
     $m.composite add checkbutton -label [msgcat::mc {Create}] \
diff --git a/src/panner.tcl b/src/panner.tcl
index 5404dc7..5566849 100644
--- a/src/panner.tcl
+++ b/src/panner.tcl
@@ -197,6 +197,7 @@ proc Button1Panner {x y} {
 
 proc Motion1Panner {x y} {
     global ds9
+    global current
 
     global debug
     if {$debug(tcl,events)} {
@@ -204,6 +205,12 @@ proc Motion1Panner {x y} {
     }
 
     panner pan motion $x $y
+    if {$current(frame) != {}} {
+	UpdateColormapLevelMosaic $current(frame) $x $y panner
+	UpdateInfoBox $current(frame) $x $y panner
+	UpdatePixelTableDialog $current(frame) $x $y panner
+	UpdateGraph $current(frame) $x $y panner
+    }
 }
 
 proc Release1Panner {x y} {
@@ -219,6 +226,11 @@ proc Release1Panner {x y} {
 	panner pan end $x $y
 	$current(frame) pan bbox [panner get bbox]
 
+	UpdateColormapLevelMosaic $current(frame) $x $y panner
+	UpdateInfoBox $current(frame) $x $y panner
+	UpdatePixelTableDialog $current(frame) $x $y panner
+	UpdateGraph $current(frame) $x $y panner
+
 	LockFrameCurrent
 	UpdateGraphXAxis $current(frame)
 	UpdatePanZoomDialog
@@ -234,6 +246,11 @@ proc Release2Panner {x y} {
 	panner pan to $x $y
 	$current(frame) pan bbox [panner get bbox]
 
+	UpdateColormapLevelMosaic $current(frame) $x $y panner
+	UpdateInfoBox $current(frame) $x $y panner
+	UpdatePixelTableDialog $current(frame) $x $y panner
+	UpdateGraph $current(frame) $x $y panner
+
 	LockFrameCurrent
 	UpdateGraphXAxis $current(frame)
 	UpdatePanZoomDialog
diff --git a/src/panzoom.tcl b/src/panzoom.tcl
index 89a5877..a1abb88 100644
--- a/src/panzoom.tcl
+++ b/src/panzoom.tcl
@@ -585,8 +585,9 @@ proc MatchFrame {which sys} {
     global wcs
     global current
 
-    # make sure matrices have been updated
-    RealizeDS9
+    # NO-make sure matrices have been updated
+    # really messes up mousewheel events, just assume all is good
+    #   RealizeDS9
 
     switch -- $sys {
 	image -
@@ -677,7 +678,7 @@ proc ProcessPanCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     switch -- [string tolower [lindex $var $i]] {
 	open {PanZoomDialog}
@@ -725,7 +726,7 @@ proc ProcessZoomCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     global current
     switch -- [string tolower [lindex $var $i]] {
@@ -781,7 +782,7 @@ proc ProcessOrientCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     global current
     switch -- [string tolower [lindex $var $i]] {
@@ -804,7 +805,7 @@ proc ProcessRotateCmd {varname iname} {
     upvar $iname i
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     global current
     switch -- [string tolower [lindex $var $i]] {
diff --git a/src/point.tcl b/src/point.tcl
index 6380758..cff0a50 100644
--- a/src/point.tcl
+++ b/src/point.tcl
@@ -15,7 +15,6 @@ proc PointDialog {varname} {
     }
 
     # procs
-    set var(which) point
     set var(proc,apply) PointApply
     set var(proc,close) PointClose
     set var(proc,coordCB) PointCoordCB
@@ -23,7 +22,40 @@ proc PointDialog {varname} {
     # base
     MarkerBaseCenterDialog $varname
 
+    # menus
+    $var(mb) add cascade -label [msgcat::mc {Shape}] -menu $var(mb).shape
+    menu $var(mb).shape
+    $var(mb).shape add radiobutton -label [msgcat::mc {Circle}] \
+	-variable ${varname}(shape) -value circle \
+	-command "PointShape $varname"
+    $var(mb).shape add radiobutton -label [msgcat::mc {Box}] \
+	-variable ${varname}(shape) -value box \
+	-command "PointShape $varname"
+    $var(mb).shape add radiobutton -label [msgcat::mc {Diamond}] \
+	-variable ${varname}(shape) -value diamond \
+	-command "PointShape $varname"
+    $var(mb).shape add radiobutton -label [msgcat::mc {Cross}] \
+	-variable ${varname}(shape) -value cross \
+	-command "PointShape $varname"
+    $var(mb).shape add radiobutton -label [msgcat::mc {X}] \
+	-variable ${varname}(shape) -value x \
+	-command "PointShape $varname"
+    $var(mb).shape add radiobutton -label [msgcat::mc {Arrow}] \
+	-variable ${varname}(shape) -value arrow \
+	-command "PointShape $varname"
+    $var(mb).shape add radiobutton -label [msgcat::mc {BoxCircle}] \
+	-variable ${varname}(shape) -value boxcircle \
+	-command "PointShape $varname"
+
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
+
+    # plot3d
+    MarkerAnalysisPlot3dDialog $varname
+
     # init
+    set var(shape) [$var(frame) get marker $var(id) point shape]
     set var(size) [$var(frame) get marker $var(id) point size]
 
     set f $var(top).param
@@ -50,7 +82,6 @@ proc PointApply {varname} {
     global $varname
 
     $var(frame) marker $var(id) point size $var(size)
-
     MarkerBaseCenterApply $varname
 }
 
@@ -69,7 +100,11 @@ proc PointCoordCB {varname {dummy {}}} {
     MarkerBaseCenterMoveCB $varname
 }
 
+# support
 
+proc PointShape {varname} {
+    upvar #0 $varname var
+    global $varname
 
-
-
+    $var(frame) marker $var(id) point shape $var(shape)
+}
diff --git a/src/polygon.tcl b/src/polygon.tcl
index d100b3c..bd8f3b0 100644
--- a/src/polygon.tcl
+++ b/src/polygon.tcl
@@ -15,7 +15,6 @@ proc PolygonDialog {varname} {
     }
 
     # procs
-    set var(which) polygon
     set var(proc,apply) PolygonApply
     set var(proc,close) PolygonClose
     set var(proc,coordCB) PolygonCoordCB
@@ -23,12 +22,18 @@ proc PolygonDialog {varname} {
     # base
     MarkerBaseCenterDialog $varname
 
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
+
+    # plot3d
+    MarkerAnalysisPlot3dDialog $varname
+
     # init
     MarkerBaseCenterRotateCB $varname
 
     # callbacks
-    $var(frame) marker $var(id) callback rotate \
-	MarkerBaseCenterRotateCB $varname
+    $var(frame) marker $var(id) callback rotate MarkerBaseCenterRotateCB $varname
 
     set f $var(top).param
 
@@ -74,4 +79,3 @@ proc PolygonCoordCB {varname {dummy {}}} {
     MarkerBaseCenterMoveCB $varname
     MarkerBaseCenterRotateCB $varname
 }
-
diff --git a/src/prefsdialog.tcl b/src/prefsdialog.tcl
index 326fe3a..19d0730 100644
--- a/src/prefsdialog.tcl
+++ b/src/prefsdialog.tcl
@@ -56,9 +56,7 @@ proc PrefsDialog {{which {}}} {
     PrefsDialogMenu
     PrefsDialogPanner
     PrefsDialogMagnifier
-    if {$ds9(3D)} {
     PrefsDialog3d
-    }
     PrefsDialogGraph
     PrefsDialogScale
     PrefsDialogColor
@@ -234,8 +232,8 @@ proc PrefsDialogGeneral {} {
 
     grid $f.lang -padx 2 -pady 2 -sticky w
 
-    # Font
-    set f [ttk::labelframe $w.general.font -text [msgcat::mc {Menu Font}]]
+    # GUI Font
+    set f [ttk::labelframe $w.general.font -text [msgcat::mc {GUI Font}]]
 
     FontMenuButton $f.font pds9 font \
 	font,size font,weight font,slant PrefsDefaultFont
@@ -244,6 +242,16 @@ proc PrefsDialogGeneral {} {
 
     grid $f.font $f.reset -padx 2 -pady 2 -sticky w
 
+    # Text Font
+    set f [ttk::labelframe $w.general.textfont -text [msgcat::mc {Text Font}]]
+
+    FontMenuButton $f.textfont pds9 text,font \
+	text,font,size text,font,weight text,font,slant {}
+    ttk::button $f.textreset -text [msgcat::mc {Reset}] \
+	-command PrefsResetDefaultTextFont
+
+    grid $f.textfont $f.textreset -padx 2 -pady 2 -sticky w
+
     # Color
     set f [ttk::labelframe $w.general.color -text [msgcat::mc {Color}]]
 
@@ -280,7 +288,8 @@ proc PrefsDialogGeneral {} {
 
     grid $f.all - -padx 2 -pady 2 -sticky w
 
-    pack $w.general.misc $w.general.theme $w.general.lang $w.general.font \
+    pack $w.general.misc $w.general.theme $w.general.lang \
+	$w.general.font	$w.general.textfont \
 	$w.general.color $w.general.box \
 	-side top -fill both -expand true
 }
diff --git a/src/projection.tcl b/src/projection.tcl
index 41bc20a..51f7b36 100644
--- a/src/projection.tcl
+++ b/src/projection.tcl
@@ -23,30 +23,21 @@ proc ProjectionDialog {varname} {
     # procs
     set var(which) projection
     set var(proc,apply) ProjectionApply
-    set var(proc,close) ProjectionClose
     set var(proc,coordCB) ProjectionCoordCB
     set var(proc,editCB) ProjectionEditCB
     set var(proc,distCB) ProjectionDistCB
 
     # base
     MarkerBaseLineDialog $varname 500 200
-    set var(pcoord) $var(system)
-    set var(psky) $var(sky)
 
-    # menus
-    $var(mb) add cascade -label [msgcat::mc {Method}] -menu $var(mb).method
-    menu $var(mb).method
-    $var(mb).method add radiobutton -label [msgcat::mc {Average}] \
-	-variable ${varname}(method) -value 1 \
-	-command "ProjectionApply $varname"
-    $var(mb).method add radiobutton -label [msgcat::mc {Sum}] \
-	-variable ${varname}(method) -value 0 \
-	-command "ProjectionApply $varname"
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
 
-    $var(mb) add cascade -label [msgcat::mc {Coordinate}] -menu $var(mb).coord
-    CoordMenu $var(mb).coord $varname pcoord 1 psky {} \
-	[list ProjectionSystem $varname]
-    CoordMenuEnable $var(mb).coord $varname pcoord 1 psky {}
+    # plot2d
+    MarkerAnalysisPlot2dDialog $varname
+    # make sure its on
+    set var(plot2d) 1
 
     # init
     ProjectionThickCB $varname
@@ -60,28 +51,18 @@ proc ProjectionDialog {varname} {
 	[list ProjectionThickCB $varname]
     DistMenuEnable $f.uthick.menu $varname tcoord 1 tformat
 
-    grid $f.tthick $f.thick x $f.uthick -padx 2 -pady 2 -sticky w
-
-    # make sure its opened
-    ProjectionPlotCB $var(frame) $var(id)
+    grid $f.tthick $f.thick $f.uthick -padx 2 -pady 2 -sticky w
 }
 
 # actions
 
-proc ProjectionClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseLineClose $varname
-}
-
 proc ProjectionApply {varname} {
     upvar #0 $varname var
     global $varname
 
     $var(frame) marker $var(id) projection $var(system) $var(sky) \
 	$var(x) $var(y) $var(x2) $var(y2) \
-	$var(thick) $var(method) $var(tcoord) $var(tformat)
+	$var(thick) $var(tcoord) $var(tformat)
 
     MarkerBaseLineApply $varname
 }
@@ -112,7 +93,6 @@ proc ProjectionEditCB {varname {dummy {}}} {
 
     MarkerBaseLineEditCB $varname
 
-    set var(method) [$var(frame) get marker $var(id) projection method]
     set var(dist) [$var(frame) get marker $var(id) projection length \
 		       $var(dcoord) $var(dformat)]
     set var(thick) [$var(frame) get marker $var(id) projection thick \
@@ -130,8 +110,6 @@ proc ProjectionDistCB {varname {dummy {}}} {
 	puts stderr "ProjectionDistCB"
     }
 
-    MarkerBaseDistCB $varname
-
     set var(dist) [$var(frame) get marker $var(id) projection length \
 		       $var(dcoord) $var(dformat)]
 }
@@ -149,131 +127,3 @@ proc ProjectionThickCB {varname {dummy {}}} {
 			$var(tcoord) $var(tformat)]
 }
 
-# support
-
-proc ProjectionSystem {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    $var(frame) marker $var(id) projection system $var(pcoord) $var(psky)
-
-    ProjectionPlotCB $var(frame) $var(id)
-    ProjectionXAxisTitle $var(frame) $var(id)
-}
-
-# Plot
-
-proc ProjectionPlotInit {frame id} {
-    $frame marker $id callback move ProjectionPlotCB $frame
-    $frame marker $id callback edit ProjectionPlotCB $frame
-    $frame marker $id callback update ProjectionPlotCB $frame
-    $frame marker $id callback delete ProjectionPlotDeleteCB $frame
-    ProjectionPlotCB $frame $id
-}
-
-# hardcoded into ds9parser.Y
-# hardcoded into frmarkerxml.C
-proc ProjectionPlotCB {frame id} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set xx proj${id}${frame}x
-    set yy proj${id}${frame}y
-    set xe proj${id}${frame}xe
-    set ye proj${id}${frame}ye
-
-    set xc proj${id}${frame}xc
-    set yc proj${id}${frame}yc
-
-    global $xx $yy $xe $ye $xc $yc
-    if {[APPing $varname]} {
-	$frame get marker $id projection $xx $yy $xc $yc 
-	APStats $varname
-    } else {
-	global ed
-	set rr [$frame get wcs]
-	set ed(pcoord) [lindex $rr 0]
-	set ed(psky) [lindex $rr 1]
-	AdjustCoordSystem ed pcoord
-
-	APDialog $varname Projection Projection $ed(pcoord) Counts
-	$var(graph) xaxis configure -command "ProjectionXAxis $frame $id"
-
-	set var(xdata) $xx
-	set var(ydata) $yy
-	set var(xedata) $xe
-	set var(yedata) $ye
-
-	blt::vector create $xx $yy $xe $ye $xc $yc
-	$frame marker $id projection system $ed(pcoord) $ed(psky)
-	$frame get marker $id projection $xx $yy $xc $yc
-
-	APExternal $varname
-	ProjectionXAxisTitle $frame $id
-    }
-}
-
-# hardcoded into ds9parser.Y
-# hardcoded into frmarkerxml.C
-proc ProjectionPlotDeleteCB {frame id} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set xc proj${id}${frame}xc
-    set yc proj${id}${frame}yc
-
-    global $xc $yc
-    catch {blt::vector destroy $xc $yc}
-    # clear any errors
-    global errorInfo
-    set errorInfo {}
-
-    APDestroy $varname
-}
-
-proc ProjectionXAxisTitle {frame id} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set ss [$frame get marker $id projection system]
-    set system [lindex $ss 0]
-    set sky  [lindex $ss 1]
-    switch -- $system {
-	image -
-	physical -
-	amplifier -
-	detector {set title "$system coordinates"}
-	default {
-	    if {[$frame has wcs equatorial $system]} {
-		set title "$sky coordinates"
-	    } else {
-		set title "[$frame get wcs name $system] coordinates"
-	    }
-	}
-    }
-    $var(graph) xaxis configure -title $title
-}
-
-proc ProjectionXAxis {frame id w xx} {
-    set varname proj${id}${frame}
-    upvar #0 $varname var
-    global $varname
-
-    set x [expr $xx-1]
-    set xc proj${id}${frame}xc
-    set yc proj${id}${frame}yc
-
-    global $xc $yc
-    # sometimes, $x equals $xc length
-    set ll [$xc length]
-    if {($ll>=1) && ($x>=0) && ($x<$ll)} {
-	set a [format "%6.3f" [expr "$$xc\($x\)"]]
-	set b [format "%6.3f" [expr "$$yc\($x\)"]]
-	return "$a\n$b"
-    } else {
-	return {}
-    }
-}
diff --git a/src/ruler.tcl b/src/ruler.tcl
index 3089f44..c7a08a7 100644
--- a/src/ruler.tcl
+++ b/src/ruler.tcl
@@ -25,7 +25,6 @@ proc RulerDialog {varname} {
     # procs
     set var(which) ruler
     set var(proc,apply) RulerApply
-    set var(proc,close) RulerClose
     set var(proc,coordCB) RulerCoordCB
     set var(proc,editCB) RulerEditCB
     set var(proc,distCB) RulerDistCB
@@ -46,13 +45,6 @@ proc RulerDialog {varname} {
 
 # actions
 
-proc RulerClose {varname} {
-    upvar #0 $varname var
-    global $varname
-
-    MarkerBaseLineClose $varname
-}
-
 proc RulerApply {varname} {
     upvar #0 $varname var
     global $varname
@@ -112,8 +104,6 @@ proc RulerDistCB {varname {dummy {}}} {
 	puts stderr "RulerDistCB"
     }
 
-    MarkerBaseDistCB $varname
-
     $var(frame) marker $var(id) ruler system $var(system) $var(sky) \
 	$var(dcoord) $var(dformat)
 
diff --git a/src/samp.tcl b/src/samp.tcl
index 6cb7c6b..f77cd60 100644
--- a/src/samp.tcl
+++ b/src/samp.tcl
@@ -1581,7 +1581,7 @@ proc ProcessSAMPCmd {varname iname} {
     global env
 
     # we need to be realized
-    RealizeDS9
+    ProcessRealizeDS9
 
     SAMPUpdate
 
diff --git a/src/saveas.tcl b/src/saveas.tcl
deleted file mode 100644
index 766520c..0000000
--- a/src/saveas.tcl
+++ /dev/null
@@ -1,608 +0,0 @@
-#  Copyright (C) 1999-2012
-#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
-#  For conditions of distribution and use, see copyright notice in "copyright"
-
-package provide DS9 1.0
-
-# SaveImage
-
-proc SaveImageDef {} {
-    global saveimage
-
-    set saveimage(format) jpeg
-    set saveimage(base) "ds9"
-    set saveimage(jpeg,quality) 75
-    set saveimage(tiff,compression) none
-    set saveimage(mpeg,quality) 2
-}
-
-proc SaveImageDialog {} {
-    global saveimage
-    global saveimagefbox
-    global ed
-
-    set w {.saveimage}
-
-    set ed(ok) 0
-    set ed(format) $saveimage(format)
-
-    DialogCreate $w [msgcat::mc {Save Image}] ed(ok)
-
-    # Param
-    set f [ttk::frame $w.param]
-    ttk::label $f.title -text [msgcat::mc {Format}]
-    ttk::radiobutton $f.fits -text {FITS} -variable ed(format) -value fits
-    ttk::radiobutton $f.gif -text {GIF} -variable ed(format) -value gif
-    ttk::radiobutton $f.jpeg -text {JPEG} -variable ed(format) -value jpeg
-    ttk::radiobutton $f.tiff -text {TIFF RGB 24-bit} \
-	-variable ed(format) -value tiff
-    ttk::radiobutton $f.png -text {PNG 24-bit (Portable Network Graphics)} \
-	-variable ed(format) -value png
-    ttk::radiobutton $f.ppm -text {PPM RGB (Portable Pixmap)} \
-	-variable ed(format) -value ppm
-    ttk::radiobutton $f.mpeg -text {MPEG-1 (Movie)} \
-	-variable ed(format) -value mpeg
-    grid $f.fits -padx 2 -pady 2 -sticky w
-    grid $f.gif -padx 2 -pady 2 -sticky w
-    grid $f.jpeg -padx 2 -pady 2 -sticky w
-    grid $f.tiff -padx 2 -pady 2 -sticky w
-    grid $f.png -padx 2 -pady 2 -sticky w
-    grid $f.ppm -padx 2 -pady 2 -sticky w
-    grid $f.mpeg -padx 2 -pady 2 -sticky w
-
-    # Buttons
-    set f [ttk::frame $w.buttons]
-    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed(ok) 1} \
-	-default active 
-    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed(ok) 0}
-    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
-
-    bind $w <Return> {set ed(ok) 1}
-
-    # Fini
-    ttk::separator $w.sep -orient horizontal
-    pack $w.buttons $w.sep -side bottom -fill x
-    pack $w.param -side top -fill both -expand true
-
-    DialogCenter $w 
-    DialogWait $w ed(ok)
-    DialogDismiss $w
-
-    if {$ed(ok)} {
-	set saveimage(format) $ed(format)
-	set fn {}
-	
-	switch -- $saveimage(format) {
-	    fits {
-		set fn "$saveimage(base).fits"
-		set saveimagefbox(types) \
-		    [list \
-			 [list {FITS} {*.fits}] \
-			 [list {FITS} {*.fit}] \
-			 [list [::msgcat::mc {All}] {*}] \
-			]
-	    }
-	    gif {
-		set fn "$saveimage(base).gif"
-		set saveimagefbox(types) \
-		    [list \
-			 [list {GIF} {*.gif}] \
-			 [list [::msgcat::mc {All}] {*}] \
-			]
-	    }
-	    jpeg {
-		set fn "$saveimage(base).jpg"
-		set saveimagefbox(types) \
-		    [list \
-			 [list {JPEG} {*.jpeg}] \
-			 [list {JPEG} {*.jpg}] \
-			 [list [::msgcat::mc {All}] {*}] \
-			]
-	    }
-	    tiff {
-		set fn "$saveimage(base).tif"
-		set saveimagefbox(types) \
-		    [list \
-			 [list {TIFF} {*.tiff}] \
-			 [list {TIFF} {*.tif}] \
-			 [list [::msgcat::mc {All}] {*}] \
-			]
-	    }
-	    png {
-		set fn "$saveimage(base).png"
-		set saveimagefbox(types) \
-		    [list \
-			 [list {PNG} {*.png}] \
-			 [list [::msgcat::mc {All}] {*}] \
-			]
-	    }
-	    ppm	{
-		set fn "$saveimage(base).ppm"
-		set saveimagefbox(types) \
-		    [list \
-			 [list {PPM} {*.ppm}] \
-			 [list [::msgcat::mc {All}] {*}] \
-			]
-	    }
-	    mpeg {
-		set fn "$saveimage(base).mpg"
-		set saveimagefbox(types) \
-		    [list \
-			 [list {MPEG} {*.mpeg}] \
-			 [list {MPEG} {*.mpg}] \
-			 [list [::msgcat::mc {All}] {*}] \
-			]
-	    }
-	}
-	FileLast saveimagefbox $fn
-	set fn [SaveFileDialog saveimagefbox]
-
-	set saveimage(ok) 1
-	if {$fn != {}} {
-	    set saveimage(base) [file rootname [file tail $fn]]
-
-	    switch -- $saveimage(format) {
-		fits {}
-		gif {}
-		jpeg {set saveimage(ok) \
-			  [SaveJPEGParams saveimage(jpeg,quality)]}
-		tiff {set saveimage(ok) \
-			  [SaveTIFFParams saveimage(tiff,compression)]}
-		png {}
-		ppm {}
-		mpeg {set saveimage(ok) \
-			  [SaveMPEGParams saveimage(mpeg,quality)]}
-	    }
-	}
-
-	if {$fn != {} && $saveimage(ok)} {
-	    SaveImage $fn
-	}
-    }
-
-    set rr $ed(ok)
-    unset ed
-    return $rr
-}
-
-proc SaveImage {fn} {
-    global ds9
-    global current
-    global saveimage
-    global cube
-
-    if {$fn == {}} {
-	return
-    }
-
-    # besure we are on top
-    raise $ds9(top)
-
-    # and no highlite
-    $current(frame) highlite off
-    # and refresh screen
-    RealizeDS9
-
-    set msg [msgcat::mc {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen}]
-
-    switch [$current(frame) get type] {
-	base -
-	rgb {
-	    switch -- $saveimage(format) {
-		fits -
-		gif -
-		jpeg -
-		tiff -
-		png -
-		ppm {
-		    set depth [$current(frame) get fits depth $cube(axis)]
-		    if {$ds9(display) == "single" && $depth > 1} {
-			set slice [$current(frame) get fits slice $cube(axis)]
-			# loop thru cube
-			for {set ii 1} {$ii <= $depth} {incr ii} {
-			    set ff "[file root $fn]_$ii[file extension $fn]"
-
-			    $current(frame) update fits slice $cube(axis) $ii
-
-			    if {[SaveImageDoit $ff]} {
-				Error $msg
-				break
-			    }
-			}
-			# reset current slice
-			$current(frame) update fits slice $cube(axis) $slice
-		    } else {
-			if {[SaveImageDoit $fn]} {
-			    Error $msg
-			}
-		    }
-		}
-		mpeg {
-		    set depth [$current(frame) get fits depth $cube(axis)]
-		    set slice [$current(frame) get fits slice $cube(axis)]
-		    
-		    # loop thru cube
-		    set saveimage(mpeg,first) 1
-		    for {set ii 1} {$ii <= $depth} {incr ii} {
-			$current(frame) update fits slice $cube(axis) $ii
-			if {[SaveImageDoit $fn]} {
-			    Error $msg
-			    break
-			}
-			set saveimage(mpeg,first) 0
-		    }
-		    mpeg close
-		    # reset current slice
-		    $current(frame) update fits slice $cube(axis) $slice
-		}
-	    }
-	}
-	3d {
-	    switch -- $saveimage(format) {
-		gif -
-		jpeg -
-		tiff -
-		png -
-		ppm {
-		    if {[SaveImageDoit $fn]} {
-			Error $msg
-		    }
-		}
-		fits -
-		mpeg {
-		    Error [msgcat::mc {Not supported}]
-		}
-	    }
-	}
-    }
-
-    # reset
-    switch -- $ds9(display) {
-	single -
-	blink {}
-	tile {$current(frame) highlite on}
-    }
-    # and refresh screen
-    RealizeDS9
-}
-
-proc ProcessSaveImageCmd {varname iname} {
-    upvar $varname var
-    upvar $iname i
-
-    global saveimage
-    set saveimage(format) [string tolower [lindex $var $i]]
-    incr i
-
-    set param [string tolower [lindex $var $i]]
-    switch $saveimage(format) {
-	fits -
-	png -
-	ppn {}
-	jpeg {
-	    if {$param != {} && [string is integer $param]} {
-		set saveimage(jpeg,quality) $param
-		incr i
-	    }
-	}
-	tiff {
-	    switch $param {
-		none -
-		jpeg -
-		packbits -
-		deflate {
-		    set saveimage(tiff,compression) $param
-		    incr i
-		}
-	    }
-	}
-	mpeg {
-	    if {$param != {} && [string is integer $param]} {
-		set saveimage(mpeg,quality) $param
-		incr i
-	    }
-	}
-    }
-
-    set fn [lindex $var $i]
-    SaveImage $fn
-    FileLast saveimagefbox $fn
-}
-
-# SaveFits
-
-proc SaveFitsDialog {} {
-    set fn [SaveFileDialog savefitsfbox]
-    SaveFits $fn
-}
-
-proc SaveFits {fn} {
-    global current
-
-    if {$fn != {}} {
-	$current(frame) save fits image file "\{$fn\}"
-    }
-}
-
-proc ProcessSaveFitsCmd {varname iname} {
-    upvar $varname var
-    upvar $iname i
-
-    # we need to be realized
-    RealizeDS9
-
-    set fn [lindex $var $i]
-    SaveFits $fn
-    FileLast savefitsfbox $fn
-}
-
-# SaveMPEG
-
-proc SaveMPEGDialog {} {
-    global saveimage
-
-    set fn [SaveFileDialog savempegfbox]
-    if {$fn != {}} {
-	if {[SaveMPEGParams saveimage(mpeg,quality)]} {
-	    SaveMPEG $fn
-	}
-    }
-}
-
-proc SaveMPEG {fn} {
-    global ds9
-    global current
-    global saveimage
-
-    if {$fn == {}} {
-	return
-    }
-    
-    # we need single mode
-    if {$ds9(display) != {single}} {
-	set modesav $ds9(display)
-	set current(display) single
-	DisplayMode
-    }
-
-    # loop thru all active frames
-    set first 1
-    set framesav $current(frame)
-
-    foreach f $ds9(active) {
-	set ds9(next) $f
-	GotoFrame
-	
-	RealizeDS9
-
-	set r \
-	    [catch {image create photo -format window -data $ds9(canvas)} ph]
-	if {$r != 0} {
-	    Error [msgcat::mc {An error has occurred while creating image}]
-	    break
-	}
-
-	if {$first} {
-	    set w [image width $ph]
-	    set h [image height $ph]
-	    mpeg create "$fn" $w $h 25 30 $saveimage(mpeg,quality)
-	    set first 0
-	}
-	mpeg add $ph
-
-	image delete $ph
-    }
-    mpeg close
-
-    if {[info exists modesav]} {
-	set current9(display,user) $modesav
-	DisplayMode
-    }
-
-    set ds9(next) $framesav
-    GotoFrame
-}
-
-proc ProcessSaveMPEGCmd {varname iname} {
-    upvar $varname var
-    upvar $iname i
-
-    # we need to be realized
-    RealizeDS9
-
-    set fn [lindex $var $i]
-    SaveMPEG $fn
-    FileLast savempegfbox $fn
-}
-
-# Support
-
-proc SaveImageDoit {fn} {
-    global ds9
-    global saveimage
-    global current
-
-    set rr [catch {image create photo -format window -data $ds9(canvas)} ph]
-    if {$rr != 0} {
-	return $rr
-    }
-
-    switch -- $saveimage(format) {
-	fits {
-	    $current(frame) save fits resample file "\{$fn\}"
-	}
-	gif {
-	    $ph write $fn -format $saveimage(format)]
-	}
-	jpeg {
-	    $ph write $fn -format \
-		[list $saveimage(format) -quality $saveimage(jpeg,quality)]
-	}
-	tiff {
-	    $ph write $fn -format \
-		[list $saveimage(format) \
-		     -compression $saveimage(tiff,compression)]
-	}
-	png {$ph write $fn -format $saveimage(format)}
-	ppm {$ph write $fn -format $saveimage(format)}
-	mpeg {
-	    if {$saveimage(mpeg,first)} {
-		set w [image width $ph]
-		set h [image height $ph]
-		mpeg create $fn $w $h 25 30 $saveimage(mpeg,quality)
-	    }
-	    mpeg add $ph
-	}
-    }
-
-    image delete $ph
-    return 0
-}
-
-proc SaveJPEGParams {varname} {
-    upvar $varname var
-    global ed2
-
-    set w {.savejpeg}
-
-    set ed2(ok) 0
-    set ed2(quality) $var
-
-    DialogCreate $w {JPEG} ed2(ok)
-
-    # Param
-    set f [ttk::frame $w.param]
-    slider $f.squality 0 100 [msgcat::mc {JPEG Quality Factor}] \
-	ed2(quality) {}
-
-    grid $f.squality -padx 2 -pady 2 -sticky ew
-    grid columnconfigure $f 0 -weight 1
-
-    # Buttons
-    set f [ttk::frame $w.buttons]
-    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \
-	-default active 
-    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0}
-    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
-
-    bind $w <Return> {set ed2(ok) 1}
-
-    # Fini
-    ttk::separator $w.sep -orient horizontal
-    pack $w.buttons $w.sep -side bottom -fill x
-    pack $w.param -side top -fill both -expand true
-
-    DialogCenter $w 
-    DialogWait $w ed2(ok)
-    DialogDismiss $w
-
-    if {$ed2(ok)} {
-	set var $ed2(quality)
-    }
-
-    set rr $ed2(ok)
-    unset ed2
-    return $rr
-}
-
-proc SaveTIFFParams {varname} {
-    upvar $varname var
-    global ed2
-
-    set w {.savetiff}
-
-    set ed2(ok) 0
-    set ed2(compression) $var
-
-    DialogCreate $w {TIFF} ed2(ok)
-
-    # Param
-    set f [ttk::frame $w.param]
-    ttk::label $f.title -text [msgcat::mc {Compression}]
-    ttk::radiobutton $f.none -text [msgcat::mc {None}] \
-	-variable ed2(compression) -value none
-    ttk::radiobutton $f.jpeg -text {JPEG} \
-	-variable ed2(compression) -value jpeg
-    ttk::radiobutton $f.packbits -text {Packbits} \
-	-variable ed2(compression) -value packbits
-    ttk::radiobutton $f.deflate -text {Deflate} \
-	-variable ed2(compression) -value deflate
-    grid $f.title -padx 2 -pady 2 -sticky w
-    grid $f.none -padx 2 -pady 2 -sticky w
-    grid $f.jpeg -padx 2 -pady 2 -sticky w
-    grid $f.packbits -padx 2 -pady 2 -sticky w
-    grid $f.deflate -padx 2 -pady 2 -sticky w
-
-    # Buttons
-    set f [ttk::frame $w.buttons]
-    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \
-	-default active 
-    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0}
-    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
-
-    bind $w <Return> {set ed2(ok) 1}
-
-    # Fini
-    ttk::separator $w.sep -orient horizontal
-    pack $w.buttons $w.sep -side bottom -fill x
-    pack $w.param -side top -fill both -expand true
-
-    DialogCenter $w 
-    DialogWait $w ed2(ok)
-    DialogDismiss $w
-
-    if {$ed2(ok)} {
-	set var $ed2(compression)
-    }
-
-    set rr $ed2(ok)
-    unset ed2
-    return $rr
-}
-
-proc SaveMPEGParams {varname} {
-    upvar $varname var
-    global ed2
-
-    set w {.savempeg}
-
-    set ed2(ok) 0
-    set ed2(quality) $var
-
-    DialogCreate $w {MPEG} ed2(ok)
-
-    # Param
-    set f [ttk::frame $w.param]
-    slider $f.squality 2 31 [msgcat::mc {MPEG Quality Factor}] \
-	ed2(quality) {}
-
-    grid $f.squality -padx 2 -pady 2 -sticky ew
-    grid columnconfigure $f 0 -weight 1
-
-    # Buttons
-    set f [ttk::frame $w.buttons]
-    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \
-	-default active 
-    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0}
-    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
-
-    bind $w <Return> {set ed2(ok) 1}
-
-    # Fini
-    ttk::separator $w.sep -orient horizontal
-    pack $w.buttons $w.sep -side bottom -fill x
-    pack $w.param -side top -fill both -expand true
-
-    DialogCenter $w 
-    DialogWait $w ed2(ok)
-    DialogDismiss $w
-
-    if {$ed2(ok)} {
-	set var $ed2(quality)
-    }
-
-    set rr $ed2(ok)
-    unset ed2
-    return $rr
-}
-
diff --git a/src/saveimage.tcl b/src/saveimage.tcl
new file mode 100644
index 0000000..de30d9c
--- /dev/null
+++ b/src/saveimage.tcl
@@ -0,0 +1,375 @@
+#  Copyright (C) 1999-2012
+#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+#  For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc SaveImageDef {} {
+    global saveimage
+
+    set saveimage(base) ds9
+    set saveimage(format) jpeg
+    set saveimage(jpeg,quality) 75
+    set saveimage(tiff,compression) none
+
+    global tcl_platform
+
+    set aa [msgcat::mc {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.}]
+    set bb [msgcat::mc {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.}]
+    switch $tcl_platform(os) {
+	Darwin {
+	    switch [lindex [split $tcl_platform(osVersion) {.}] 0] {
+		10 -
+		11 {set saveimage(error) $bb}
+		8 -
+		9 -
+		default {set saveimage(error) $aa}
+	    }
+	}
+	default {set saveimage(error) $aa}
+    }
+}
+
+proc SaveImageDialog {} {
+    global saveimage
+    global saveimagefbox
+    global ed
+
+    set w {.saveimage}
+
+    set ed(ok) 0
+    set ed(format) $saveimage(format)
+
+    DialogCreate $w [msgcat::mc {Save Image}] ed(ok)
+
+    # Param
+    set f [ttk::frame $w.param]
+    ttk::label $f.title -text [msgcat::mc {Format}]
+    ttk::radiobutton $f.fits -text {FITS} -variable ed(format) -value fits
+    ttk::radiobutton $f.gif -text {GIF} -variable ed(format) -value gif
+    ttk::radiobutton $f.jpeg -text {JPEG} -variable ed(format) -value jpeg
+    ttk::radiobutton $f.tiff -text {TIFF RGB 24-bit} \
+	-variable ed(format) -value tiff
+    ttk::radiobutton $f.png -text {PNG 24-bit (Portable Network Graphics)} \
+	-variable ed(format) -value png
+    ttk::radiobutton $f.ppm -text {PPM RGB (Portable Pixmap)} \
+	-variable ed(format) -value ppm
+    grid $f.fits -padx 2 -pady 2 -sticky w
+    grid $f.gif -padx 2 -pady 2 -sticky w
+    grid $f.jpeg -padx 2 -pady 2 -sticky w
+    grid $f.tiff -padx 2 -pady 2 -sticky w
+    grid $f.png -padx 2 -pady 2 -sticky w
+    grid $f.ppm -padx 2 -pady 2 -sticky w
+
+    # Buttons
+    set f [ttk::frame $w.buttons]
+    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed(ok) 1} \
+	-default active 
+    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed(ok) 0}
+    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
+
+    bind $w <Return> {set ed(ok) 1}
+
+    # Fini
+    ttk::separator $w.sep -orient horizontal
+    pack $w.buttons $w.sep -side bottom -fill x
+    pack $w.param -side top -fill both -expand true
+
+    DialogCenter $w 
+    DialogWait $w ed(ok)
+    DialogDismiss $w
+
+    if {$ed(ok)} {
+	set saveimage(format) $ed(format)
+	set saveimagefbox(types) [FormatToFBox $saveimage(format)]
+ 	FileLast saveimagefbox "$saveimage(base).$saveimage(format)"
+ 	set fn [SaveFileDialog saveimagefbox]
+
+	if {$fn != {}} {
+ 	    set saveimage(base) [file rootname [file tail $fn]]
+
+	    set ok 1
+	    switch -- $saveimage(format) {
+		fits {}
+		gif {}
+		jpeg {set ok [SaveJPEGParams saveimage(jpeg,quality)]}
+		tiff {set ok [SaveTIFFParams saveimage(tiff,compression)]}
+		png {}
+		ppm {}
+	    }
+
+	    if {$ok} {
+		SaveImage $fn
+	    }
+	}
+    }
+
+    set rr $ed(ok)
+    unset ed
+    return $rr
+}
+
+proc SaveImage {fn} {
+    global ds9
+    global current
+    global saveimage
+    global cube
+
+    if {$fn == {} || ![$current(frame) has fits]} {
+	return
+    }
+
+    # besure we are on top
+    raise $ds9(top)
+
+    # and no highlite
+    $current(frame) highlite off
+    # and refresh screen
+    RealizeDS9
+
+    switch -- $saveimage(format) {
+	fits {$current(frame) save fits resample file "\{$fn\}"}
+	default {SavePhoto $fn}
+    }
+
+    # reset
+    switch -- $ds9(display) {
+	single -
+	blink {}
+	tile {$current(frame) highlite on}
+    }
+
+    # and refresh screen
+    RealizeDS9
+}
+
+# Process Cmds
+
+proc ProcessSaveImageCmd {varname iname} {
+    upvar $varname var
+    upvar $iname i
+
+    # we need to be realized
+    ProcessRealizeDS9
+
+    set format {}
+    set param {}
+    set fn [lindex $var $i]
+    if {$fn == {}} {
+	return
+    }
+
+    # backward compatibility
+    switch $fn {
+	fits -
+	gif -
+	tif -
+	tiff -
+	jpg -
+	jpeg -
+	png -
+	ppm {
+	    set format $fn
+	    set fn {}
+	    incr i
+	}
+    }
+
+    # try again
+    if {$fn == {}} {
+	set fn [lindex $var $i]
+	if {$fn == {}} {
+	    return
+	}
+
+	if {$fn != {} && ([string is integer $fn] || 
+			  $fn == {none} || 
+			  $fn == {jpeg} || 
+			  $fn == {backbits} || 
+			  $fn == {deflate})} {
+	    set param $fn
+	    set fn {}
+	    incr i
+	}
+    }
+
+    # one last time
+    if {$fn == {}} {
+	set fn [lindex $var $i]
+	if {$fn == {}} {
+	    return
+	}
+    }
+
+    global saveimage
+    if {$format == {}} {
+	set format [ExtToFormat $fn]
+    }
+    set saveimage(format) $format
+
+    if {$param == {}} {
+	set param [string tolower [lindex $var [expr $i+1]]]
+	switch $saveimage(format) {
+	    fits -
+	    gif -
+	    png -
+	    ppm {}
+	    jpeg {
+		if {$param != {} && [string is integer $param]} {
+		    set saveimage(jpeg,quality) $param
+		    incr i
+		}
+	    }
+	    tiff {
+		switch $param {
+		    none -
+		    jpeg -
+		    packbits -
+		    deflate {
+			set saveimage(tiff,compression) $param
+			incr i
+		    }
+		}
+	    }
+	}
+    }
+
+    SaveImage $fn
+    FileLast saveimagefbox $fn
+}
+
+# Support
+
+proc SavePhoto {fn} {
+    global ds9
+    global saveimage
+    global current
+
+    set rr [catch {image create photo -format window -data $ds9(canvas)} ph]
+    if {$rr != 0} {
+	Error $saveimage(error)
+	return $rr
+    }
+
+    switch -- $saveimage(format) {
+	gif {
+	    $ph write $fn -format $saveimage(format)]
+	}
+	jpeg {
+	    $ph write $fn -format \
+		[list $saveimage(format) -quality $saveimage(jpeg,quality)]
+	}
+	tiff {
+	    $ph write $fn -format \
+		[list $saveimage(format) \
+		     -compression $saveimage(tiff,compression)]
+	}
+	png {$ph write $fn -format $saveimage(format)}
+	ppm {$ph write $fn -format $saveimage(format)}
+    }
+
+    image delete $ph
+    return 0
+}
+
+proc SaveJPEGParams {varname} {
+    upvar $varname var
+    global ed2
+
+    set w {.savejpeg}
+
+    set ed2(ok) 0
+    set ed2(quality) $var
+
+    DialogCreate $w {JPEG} ed2(ok)
+
+    # Param
+    set f [ttk::frame $w.param]
+    slider $f.squality 0 100 [msgcat::mc {JPEG Quality Factor}] \
+	ed2(quality) {}
+
+    grid $f.squality -padx 2 -pady 2 -sticky ew
+    grid columnconfigure $f 0 -weight 1
+
+    # Buttons
+    set f [ttk::frame $w.buttons]
+    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \
+	-default active 
+    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0}
+    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
+
+    bind $w <Return> {set ed2(ok) 1}
+
+    # Fini
+    ttk::separator $w.sep -orient horizontal
+    pack $w.buttons $w.sep -side bottom -fill x
+    pack $w.param -side top -fill both -expand true
+
+    DialogCenter $w 
+    DialogWait $w ed2(ok)
+    DialogDismiss $w
+
+    if {$ed2(ok)} {
+	set var $ed2(quality)
+    }
+
+    set rr $ed2(ok)
+    unset ed2
+    return $rr
+}
+
+proc SaveTIFFParams {varname} {
+    upvar $varname var
+    global ed2
+
+    set w {.savetiff}
+
+    set ed2(ok) 0
+    set ed2(compression) $var
+
+    DialogCreate $w {TIFF} ed2(ok)
+
+    # Param
+    set f [ttk::frame $w.param]
+    ttk::label $f.title -text [msgcat::mc {Compression}]
+    ttk::radiobutton $f.none -text [msgcat::mc {None}] \
+	-variable ed2(compression) -value none
+    ttk::radiobutton $f.jpeg -text {JPEG} \
+	-variable ed2(compression) -value jpeg
+    ttk::radiobutton $f.packbits -text {Packbits} \
+	-variable ed2(compression) -value packbits
+    ttk::radiobutton $f.deflate -text {Deflate} \
+	-variable ed2(compression) -value deflate
+    grid $f.title -padx 2 -pady 2 -sticky w
+    grid $f.none -padx 2 -pady 2 -sticky w
+    grid $f.jpeg -padx 2 -pady 2 -sticky w
+    grid $f.packbits -padx 2 -pady 2 -sticky w
+    grid $f.deflate -padx 2 -pady 2 -sticky w
+
+    # Buttons
+    set f [ttk::frame $w.buttons]
+    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \
+	-default active 
+    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0}
+    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
+
+    bind $w <Return> {set ed2(ok) 1}
+
+    # Fini
+    ttk::separator $w.sep -orient horizontal
+    pack $w.buttons $w.sep -side bottom -fill x
+    pack $w.param -side top -fill both -expand true
+
+    DialogCenter $w 
+    DialogWait $w ed2(ok)
+    DialogDismiss $w
+
+    if {$ed2(ok)} {
+	set var $ed2(compression)
+    }
+
+    set rr $ed2(ok)
+    unset ed2
+    return $rr
+}
+
diff --git a/src/savempeg.tcl b/src/savempeg.tcl
new file mode 100644
index 0000000..4c6517b
--- /dev/null
+++ b/src/savempeg.tcl
@@ -0,0 +1,532 @@
+#  Copyright (C) 1999-2012
+#  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+#  For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc SaveMPEGDef {} {
+    global isavempeg
+    global savempeg
+
+    global tcl_platform
+
+    set isavempeg(top) .savempegstatus
+    set isavempeg(mb) .savempegstatusmb
+
+    set savempeg(action) slice
+    set savempeg(quality) 2
+    set savempeg(num) 24
+    set savempeg(az,from) 45
+    set savempeg(az,to) -45
+    set savempeg(el,from) 30
+    set savempeg(el,to) 30
+    set savempeg(sl,from) 1
+    set savempeg(sl,to) 10
+    set savempeg(repeat) oscillate
+    set savempeg(repeat,num) 0
+
+    set savempeg(status) 0
+    set savempeg(abort) 0
+
+    set aa [msgcat::mc {An error has occurred while creating the image. Please be sure that the entire image window is visible on the screen.}]
+    set bb [msgcat::mc {An error has occurred while creating the image. Please be sure that the ds9 window is in the upper left corner of the default screen and the entire window is visible.}]
+    switch $tcl_platform(os) {
+	Darwin {
+	    switch [lindex [split $tcl_platform(osVersion) {.}] 0] {
+		10 -
+		11 {set savempeg(error) $bb}
+		8 -
+		9 -
+		default {set savempeg(error) $aa}
+	    }
+	}
+	default {set savempeg(error) $aa}
+    }
+}
+
+proc SaveMPEGDialog {} {
+    global savempeg
+    global savempegfbox
+    global ed
+    global current
+
+    set w {.savempeg}
+
+    set ed(ok) 0
+    set ed(action) $savempeg(action)
+
+    DialogCreate $w [msgcat::mc {Save Movie}] ed(ok)
+
+    # Param
+    set f [ttk::frame $w.param]
+    ttk::label $f.title -text [msgcat::mc {Format}]
+    ttk::radiobutton $f.slice -text {Slice Movie} \
+	-variable ed(action) -value slice
+    ttk::radiobutton $f.frame -text {Frames Movie} \
+	-variable ed(action) -value frame
+    ttk::radiobutton $f.3d -text {3D Movie} \
+	-variable ed(action) -value 3d
+
+    grid $f.slice -padx 2 -pady 2 -sticky w
+    grid $f.frame -padx 2 -pady 2 -sticky w
+    grid $f.3d -padx 2 -pady 2 -sticky w
+
+    switch [$current(frame) get type] {
+	base -
+	rgb {$f.3d configure -state disabled}
+	3d {$f.3d configure -state normal}
+    }
+
+    # Buttons
+    set f [ttk::frame $w.buttons]
+    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed(ok) 1} \
+	-default active 
+    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed(ok) 0}
+    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
+
+    bind $w <Return> {set ed(ok) 1}
+
+    # Fini
+    ttk::separator $w.sep -orient horizontal
+    pack $w.buttons $w.sep -side bottom -fill x
+    pack $w.param -side top -fill both -expand true
+
+    DialogCenter $w 
+    DialogWait $w ed(ok)
+    DialogDismiss $w
+
+    if {$ed(ok)} {
+	set savempeg(action) $ed(action)
+ 	set fn [SaveFileDialog savempegfbox]
+
+	if {$fn != {}} {
+	    set ok 1
+	    switch $savempeg(action) {
+		slice -
+		frame {}
+		3d {set ok [SaveMPEG3dDialog]}
+	    }
+
+	    if {$ok} {
+		SaveMPEG $fn
+	    }
+	}
+    }
+
+    set rr $ed(ok)
+    unset ed
+    return $rr
+}
+
+proc SaveMPEG {fn} {
+    global ds9
+    global savempeg
+    global current
+
+    if {$fn == {} || ![$current(frame) has fits]} {
+	return
+    }
+
+    # besure we are on top
+    raise $ds9(top)
+
+    # we need single mode
+    if {$ds9(display) != {single}} {
+	set modesav $ds9(display)
+	set current(display) single
+	DisplayMode
+    }
+
+    switch $savempeg(action) {
+	slice {SaveMPEGSlice $fn}
+	frame {SaveMPEGFrame $fn}
+	3d {SaveMPEG3d $fn}
+    }
+
+    if {[info exists modesav]} {
+	set current9(display,user) $modesav
+	DisplayMode
+    }
+}
+
+proc SaveMPEGSlice {fn} {
+    global current
+    global savempeg
+    global cube
+
+    set depth [$current(frame) get fits depth $cube(axis)]
+    set slice [$current(frame) get fits slice $cube(axis)]
+
+    if {$cube(axis)==2} {
+	set ss [$current(frame) get crop 3d image]
+	set from [lindex $ss 0]
+	set to [lindex $ss 1]
+    } else {
+	set from 1
+	set to [$current(frame) get fits depth $cube(axis)]
+    }
+
+    # loop thru cube
+    set savempeg(first) 1
+    for {set ii $from} {$ii <= $to} {incr ii} {
+	$current(frame) update fits slice $cube(axis) $ii
+	if {[SaveMPEGPhoto $fn]} {
+	    break
+	}
+    }
+    mpeg close
+
+    # reset current slice
+    $current(frame) update fits slice $cube(axis) $slice
+}
+
+proc SaveMPEGFrame {fn} {
+    global ds9
+    global current
+    global savempeg
+
+    # loop thru all active frames
+    set savempeg(first) 1
+    set framesav $current(frame)
+
+    foreach ff $ds9(active) {
+	set ds9(next) $ff
+	GotoFrame
+	if {[SaveMPEGPhoto $fn]} {
+	    break
+	}
+    }
+    mpeg close
+
+    set ds9(next) $framesav
+    GotoFrame
+}
+
+proc SaveMPEG3d {fn} {
+    global savempeg
+    global current
+    global cube
+
+    set slice [$current(frame) get fits slice $cube(axis)]
+    set vp [$current(frame) get 3d view]
+
+    set azincr [expr 1.*($savempeg(az,to)-$savempeg(az,from))/$savempeg(num)]
+    set elincr [expr 1.*($savempeg(el,to)-$savempeg(el,from))/$savempeg(num)]
+    set slincr [expr ($savempeg(sl,to)-$savempeg(sl,from))/$savempeg(num)]
+
+    # loop over az/el/slice
+    set savempeg(status) 0
+    set savempeg(abort) 0
+    set savempeg(first) 1
+
+    set az $savempeg(az,from)
+    set el $savempeg(el,from)
+    set sl $savempeg(sl,from)
+
+    for {set rr 0} {$rr<=$savempeg(repeat,num)} {incr rr} {
+	for {set nn 0} {$nn<=$savempeg(num)} {incr nn} {
+	    SaveMPEGStatusDialog
+
+	    if {$savempeg(abort)} {
+		break
+	    }
+	    set savempeg(status) [expr 1.*$nn/$savempeg(num)*100]
+	    update idletasks
+
+	    $current(frame) 3d view $az $el
+	    $current(frame) update fits slice $cube(axis) [expr int($sl)]
+	    if {[SaveMPEGPhoto $fn]} {
+		break
+	    }
+	    set az [expr $az+$azincr]
+	    set el [expr $el+$elincr]
+	    incr sl $slincr
+	}
+	switch $savempeg(repeat) {
+	    repeat {
+		set az $savempeg(az,from)
+		set el $savempeg(el,from)
+		set sl $savempeg(sl,from)
+	    }
+	    oscillate {
+		set azincr [expr -$azincr]
+		set elincr [expr -$elincr]
+		set slincr [expr -$slincr]
+	    }
+	}
+    }
+    mpeg close
+
+    SaveMPEGStatusDestroyDialog
+
+    # reset
+    $current(frame) 3d view $vp
+    $current(frame) update fits slice $cube(axis) $slice
+    Update3DDialog
+    UpdateCubeDialog
+}
+
+# Support
+
+proc SaveMPEGPhoto {fn} {
+    global ds9
+    global savempeg
+    global current
+
+    # yes, we need this
+    UpdateDS9
+    RealizeDS9
+
+    set rr [catch {image create photo -format window -data $ds9(canvas)} ph]
+    if {$rr} {
+	Error $savempeg(error)
+	return $rr
+    }
+
+    if {$savempeg(first)} {
+	set w [image width $ph]
+	set h [image height $ph]
+	mpeg create "$fn" $w $h 25 1 $savempeg(quality)
+	set savempeg(first) 0
+    }
+    mpeg add $ph
+
+    image delete $ph
+    return 0
+}
+
+proc SaveMPEG3dDialog {} {
+    global savempeg
+    global ed2
+    global current
+    global cube
+
+    set w {.savempeg3d}
+
+    set ed2(ok) 0
+    set ed2(num) $savempeg(num)
+    set ed2(az,from) $savempeg(az,from)
+    set ed2(az,to) $savempeg(az,to)
+    set ed2(el,from) $savempeg(el,from)
+    set ed2(el,to) $savempeg(el,to)
+    set ed2(sl,from) $savempeg(sl,from)
+
+    if {$cube(axis)==2} {
+	set ss [$current(frame) get crop 3d image]
+	set ed2(sl,from) [lindex $ss 0]
+	set ed2(sl,to) [lindex $ss 1]
+    } else {
+	set ed2(sl,from) 1
+	set ed2(sl,to) [$current(frame) get fits depth $cube(axis)]
+    }
+
+    set ed2(repeat) $savempeg(repeat)
+    set ed2(repeat,num) $savempeg(repeat,num)
+
+    DialogCreate $w [msgcat::mc {Save 3D Movie}] ed2(ok)
+
+    # Param
+    set f [ttk::frame $w.param]
+    ttk::label $f.tnum -text [msgcat::mc {Number}]
+    ttk::entry $f.num -textvariable ed2(num) -width 7
+    ttk::label $f.tframes -text [msgcat::mc {Frames}]
+
+    ttk::label $f.taz -text [msgcat::mc {Azimuth}]
+    ttk::label $f.tazfrom -text [msgcat::mc {From}]
+    ttk::entry $f.azfrom -textvariable ed2(az,from) -width 7
+    ttk::label $f.tazto -text [msgcat::mc {To}]
+    ttk::entry $f.azto -textvariable ed2(az,to) -width 7
+
+    ttk::label $f.tel -text [msgcat::mc {Elevation}]
+    ttk::label $f.telfrom -text [msgcat::mc {From}]
+    ttk::entry $f.elfrom -textvariable ed2(el,from) -width 7
+    ttk::label $f.telto -text [msgcat::mc {To}]
+    ttk::entry $f.elto -textvariable ed2(el,to) -width 7
+
+    ttk::label $f.tsl -text [msgcat::mc {Slice}]
+    ttk::label $f.tslfrom -text [msgcat::mc {From}]
+    ttk::entry $f.slfrom -textvariable ed2(sl,from) -width 7
+    ttk::label $f.tslto -text [msgcat::mc {To}]
+    ttk::entry $f.slto -textvariable ed2(sl,to) -width 7
+
+    ttk::radiobutton $f.repeat -text [msgcat::mc {Repeat}] \
+	-variable ed2(repeat) -value repeat
+    ttk::radiobutton $f.oscillate -text [msgcat::mc {Oscillate}] \
+	-variable ed2(repeat) -value oscillate
+    ttk::entry $f.repeatnum -textvariable ed2(repeat,num) -width 7
+    ttk::label $f.ttimes -text [msgcat::mc {Times}]
+
+    grid $f.tnum x $f.num $f.tframes -padx 2 -pady 2 -sticky w
+    grid $f.taz $f.tazfrom $f.azfrom $f.tazto $f.azto -padx 2 -pady 2 -sticky w
+    grid $f.tel $f.telfrom $f.elfrom $f.telto $f.elto -padx 2 -pady 2 -sticky w
+    grid $f.tsl $f.tslfrom $f.slfrom $f.tslto $f.slto -padx 2 -pady 2 -sticky w
+    grid $f.oscillate x $f.repeatnum $f.ttimes -padx 2 -pady 2 -sticky w
+    grid $f.repeat -padx 2 -pady 2 -sticky w
+
+    # Buttons
+    set f [ttk::frame $w.buttons]
+    ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \
+	-default active 
+    ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0}
+    pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4
+
+    bind $w <Return> {set ed2(ok) 1}
+
+    # Fini
+    ttk::separator $w.sep -orient horizontal
+    pack $w.buttons $w.sep -side bottom -fill x
+    pack $w.param -side top -fill both -expand true
+
+    DialogCenter $w 
+    DialogWait $w ed2(ok)
+    DialogDismiss $w
+
+    if {$ed2(ok)} {
+	set savempeg(num) $ed2(num)
+	set savempeg(az,from) $ed2(az,from)
+	set savempeg(az,to) $ed2(az,to)
+	set savempeg(el,from) $ed2(el,from)
+	set savempeg(el,to) $ed2(el,to)
+	set savempeg(sl,from) $ed2(sl,from)
+	set savempeg(sl,to) $ed2(sl,to)
+	set savempeg(repeat) $ed2(repeat)
+	set savempeg(repeat,num) $ed2(repeat,num)
+    }
+
+    set rr $ed2(ok)
+    unset ed2
+    return $rr
+}
+
+proc SaveMPEGStatusDialog {} {
+    global isavempeg
+    global savempeg
+
+    # see if we already have a window visible
+    if [winfo exists $isavempeg(top)] {
+	raise $isavempeg(top)
+	return
+    }
+
+    # create the 3d window
+    set w $isavempeg(top)
+    set mb $isavempeg(mb)
+
+    Toplevel $w $mb 6 [msgcat::mc {Movie}] SaveMPEGStatusDestroyDialog
+    raise $isavempeg(top)
+
+    # Status
+    set f [ttk::frame $w.param]
+    ttk::label $f.tstatus -text [msgcat::mc {Status}]
+    ttk::progressbar $f.status -variable savempeg(status) -length 350
+    grid $f.tstatus $f.status -padx 2 -pady 2 -sticky w
+
+    # Buttons
+    set f [ttk::frame $w.buttons]
+    ttk::button $f.abort -text [msgcat::mc {Abort}] \
+	-command SaveMPEGStatusAbortDialog
+    pack $f.abort -side left -expand true -padx 2 -pady 4
+
+    # Fini
+    ttk::separator $w.sep -orient horizontal
+    pack $w.buttons $w.sep -side bottom -fill x
+    pack $w.param -side top -fill x
+}
+
+proc SaveMPEGStatusDestroyDialog {} {
+    global savempeg
+    global isavempeg
+
+    if {[winfo exists $isavempeg(top)]} {
+	destroy $isavempeg(top)
+	destroy $isavempeg(mb)
+    }
+}
+
+proc SaveMPEGStatusAbortDialog {} {
+    global savempeg
+    set savempeg(abort) 1
+}
+
+# Process Cmds
+
+proc ProcessSaveMPEGCmd {varname iname} {
+    upvar $varname var
+    upvar $iname i
+
+    global savempeg
+
+    # we need to be realized
+    # already implemented
+    # ProcessRealizeDS9
+
+    set item [string tolower [lindex $var $i]]
+    switch -- $item {
+	slice -
+	frame -
+	3d {
+	    set savempeg(action) $item
+	    incr i
+	}
+	default {
+	    # backward compatibility
+	    set savempeg(action) frame
+	}
+    }
+
+    set fn [lindex $var $i]
+
+    set go 1
+    while {$go} {
+	incr i
+	set item [string tolower [lindex $var $i]]
+	switch -- $item {
+	    number {
+		incr i
+		set savempeg(num) [lindex $var $i]
+	    }
+	    azfrom {
+		incr i
+		set savempeg(az,from) [lindex $var $i]
+	    }
+	    azto {
+		incr i
+		set savempeg(az,to) [lindex $var $i]
+	    }
+	    elfrom {
+		incr i
+		set savempeg(el,from) [lindex $var $i]
+	    }
+	    elto {
+		incr i
+		set savempeg(el,to) [lindex $var $i]
+	    }
+	    slfrom {
+		incr i
+		set savempeg(sl,from) [lindex $var $i]
+	    }
+	    slto {
+		incr i
+		set savempeg(sl,to) [lindex $var $i]
+	    }
+	    oscillate {
+		incr i
+		set savempeg(repeat) oscillate
+		set savempeg(repeat,num) [lindex $var $i]
+	    }
+	    repeat {
+		incr i
+		set savempeg(repeat) repeat
+		set savempeg(repeat,num) [lindex $var $i]
+	    }
+	    default {
+		incr i -1
+		set go 0
+	    }
+	}
+    }
+
+    SaveMPEG $fn
+}
+
+
diff --git a/src/scale.tcl b/src/scale.tcl
index 1cb677e..cac8e8d 100644
--- a/src/scale.tcl
+++ b/src/scale.tcl
@@ -295,6 +295,7 @@ proc ScaleDialog {} {
     set f [ttk::frame $w.param]
 
     # Graph
+    set dscale(width) 1
     set dscale(hist) [blt::barchart $f.chart \
 			  -width 500 -height 200 \
 			  -title [msgcat::mc {Pixel Distribution}] \
@@ -310,9 +311,10 @@ proc ScaleDialog {} {
     set dscale(xdata) histX
     set dscale(ydata) histY
     blt::vector create $dscale(xdata) $dscale(ydata)
-    $dscale(hist) element create bar1 -hide yes \
+    $dscale(hist) element create bar1 \
 	-xdata $dscale(xdata) -ydata $dscale(ydata) \
-	-relief flat -foreground #000001 -background #000001
+	-relief flat -foreground #000001 -background #000001 \
+	-barwidth $dscale(width)
 
     # Cut Lines
     $dscale(hist) marker bind min <B1-Motion> \
@@ -396,13 +398,6 @@ proc ScaleMotionDialog {x y varname} {
     global dscale
 
     set var [lindex [$dscale(hist) invtransform $x $y] 0]
-    if {$dscale(min) < $dscale(minmin)} {
-	set dscale(min) $dscale(minmin)
-    }
-    if {$dscale(max) > $dscale(minmax)} {
-	set dscale(max) $dscale(minmax)
-    }
-
     if {$dscale(min) > $dscale(max)} {
 	if {$varname == "dscale(min)"} {
 	    set var $dscale(max)
@@ -469,22 +464,16 @@ proc UpdateScaleDialog {} {
 	    set dscale(minmin) [lindex $limits 0]
 	    set dscale(minmax) [lindex $limits 1]
 
-	    set dscale(width) \
-		[$current(frame) get histogram $dscale(xdata) $dscale(ydata)]
-	    if {$dscale(width)<=0} {
-		set dscale(width) 1
-	    }
+	    $current(frame) get histogram $dscale(xdata) $dscale(ydata)
 
 	    # we seem to need to do this so that the min/max values are known
 	    blt::vector expr min($dscale(ydata))
 	    blt::vector expr max($dscale(ydata))
 
-	    $dscale(hist) element configure bar1 -hide no \
-		-barwidth $dscale(width)
+ 	    $dscale(hist) element configure bar1 -hide no
 
-	    set dscale(xmin) [blt::vector expr min($dscale(xdata))]
-	    set dscale(xmax) [blt::vector expr max($dscale(xdata))]
-	    set stepsize [format "%.4g" [expr ($dscale(xmax)-$dscale(xmin))/4.]]
+	    set stepsize [format "%.4g" \
+			      [expr ($dscale(minmin)-$dscale(minmax))/4.]]
 	    $dscale(hist) xaxis configure -hide no -stepsize $stepsize
 	    $dscale(hist) yaxis configure -hide no -min 1
 
@@ -561,21 +550,17 @@ proc ScaleXAxisDialog {} {
     switch -- $scale(xaxis) { 
 	full {
 	    $dscale(hist) xaxis configure \
-		-min [expr $dscale(xmin)-$dscale(width)] \
-		-max [expr $dscale(xmax)+$dscale(width)]
+		-min [expr $dscale(minmin)-$dscale(width)] \
+		-max [expr $dscale(minmax)+$dscale(width)]
 	}
 	current {
-	    set diff [expr $dscale(max)-$dscale(min)]
-	    set per .25
-	    set a [expr $dscale(min)-($diff*$per)]
-	    if {$a <= $dscale(minmin)} {
-		set a [expr $dscale(xmin)-$dscale(width)]
-	    }
-	    set b [expr $dscale(max)+($diff*$per)]
-	    if {$b >= $dscale(minmax)} {
-		set b [expr $dscale(xmax)+$dscale(width)]
+	    if {[expr abs($dscale(max)-$dscale(min)) > 0]} {
+		set diff [expr $dscale(max)-$dscale(min)]
+		set per .10
+		set a [expr $dscale(min)-($diff*$per)]
+		set b [expr $dscale(max)+($diff*$per)]
+		$dscale(hist) xaxis configure -min $a -max $b
 	    }
-	    $dscale(hist) xaxis configure -min $a -max $b
 	}
     }
 }
diff --git a/src/skyview.tcl b/src/skyview.tcl
index 2441d8a..4065f52 100644
--- a/src/skyview.tcl
+++ b/src/skyview.tcl
@@ -58,17 +58,57 @@ proc SkyViewDialog {} {
 
     menu $var(mb).survey
     $var(mb) add cascade -label Survey -menu $var(mb).survey
-    $var(mb).survey add radiobutton -label {SDSSi} \
+    $var(mb).survey add cascade -label {Optical} \
+	-menu $var(mb).survey.opt
+    $var(mb).survey add cascade -label {Infrared} \
+	-menu $var(mb).survey.ir
+    $var(mb).survey add cascade -label {CMB} \
+	-menu $var(mb).survey.cmb
+
+    set f $var(mb).survey.opt
+    menu $f
+    $f add radiobutton -label {SDSSi} \
 	-variable ${varname}(survey) -value sdssi
-    $var(mb).survey add radiobutton -label {SDSSr} \
+    $f add radiobutton -label {SDSSr} \
 	-variable ${varname}(survey) -value sdssr
-    $var(mb).survey add radiobutton -label {SDSSg} \
+    $f add radiobutton -label {SDSSg} \
 	-variable ${varname}(survey) -value sdssg
-    $var(mb).survey add radiobutton -label {SDSSu} \
+    $f add radiobutton -label {SDSSu} \
 	-variable ${varname}(survey) -value sdssu
-    $var(mb).survey add radiobutton -label {SDSSz} \
+    $f add radiobutton -label {SDSSz} \
 	-variable ${varname}(survey) -value sdssz
 
+    set f $var(mb).survey.ir
+    menu $f
+    $f add radiobutton -label {WISE 3.4} \
+	-variable ${varname}(survey) -value wise3.4
+    $f add radiobutton -label {WISE 4.6} \
+	-variable ${varname}(survey) -value wise4.6
+    $f add radiobutton -label {WISE 12} \
+	-variable ${varname}(survey) -value wise12
+    $f add radiobutton -label {WISE 22} \
+	-variable ${varname}(survey) -value wise22
+
+    set f $var(mb).survey.cmb
+    menu $f
+    $f add radiobutton -label {WMAP Ka} \
+	-variable ${varname}(survey) -value wmapka
+    $f add radiobutton -label {WMAP K} \
+	-variable ${varname}(survey) -value wmapk
+    $f add radiobutton -label {WMAP Q} \
+	-variable ${varname}(survey) -value wmapq
+    $f add radiobutton -label {WMAP V} \
+	-variable ${varname}(survey) -value wmapv
+    $f add radiobutton -label {WMAP W} \
+	-variable ${varname}(survey) -value wmapw
+    $f add separator
+    $f add radiobutton -label {COBE DIRBE/AAM} \
+	-variable ${varname}(survey) -value cobeaam
+    $f add radiobutton -label {COBE DIRBE/ZSMA} \
+	-variable ${varname}(survey) -value cobezsma
+    $f add radiobutton -label {COBE DIRBE (Old)} \
+	-variable ${varname}(survey) -value cobe
+
     IMGSVRUpdate $varname 1
 }
 
@@ -129,11 +169,22 @@ proc SkyViewExec {varname} {
     set rr [expr ($ww+$hh)/2.]
 
     # query
-    set var(query) "VCOORD=$xx,$yy&SURVEY=$var(survey)&SFACTR=$rr&RETURN=FITS"
-#    set var(query) "VCOORD=$xx,$yy&SURVEY=$var(survey)&SFACTR=$rr"
-#    set var(query) "VCOORD=$xx,$yy&SURVEY=$var(survey)&PIXELX=$var(width)&PIXELY=$var(height)"
-    set var(url) "http://skys.gsfc.nasa.gov/cgi-bin/images"
-#    set var(url) "http://skys.gsfc.nasa.gov/cgi-bin/pskcall"
+    switch $var(survey) {
+	wmapka -
+	wmapk -
+	wmapq -
+	wmapv -
+	wmapw -
+	cobeaam -
+	cobezsma -
+	cobe {
+	    set var(query) [http::formatQuery Position $xx,$yy Survey $var(survey) Return FITS]
+	}
+	default {
+	    set var(query) [http::formatQuery Position $xx,$yy Survey $var(survey) Size $ww,$hh Return FITS]
+	}
+    }
+    set var(url) "http://skyview.gsfc.nasa.gov/cgi-bin/images"
 
     IMGSVRLoad $varname
 }
diff --git a/src/source.tcl b/src/source.tcl
index b15335d..72dd534 100644
--- a/src/source.tcl
+++ b/src/source.tcl
@@ -35,7 +35,6 @@ source $ds9(root)/src/catsym.tcl
 source $ds9(root)/src/catvot.tcl
 source $ds9(root)/src/centroid.tcl
 source $ds9(root)/src/circle.tcl
-source $ds9(root)/src/circle3d.tcl
 source $ds9(root)/src/colorbar.tcl
 source $ds9(root)/src/comm.tcl
 source $ds9(root)/src/command.tcl
@@ -56,6 +55,7 @@ source $ds9(root)/src/epanda.tcl
 source $ds9(root)/src/error.tcl
 source $ds9(root)/src/eso.tcl
 source $ds9(root)/src/examine.tcl
+source $ds9(root)/src/export.tcl
 source $ds9(root)/src/external.tcl
 source $ds9(root)/src/fits.tcl
 source $ds9(root)/src/first.tcl
@@ -70,12 +70,15 @@ source $ds9(root)/src/hvform.tcl
 source $ds9(root)/src/hvsup.tcl
 source $ds9(root)/src/iis.tcl
 source $ds9(root)/src/imexam.tcl
+source $ds9(root)/src/import.tcl
 source $ds9(root)/src/imgsvr.tcl
 source $ds9(root)/src/info.tcl
 source $ds9(root)/src/layout.tcl
 source $ds9(root)/src/line.tcl
 source $ds9(root)/src/magnifier.tcl
 source $ds9(root)/src/marker.tcl
+source $ds9(root)/src/markeranalysisplot2d.tcl
+source $ds9(root)/src/markeranalysisplot3d.tcl
 source $ds9(root)/src/markerbase.tcl
 source $ds9(root)/src/markerbaseannulus.tcl
 source $ds9(root)/src/markerbaseannulusrect.tcl
@@ -83,7 +86,6 @@ source $ds9(root)/src/markerbasecenter.tcl
 source $ds9(root)/src/markerbaseline.tcl
 source $ds9(root)/src/markerbasepanda.tcl
 source $ds9(root)/src/markerbasepandarect.tcl
-source $ds9(root)/src/markerbaserect.tcl
 source $ds9(root)/src/markerdialog.tcl
 source $ds9(root)/src/mask.tcl
 source $ds9(root)/src/manalysis.tcl
@@ -118,7 +120,8 @@ source $ds9(root)/src/rgb.tcl
 source $ds9(root)/src/ruler.tcl
 source $ds9(root)/src/samp.tcl
 source $ds9(root)/src/sao.tcl
-source $ds9(root)/src/saveas.tcl
+source $ds9(root)/src/saveimage.tcl
+source $ds9(root)/src/savempeg.tcl
 source $ds9(root)/src/scale.tcl
 source $ds9(root)/src/skyview.tcl
 source $ds9(root)/src/slider.tcl
diff --git a/src/stdfbox.tcl b/src/stdfbox.tcl
index 9782e36..1b4f35b 100644
--- a/src/stdfbox.tcl
+++ b/src/stdfbox.tcl
@@ -62,18 +62,6 @@ proc InitDialogBox {} {
 			      [list {ARR} {*.arr}] \
 			  ]
 
-    global imagefbox
-    set imagefbox(file) {}
-    set imagefbox(types) [list \
-			      [list {GIF} {*.gif}] \
-			      [list {JPEG} {*.jpeg}] \
-			      [list {JPEG} {*.jpg}] \
-			      [list {TIFF} {*.tiff}] \
-			      [list {TIFF} {*.tif}] \
-			      [list {PNG} {*.png}] \
-			      [list {PPM} {*.ppm}] \
-			     ]
-
     global pixelfbox
     set pixelfbox(file) {ds9.pix}
     set pixelfbox(types) [list \
@@ -225,10 +213,17 @@ proc InitDialogBox {} {
 				[list {HTML} {*.htm}] \
 			       ]
 
-    global saveimagefbox
-    set saveimagefbox(file) {ds9}
-    set saveimagefbox(types) [list \
-				  ]
+    global wcsfbox
+    set wcsfbox(file) {ds9.wcs}
+    set wcsfbox(types) [list \
+			    [list {WCS} {*.wcs}] \
+			    ]
+
+    global backupfbox
+    set backupfbox(file) {ds9.bck}
+    set backupfbox(types) [list \
+			       [list {BCK} {*.bck}] \
+			      ]
 
     global savefitsfbox
     set savefitsfbox(file) {ds9.fits}
@@ -245,23 +240,121 @@ proc InitDialogBox {} {
 				 [list {FITS} {*.fz}] \
 				]
 
+    global importfbox
+    set importfbox(file) {}
+    set importfbox(types) [list \
+			      [list {GIF} {*.gif}] \
+			      [list {JPEG} {*.jpeg}] \
+			      [list {JPEG} {*.jpg}] \
+			      [list {TIFF} {*.tiff}] \
+			      [list {TIFF} {*.tif}] \
+			      [list {PNG} {*.png}] \
+			      [list {PPM} {*.ppm}] \
+			     ]
+
+    global exportfbox
+    set exportfbox(file) {ds9}
+    set exportfbox(types) [list \
+				  ]
+
+    global saveimagefbox
+    set saveimagefbox(file) {ds9}
+    set saveimagefbox(types) [list \
+				  ]
+
     global savempegfbox
-    set savempegfbox(file) {ds9.mpg}
+    set savempegfbox(file) {ds9.mpeg}
     set savempegfbox(types) [list \
 				 [list {MPEG} {*.mpeg}] \
 				 [list {MPEG} {*.mpg}] \
 				]
-    global wcsfbox
-    set wcsfbox(file) {ds9.wcs}
-    set wcsfbox(types) [list \
-			    [list {WCS} {*.wcs}] \
-			    ]
+}
 
-    global backupfbox
-    set backupfbox(file) {ds9.bck}
-    set backupfbox(types) [list \
-			       [list {BCK} {*.bck}] \
-			      ]
+proc ExtToFormat {fn} {
+    switch -- [file extension $fn] {
+	.fits -
+	.fit -
+	.fts -
+	.fitz -
+	.ftz -
+	.fz {return fits}
+	.gif -
+	.giff {return gif}
+	.jpg -
+	.jpeg {return jpeg}
+	.tif -
+	.tiff {return tiff}
+	.png {return png}
+	.ppm {return ppm}
+	.mpg -
+	.mpeg {return mpeg}
+    }
+}
+
+proc FormatToFBox {format} {
+    switch $format {
+	fits {
+	    return \
+		[list \
+		     [list {FITS} {*.fits}] \
+		     [list {FITS} {*.fit}] \
+		     [list {FITS} {*.fts}] \
+		     [list {FITS} {*.fits.gz}] \
+		     [list {FITS} {*.fits.bz2}] \
+		     [list {FITS} {*.fits.Z}] \
+		     [list {FITS} {*.fits.z}] \
+		     [list {FITS} {*.fitz}] \
+		     [list {FITS} {*.ftz}] \
+		     [list {FITS} {*.fz}] \
+		     [list [::msgcat::mc {All}] {*}] \
+		    ]
+	}
+	gif {
+	    return \
+		[list \
+		     [list {GIF} {*.gif}] \
+		     [list [::msgcat::mc {All}] {*}] \
+		    ]
+	}
+	jpeg {
+	    return \
+		[list \
+		     [list {JPEG} {*.jpeg}] \
+		     [list {JPEG} {*.jpg}] \
+		     [list [::msgcat::mc {All}] {*}] \
+		    ]
+	}
+	tiff {
+	    return \
+		[list \
+		     [list {TIFF} {*.tiff}] \
+		     [list {TIFF} {*.tif}] \
+		     [list [::msgcat::mc {All}] {*}] \
+		    ]
+	}
+	png {
+	    return \
+		[list \
+		     [list {PNG} {*.png}] \
+		     [list [::msgcat::mc {All}] {*}] \
+		    ]
+	}
+	ppm	{
+	    return \
+		[list \
+		     [list {PPM} {*.ppm}] \
+		     [list [::msgcat::mc {All}] {*}] \
+		    ]
+	}
+	mpeg {
+	    return \
+		[list \
+		     [list {MPEG} {*.mpeg}] \
+		     [list {MPEG} {*.mpg}] \
+		     
+		 ]
+	}
+    }
 }
 
 # used by backup
diff --git a/src/util.tcl b/src/util.tcl
index cdb7d2c..c8b0c69 100644
--- a/src/util.tcl
+++ b/src/util.tcl
@@ -504,6 +504,18 @@ proc FromYesNo {value} {
     }
 }
 
+proc ProcessRealizeDS9 {} {
+    global ds9
+    global current
+
+    # this can really slow down scripts so use ds9(last)
+    # to remember last update
+    if {$ds9(last) != $current(frame)} {
+	RealizeDS9
+	set ds9(last) $current(frame)
+    }
+}
+
 proc RealizeDS9 {} {
     # this has to come first, to realize the canvas
     global debug
@@ -907,6 +919,19 @@ proc PrefsResetDefaultFont {} {
     set pds9(font,size) [PixelsToPoints [font configure TkDefaultFont -size]]
     set pds9(font,weight) [font configure TkDefaultFont -weight]
     set pds9(font,slant) [font configure TkDefaultFont -slant]
+
+    FontMenuButtonCmd pds9 font {}
+}
+
+proc PrefsResetDefaultTextFont {} {
+    global pds9
+
+    set pds9(text,font) courier
+    set pds9(text,font,size) [PixelsToPoints [font actual TkFixedFont -size]]
+    set pds9(text,font,weight) [font actual TkFixedFont -weight]
+    set pds9(text,font,slant) [font actual TkFixedFont -slant]
+
+    FontMenuButtonCmd pds9 text,font {}
 }
 
 proc PrefsBgColor {} {
@@ -1487,7 +1512,7 @@ proc ProcessSourceCmd {varname iname} {
 
     # we need to be realized
     # you never know what someone will try to do
-    RealizeDS9
+    ProcessRealizeDS9
 
     set fn [lindex $var $i]
     uplevel #0 "source $fn"
diff --git a/src/vector.tcl b/src/vector.tcl
index 7a379d9..2cbc1c7 100644
--- a/src/vector.tcl
+++ b/src/vector.tcl
@@ -33,6 +33,13 @@ proc VectorDialog {varname} {
     # base
     MarkerBaseDialog $varname
 
+    # analysis
+    $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+    menu $var(mb).analysis
+
+    # plot2d
+    MarkerAnalysisPlot2dDialog $varname
+
     # init
     VectorDistCB $varname
 
@@ -147,8 +154,6 @@ proc VectorDistCB {varname {dummy {}}} {
 	puts stderr "VectorDistCB"
     }
 
-    MarkerBaseDistCB $varname
-
     set var(dist) [$var(frame) get marker $var(id) vector length \
 		       $var(dcoord) $var(dformat)]
 }
diff --git a/src/xpa.tcl b/src/xpa.tcl
index ffc045b..3c78ddf 100644
--- a/src/xpa.tcl
+++ b/src/xpa.tcl
@@ -171,6 +171,11 @@ proc CreateXPA {} {
 	XPASendSTSCI {} {} \
 	XPARcvdSTSCI {} "fillbuf=false"
 
+    xpacmdadd $xpa export \
+	{} \
+	{} {} {} \
+	XPARcvdExport {} "fillbuf=false"
+
     xpacmdadd $xpa exit \
 	{} \
 	{} {} {} \
@@ -226,6 +231,16 @@ proc CreateXPA {} {
 	XPASendImexam {} {} \
 	{} {} {}
 
+    xpacmdadd $xpa image \
+	{} \
+	{} {} {} \
+	XPARcvdImport {} "fillbuf=false"
+
+    xpacmdadd $xpa import \
+	{} \
+	{} {} {} \
+	XPARcvdImport {} "fillbuf=false"
+
     xpacmdadd $xpa lock \
 	{} \
 	XPASendLock {} {} \
@@ -369,7 +384,7 @@ proc CreateXPA {} {
     xpacmdadd $xpa savefits \
 	{} \
 	{} {} {} \
-	XPARcvdSaveFits {} "fillbuf=false"
+	XPARcvdExport {} "fillbuf=false"
 
     xpacmdadd $xpa savempeg \
 	{} \
@@ -758,6 +773,13 @@ proc XPARcvdSTSCI {xpa cdata param buf len} {
     XPACatchError $xpa
 }
 
+proc XPARcvdExport {xpa cdata param buf len} {
+    XPADebug "XPARcvdExport" $param
+    InitError xpa
+    catch {set i 0; ProcessExportCmd param i}
+    XPACatchError $xpa
+}
+
 proc XPARcvdExit {xpa cdata param buf len} {
     XPADebug "XPARcvdExit" $param
     InitError xpa
@@ -765,6 +787,7 @@ proc XPARcvdExit {xpa cdata param buf len} {
     XPACatchError $xpa
 }
 
+
 proc XPASendFile {xpa cdata param} {
     InitError xpa
     catch {ProcessSendFileCmd xpasetbuf $xpa $param}
@@ -882,6 +905,13 @@ proc XPASendImexam {xpa cdata param} {
     XPACatchError $xpa
 }
 
+proc XPARcvdImport {xpa cdata param buf len} {
+    XPADebug "XPARcvdImport" $param
+    InitError xpa
+    catch {set i 0; ProcessImportCmd param i}
+    XPACatchError $xpa
+}
+
 proc XPASendLock {xpa cdata param} {
     InitError xpa
     catch {ProcessSendLockCmd xpasetbuf $xpa $param}
@@ -1191,13 +1221,6 @@ proc XPARcvdSaveImage {xpa cdata param buf len} {
     XPACatchError $xpa
 }
 
-proc XPARcvdSaveFits {xpa cdata param buf len} {
-    XPADebug "XPARcvdSaveFits" $param
-    InitError xpa
-    catch {set i 0; ProcessSaveFitsCmd param i}
-    XPACatchError $xpa
-}
-
 proc XPARcvdSaveMPEG {xpa cdata param buf len} {
     XPADebug "XPARcvdSaveMPEG" $param
     InitError xpa
diff --git a/tests/all.sh b/tests/all.sh
index 369460e..8c98d24 100755
--- a/tests/all.sh
+++ b/tests/all.sh
@@ -5,6 +5,7 @@ rice.sh
 hcompress.sh
 gzip.sh
 plio.sh
+import.sh
 #shared.sh
 xpa.sh
 command.sh
diff --git a/tests/backup.sh b/tests/backup.sh
index ef5ffbc..5388d5c 100755
--- a/tests/backup.sh
+++ b/tests/backup.sh
@@ -19,905 +19,4 @@ if [ "$1" = "old" -o -z "$1" ]; then
     done
 fi
 
-if [ `xpaaccess ds9` = no ]; then
-    ds9&
-
-    i=1
-    while [ "$i" -le 30 ]
-	do
-	sleep 2
-	if [ `xpaaccess ds9` = yes ]; then
-	    break
-	fi
-
-	i=`expr $i + 1`
-    done
-fi
-
-bb9 () {
-    if [ `xpaaccess bb9` = no ]; then
-	ds9 -title bb9&
-
-	i=1
-	while [ "$i" -le 30 ]
-	do
-	    sleep 2
-	    if [ `xpaaccess bb9` = yes ]; then
-		break
-	    fi
-
-	    i=`expr $i + 1`
-	done
-    fi
-}
-
-testit () {
-    echo $1
-#    rm -rf $TEMP/foo.bck.dir
-    xpaset -p ds9 backup $TEMP/foo.bck
-    xpaset -p bb9 restore $TEMP/foo.bck
-    sleep .5
-#    xpaset -p bb9 frame delete all
-}
-
-bb9
-
-# load default image
-rm -rf $TEMP/foo.bck*
-xpaset -p ds9 scale zscale
-xpaset -p ds9 file img16.fits
-
-if [ "$1" = "2mass" -o -z "$1" ]; then
-tt="2mass"
-xpaset -p ds9 2mass survey h
-testit $tt
-xpaset -p ds9 2mass size 30 30 arcsec
-testit $tt
-xpaset -p ds9 2mass save no
-testit $tt
-xpaset -p ds9 2mass frame new
-testit $tt
-xpaset -p ds9 2mass update frame
-testit $tt
-xpaset -p ds9 2mass m1
-testit $tt
-xpaset -p ds9 2mass name m51
-testit $tt
-xpaset -p ds9 2mass name {}
-testit $tt
-xpaset -p ds9 2mass coord 00:42:44.404 +41:16:08.78 sexagesimal
-testit $tt
-xpaset -p ds9 2mass update frame
-testit $tt
-xpaset -p ds9 mode crosshair
-testit $tt
-xpaset -p ds9 2mass update crosshair
-testit $tt
-xpaset -p ds9 mode pointer
-xpaset -p ds9 frame delete
-xpaset -p ds9 frame delete
-xpaset -p ds9 frame delete
-xpaset -p ds9 frame delete
-xpaset -p ds9 frame delete
-xpaset -p ds9 frame delete
-xpaset -p ds9 single
-testit $tt
-fi
-
-if [ "$1" = "3d" -o -z "$1" ]; then
-tt="3d"
-xpaset -p ds9 3d
-xpaset -p ds9 3d viewpoint 45 45
-xpaset -p ds9 3d method aip
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-fi
-
-if [ "$1" = "align" -o -z "$1" ]; then
-tt="align"
-xpaset -p ds9 align
-testit $tt
-xpaset -p ds9 frame reset
-testit $tt
-fi
-
-if [ "$1" = "array" -o -z "$1" ]; then
-tt="array"
-cat array.arr | xpaset ds9 array new 'array.arr[dim=512,bitpix=-32,arch=bigendian]'
-testit $tt
-xpaset -p ds9 frame clear
-cat array.arr | xpaset ds9 array 'array.arr[dim=512,bitpix=-32,arch=bigendian]'
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-fi
-
-if [ "$1" = "bin" -o -z "$1" ]; then
-tt="bin"
-xpaset -p ds9 file new table.fits
-xpaset -p ds9 single
-testit $tt
-xpaset -p ds9 bin factor 4
-testit $tt
-xpaset -p ds9 bin factor 8 8
-testit $tt
-xpaset -p ds9 scale log
-testit $tt
-xpaset -p ds9 scale minmax
-testit $tt
-xpaset -p ds9 bin buffersize 1024
-testit $tt
-xpaset -p ds9 bin filter 'circle(4096,4096,200)'
-testit $tt
-#    xpaset -p bb9 exit
-#    bb9
-xpaset -p ds9 bin filter ''
-testit $tt
-xpaset -p ds9 bin cols rawx rawy
-testit $tt
-xpaset -p ds9 bin about center
-testit $tt
-xpaset -p ds9 bin colsz x y pha
-testit $tt
-xpaset -p ds9 bin depth 10
-testit $tt
-xpaset -p ds9 bin about 4096 4096
-testit $tt
-xpaset -p ds9 bin depth 1
-testit $tt
-xpaset -p ds9 bin function sum
-testit $tt
-xpaset -p ds9 bin to fit
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-fi
-
-if [ "$1" = "catalog" -o -z "$1" ]; then
-tt="catalog"
-xpaset -p ds9 catalog cds 2mass
-testit $tt
-
-xpaset -p ds9 catalog clear
-xpaset -p ds9 catalog close
-xpaset -p ds9 catalog cds "I/284"
-testit $tt
-
-xpaset -p ds9 catalog clear
-xpaset -p ds9 catalog close
-xpaset -p ds9 catalog load sb ds9.cat
-testit $tt
-
-xpaset -p ds9 catalog clear
-xpaset -p ds9 catalog close
-xpaset -p ds9 catalog cds 2mass
-xpaset -p ds9 raise
-testit $tt
-xpaset -p ds9 catalog symbol condition "\$Jmag>15"
-testit $tt
-xpaset -p ds9 catalog symbol shape "{boxcircle point}"
-testit $tt
-xpaset -p ds9 catalog symbol color red
-testit $tt
-xpaset -p ds9 catalog symbol condition "{}"
-testit $tt
-xpaset -p ds9 catalog symbol color green
-testit $tt
-xpaset -p ds9 catalog symbol add
-testit $tt
-xpaset -p ds9 catalog symbol remove
-testit $tt
-xpaset -p ds9 catalog symbol load ds9.sym
-testit $tt
-xpaset -p ds9 catalog symbol save foo.sym
-testit $tt
-xpaset -p ds9 catalog name m51
-testit $tt
-xpaset -p ds9 catalog coordinate 202.48 47.21 fk5
-testit $tt
-xpaset -p ds9 catalog size 22 22 arcmin
-testit $tt
-xpaset -p ds9 catalog retrieve
-testit $tt
-xpaset -p ds9 catalog save foo.cat
-testit $tt
-xpaset -p ds9 catalog filter "\$Jmag>15"
-testit $tt
-xpaset -p ds9 catalog filter load ds9.flt
-testit $tt
-xpaset -p ds9 catalog retrieve
-testit $tt
-xpaset -p ds9 catalog cancel
-xpaset -p ds9 catalog server sao
-xpaset -p ds9 catalog sort "Jmag" incr
-testit $tt
-xpaset -p ds9 catalog maxrows 3000
-testit $tt
-xpaset -p ds9 catalog allcols
-testit $tt
-xpaset -p ds9 catalog allrows
-testit $tt
-xpaset -p ds9 catalog ra "RAJ2000"
-testit $tt
-xpaset -p ds9 catalog dec "DEJ2000"
-testit $tt
-xpaset -p ds9 catalog hide
-testit $tt
-xpaset -p ds9 catalog show
-testit $tt
-xpaset -p ds9 catalog panto no
-testit $tt
-xpaset -p ds9 catalog clear
-xpaset -p ds9 catalog close
-rm -f foo.cat
-testit $tt
-fi
-
-if [ "$1" = "contour" -o -z "$1" ]; then
-tt="contour"
-xpaset -p ds9 contour yes
-testit $tt
-
-xpaset -p ds9 contour clear
-xpaset -p ds9 contour yes
-testit $tt
-
-xpaset -p ds9 contour load ds9.con wcs fk5 red 2
-testit $tt
-
-xpaset -p ds9 contour save foo.con wcs fk5
-xpaset -p ds9 contour clear
-xpaset -p ds9 contour yes
-testit $tt
-
-xpaset -p ds9 contour convert
-testit $tt
-xpaset -p ds9 regions delete all
-testit $tt
-xpaset -p ds9 contour loadlevels ds9.lev
-testit $tt
-xpaset -p ds9 contour savelevels foo.lev
-
-xpaset -p ds9 contour clear
-xpaset -p ds9 contour yes
-testit $tt
-xpaset -p ds9 contour copy
-xpaset -p ds9 contour paste wcs fk5 red 2
-testit $tt
-
-xpaset -p ds9 contour clear
-xpaset -p ds9 contour yes
-testit $tt
-xpaset -p ds9 contour color yellow
-testit $tt
-xpaset -p ds9 contour width 2
-testit $tt
-xpaset -p ds9 contour smooth 5
-testit $tt
-xpaset -p ds9 contour method block
-testit $tt
-xpaset -p ds9 contour nlevels 10
-testit $tt
-xpaset -p ds9 contour width 2
-testit $tt
-xpaset -p ds9 contour scale sqrt
-testit $tt
-xpaset -p ds9 contour log exp 1000
-testit $tt
-xpaset -p ds9 contour mode zscale
-testit $tt
-xpaset -p ds9 contour limits 1 100
-testit $tt
-xpaset -p ds9 contour levels "{1 10 100 1000}"
-testit $tt
-
-xpaset -p ds9 contour clear
-rm -f foo.con foo.lev
-testit $tt
-fi
-
-if [ "$1" = "cmap" -o -z "$1" ]; then
-tt="cmap"
-xpaset -p ds9 cmap Heat
-testit $tt
-xpaset -p ds9 cmap file ds9.sao
-testit $tt
-xpaset -p ds9 cmap invert yes
-testit $tt
-xpaset -p ds9 cmap value 5 .2
-testit $tt
-xpaset -p ds9 cmap Grey
-testit $tt
-fi
-
-if [ "$1" = "colorbar" -o -z "$1" ]; then
-tt="colorbar"
-xpaset -p ds9 colorbar yes
-testit $tt
-xpaset -p ds9 colorbar vertical
-testit $tt
-xpaset -p ds9 colorbar horizontal
-testit $tt
-xpaset -p ds9 colorbar numerics no
-testit $tt
-xpaset -p ds9 colorbar numerics yes
-testit $tt
-xpaset -p ds9 colorbar space value
-testit $tt
-xpaset -p ds9 colorbar space distance
-testit $tt
-xpaset -p ds9 colorbar font times
-testit $tt
-xpaset -p ds9 colorbar fontsize 30
-testit $tt
-xpaset -p ds9 colorbar fontstyle bold
-testit $tt
-xpaset -p ds9 colorbar font helvetica
-testit $tt
-xpaset -p ds9 colorbar fontsize 10
-testit $tt
-xpaset -p ds9 colorbar fontstyle normal
-testit $tt
-xpaset -p ds9 colorbar size 30
-testit $tt
-xpaset -p ds9 colorbar ticks 9
-testit $tt
-xpaset -p ds9 colorbar size 20
-testit $tt
-xpaset -p ds9 colorbar ticks 11
-testit $tt
-fi
-
-if [ "$1" = "crosshair" -o -z "$1" ]; then
-tt="crosshair"
-xpaset -p ds9 mode crosshair
-testit $tt
-xpaset -p ds9 crosshair 13:29:55.287 +47:11:37.73 wcs fk5
-testit $tt
-xpaset -p ds9 mode pointer
-testit $tt
-fi
-
-if [ "$1" = "datacube" -o -z "$1" ]; then
-tt="datacube"
-xpaset -p ds9 file new hst.fits
-testit $tt
-xpaset -p ds9 datacube 2
-testit $tt
-xpaset -p ds9 datacube interval .5
-testit $tt
-xpaset -p ds9 datacube axis 2
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-fi
-
-if [ "$1" = "fits" -o -z "$1" ]; then
-tt="fits"
-
-cat img16.fits | xpaset ds9 fits new 
-testit $tt
-xpaset -p ds9 frame delete
-
-cat table.fits | xpaset ds9 fits
-testit $tt
-fi
-
-if [ "$1" = "frame" -o -z "$1" ]; then
-tt="frame"
-xpaset -p ds9 frame new
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-xpaset -p ds9 frame new rgb
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-xpaset -p ds9 frame new 3d
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-xpaset -p ds9 file img16.fits
-testit $tt
-fi
-
-if [ "$1" = "grid" -o -z "$1" ]; then
-tt="grid"
-xpaset -p ds9 grid yes
-testit $tt
- 
-xpaset -p ds9 grid type analysis
-xpaset -p ds9 grid system wcs
-xpaset -p ds9 grid sky fk5
-xpaset -p ds9 grid skyformat degrees
-testit $tt
-
-xpaset -p ds9 grid grid yes
-xpaset -p ds9 grid grid color red
-xpaset -p ds9 grid grid width 2
-xpaset -p ds9 grid grid style 1
-xpaset -p ds9 grid grid gap1 .01
-xpaset -p ds9 grid grid gap2 .01
-testit $tt
- 
-xpaset -p ds9 grid axes yes
-xpaset -p ds9 grid axes color red
-xpaset -p ds9 grid axes width 2
-xpaset -p ds9 grid axes style 1
-xpaset -p ds9 grid axes type exterior
-testit $tt
- 
-xpaset -p ds9 grid format1 d.2
-xpaset -p ds9 grid format2 d.2
-testit $tt
-
-xpaset -p ds9 grid tick yes
-xpaset -p ds9 grid tick color red
-xpaset -p ds9 grid tick width 2
-xpaset -p ds9 grid tick style 1
-testit $tt
-
-xpaset -p ds9 grid border yes
-xpaset -p ds9 grid border color red
-xpaset -p ds9 grid border width 2
-xpaset -p ds9 grid border style 1
-testit $tt
-
-xpaset -p ds9 grid numlab yes
-xpaset -p ds9 grid numlab font courier
-xpaset -p ds9 grid numlab fontstyle bold
-xpaset -p ds9 grid numlab fontsize 12
-xpaset -p ds9 grid numlab color red
-xpaset -p ds9 grid numlab gap1 10
-xpaset -p ds9 grid numlab gap2 10
-xpaset -p ds9 grid numlab type exterior
-xpaset -p ds9 grid numlab vertical yes
-testit $tt
-
-xpaset -p ds9 grid title yes
-xpaset -p ds9 grid title text {Hello World}
-xpaset -p ds9 grid title def yes
-xpaset -p ds9 grid title gap 10
-xpaset -p ds9 grid title font courier
-xpaset -p ds9 grid title fontstyle bold
-xpaset -p ds9 grid title fontsize 12
-xpaset -p ds9 grid title color red
-testit $tt
-
-xpaset -p ds9 grid textlab yes
-xpaset -p ds9 grid textlab text1 {Hello World}
-xpaset -p ds9 grid textlab def1 yes
-xpaset -p ds9 grid textlab gap1 10
-xpaset -p ds9 grid textlab text2 {Hello World}
-xpaset -p ds9 grid textlab def2 yes
-xpaset -p ds9 grid textlab gap2 10
-xpaset -p ds9 grid textlab font courier
-xpaset -p ds9 grid textlab fontstyle bold
-xpaset -p ds9 grid textlab fontsize 12
-xpaset -p ds9 grid textlab color red
-testit $tt
-
-xpaset -p ds9 grid reset
-xpaset -p ds9 grid no
-testit $tt
-fi
-
-if [ "$1" = "height" -o -z "$1" ]; then
-tt="height"
-xpaset -p ds9 height 443
-testit $tt
-fi
-
-if [ "$1" = "lock" -o -z "$1" ]; then
-tt="lock"
-xpaset -p ds9 lock crosshair wcs
-testit $tt
-xpaset -p ds9 file new img16.fits
-testit $tt
-xpaset -p ds9 tile
-testit $tt
-xpaset -p ds9 mode crosshair
-testit $tt
-xpaset -p ds9 crosshair 13:29:56 +47:11:38 wcs fk5
-testit $tt
-xpaset -p ds9 mode pointer
-testit $tt
-xpaset -p ds9 frame delete
-xpaset -p ds9 single
-testit $tt
-fi
-
-if [ "$1" = "magnifier" -o -z "$1" ]; then
-tt="magnifier"
-xpaset -p ds9 magnifier color red
-testit $tt
-xpaset -p ds9 magnifier zoom 2
-testit $tt
-xpaset -p ds9 magnifier cursor no
-testit $tt
-xpaset -p ds9 magnifier regions no
-testit $tt
-xpaset -p ds9 magnifier color white
-xpaset -p ds9 magnifier zoom 4
-xpaset -p ds9 magnifier cursor yes
-xpaset -p ds9 magnifier regions yes
-testit $tt
-fi
-
-if [ "$1" = "match" -o -z "$1" ]; then
-tt="match"
-xpaset -p ds9 tile
-testit $tt
-xpaset -p ds9 file new img-32.fits
-testit $tt
-xpaset -p ds9 match frames wcs
-testit $tt
-xpaset -p ds9 match colorbars
-testit $tt
-xpaset -p ds9 match scales
-testit $tt
-xpaset -p ds9 match bin
-testit $tt
-xpaset -p ds9 single
-xpaset -p ds9 frame delete
-xpaset -p ds9 match frames image
-testit $tt
-fi
-
-if [ "$1" = "minmax" -o -z "$1" ]; then
-tt="minmax"
-xpaset -p ds9 minmax scan
-xpaset -p ds9 minmax mode scan
-xpaset -p ds9 minmax interval 10
-testit $tt
-fi
-
-if [ "$1" = "orient" -o -z "$1" ]; then
-tt="orient"
-xpaset -p ds9 orient none
-testit $tt
-xpaset -p ds9 orient x
-testit $tt
-xpaset -p ds9 orient y
-testit $tt
-xpaset -p ds9 orient xy
-testit $tt
-xpaset -p ds9 frame reset
-testit $tt
-fi
-
-if [ "$1" = "pan" -o -z "$1" ]; then
-tt="pan"
-xpaset -p ds9 pan 100 100 image
-testit $tt
-xpaset -p ds9 pan to 13:29:55.666 +47:12:16.29 wcs fk5
-testit $tt
-xpaset -p ds9 frame reset
-testit $tt
-fi
-
-if [ "$1" = "prefs" -o -z "$1" ]; then
-tt="prefs"
-xpaset -p ds9 file imgnan.fits
-testit $tt
-xpaset -p ds9 zoom to .5
-testit $tt
-xpaset -p ds9 prefs bgcolor black
-testit $tt
-xpaset -p ds9 prefs nancolor red
-testit $tt
-xpaset -p ds9 file img16.fits
-testit $tt
-xpaset -p ds9 prefs bgcolor white
-testit $tt
-xpaset -p ds9 prefs nancolor white
-testit $tt
-xpaset -p ds9 frame reset
-testit $tt
-fi
-
-if [ "$1" = "regions" -o -z "$1" ]; then
-tt="regions"
-xpaset -p ds9 regions delete all
-echo "physical;circle(957,1027,40) # tag=foo" | xpaset ds9 regions
-testit $tt
-
-echo "image; circle 100 100 20" | xpaset ds9 regions
-testit $tt
-echo "fk5; circle 13:29:55 47:11:50 .5'" | xpaset ds9 regions
-testit $tt
-echo "physical; ellipse 100 100 20 40" | xpaset ds9 regions
-testit $tt
-echo "box 100 100 20 40 25" | xpaset ds9 regions
-testit $tt
-echo "image; line 100 100 200 400" | xpaset ds9 regions
-testit $tt
-echo "physical; ruler 200 300 200 400" | xpaset ds9 regions
-testit $tt
-echo "image; text 100 100 # text={Hello, World}" | xpaset ds9 regions
-testit $tt
-echo "fk4; boxcircle point 13:29:55 47:11:50" | xpaset ds9 regions
-testit $tt
-xpaset -p ds9 regions delete all
-testit $tt
-
-xpaset -p ds9 regions load ds9.physical.reg
-testit $tt
-xpaset -p ds9 regions delete all
-testit $tt
-rm -f foo.reg
-
-xpaset -p ds9 regions command {circle 100 100 20}
-testit $tt
-xpaset -p ds9 regions delete all
-testit $tt
-fi
-
-if [ "$1" = "rgb" -o -z "$1" ]; then
-tt="rgb"
-xpaset -p ds9 rgb
-xpaset -p ds9 rgb green
-xpaset -p ds9 rgb channel blue
-xpaset -p ds9 rgb view blue off
-xpaset -p ds9 rgb system wcs
-xpaset -p ds9 rgb lock bin yes
-xpaset -p ds9 rgb lock scale yes
-xpaset -p ds9 rgb lock colorbar yes
-xpaset -p ds9 rgb lock slice no
-xpaset -p ds9 rgb lock smooth yes
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-fi
-
-if [ "$1" = "rotate" -o -z "$1" ]; then
-tt="rotate"
-xpaset -p ds9 rotate to 30
-testit $tt
-xpaset -p ds9 rotate 15
-testit $tt
-xpaset -p ds9 frame reset
-testit $tt
-fi
-
-if [ "$1" = "scale" -o -z "$1" ]; then
-tt="scale"
-xpaset -p ds9 scale minmax
-testit $tt
-xpaset -p ds9 scale linear
-testit $tt
-xpaset -p ds9 scale log
-testit $tt
-xpaset -p ds9 scale pow
-testit $tt
-xpaset -p ds9 scale sqrt
-testit $tt
-xpaset -p ds9 scale squared
-testit $tt
-xpaset -p ds9 scale histequ
-testit $tt
-xpaset -p ds9 scale log exp 1000
-testit $tt
-xpaset -p ds9 scale log exp 10000
-testit $tt
-xpaset -p ds9 scale linear
-testit $tt
-xpaset -p ds9 scale minmax
-testit $tt
-xpaset -p ds9 scale zscale
-testit $tt
-xpaset -p ds9 scale zmax
-testit $tt
-xpaset -p ds9 scale user
-testit $tt
-xpaset -p ds9 scale mode zscale
-testit $tt
-xpaset -p ds9 scale mode zmax
-testit $tt
-xpaset -p ds9 scale mode 95
-testit $tt
-xpaset -p ds9 scale mode minmax
-testit $tt
-xpaset -p ds9 scale limits 0 100
-testit $tt
-xpaset -p ds9 scale mode minmax
-testit $tt
-xpaset -p ds9 scale linear
-testit $tt
-xpaset -p ds9 scale zscale
-testit $tt
-xpaset -p ds9 scale datasec yes
-testit $tt
-fi
-
-if [ "$1" = "single" -o -z "$1" ]; then
-tt="single"
-xpaset -p ds9 file new hst.fits
-xpaset -p ds9 file new img16.fits
-testit $tt
-xpaset -p ds9 tile
-testit $tt
-xpaset -p ds9 tile yes
-testit $tt
-xpaset -p ds9 tile row
-testit $tt
-xpaset -p ds9 tile column
-testit $tt
-xpaset -p ds9 tile grid
-testit $tt
-xpaset -p ds9 single
-xpaset -p ds9 frame delete
-xpaset -p ds9 frame delete
-testit $tt
-fi
-
-if [ "$1" = "smooth" -o -z "$1" ]; then
-tt="smooth"
-xpaset -p ds9 smooth yes
-testit $tt
-xpaset -p ds9 smooth function tophat
-testit $tt
-xpaset -p ds9 smooth radius 5
-testit $tt
-xpaset -p ds9 smooth no
-testit $tt
-fi
-
-if [ "$1" = "view" -o -z "$1" ]; then
-tt="view"
-xpaset -p ds9 view layout vertical
-testit $tt
-xpaset -p ds9 view layout horizontal
-testit $tt
-xpaset -p ds9 view info no
-testit $tt
-xpaset -p ds9 view info yes
-testit $tt
-xpaset -p ds9 view panner no
-testit $tt
-xpaset -p ds9 view panner yes
-testit $tt
-xpaset -p ds9 view magnifier no
-testit $tt
-xpaset -p ds9 view magnifier yes
-testit $tt
-xpaset -p ds9 view buttons no
-testit $tt
-xpaset -p ds9 view buttons yes
-testit $tt
-xpaset -p ds9 view colorbar no
-testit $tt
-xpaset -p ds9 view colorbar yes
-testit $tt
-xpaset -p ds9 view graph horizontal yes
-testit $tt
-xpaset -p ds9 view graph horizontal no
-testit $tt
-xpaset -p ds9 view graph vertical yes
-testit $tt
-xpaset -p ds9 view graph vertical no
-testit $tt
-xpaset -p ds9 view filename no
-testit $tt
-xpaset -p ds9 view filename yes
-testit $tt
-xpaset -p ds9 view object no
-testit $tt
-xpaset -p ds9 view object yes
-testit $tt
-xpaset -p ds9 view minmax yes
-testit $tt
-xpaset -p ds9 view minmax no
-testit $tt
-xpaset -p ds9 view lowhigh yes
-testit $tt
-xpaset -p ds9 view lowhigh no
-testit $tt
-xpaset -p ds9 view frame no
-testit $tt
-xpaset -p ds9 view frame yes
-testit $tt
-xpaset -p ds9 view wcs no
-testit $tt
-xpaset -p ds9 view wcs yes
-testit $tt
-xpaset -p ds9 view wcsa yes
-testit $tt
-xpaset -p ds9 view wcsa no
-testit $tt
-xpaset -p ds9 view detector yes
-testit $tt
-xpaset -p ds9 view detector no
-testit $tt
-xpaset -p ds9 view amplifier yes
-testit $tt
-xpaset -p ds9 view amplifier no
-testit $tt
-xpaset -p ds9 view physical no
-testit $tt
-xpaset -p ds9 view physical yes
-testit $tt
-xpaset -p ds9 view image no
-testit $tt
-xpaset -p ds9 view image yes
-testit $tt
-
-xpaset -p ds9 frame new rgb
-testit $tt
-xpaset -p ds9 view red no
-testit $tt
-xpaset -p ds9 view red yes
-testit $tt
-xpaset -p ds9 view green no
-testit $tt
-xpaset -p ds9 view green yes
-testit $tt
-xpaset -p ds9 view blue no
-testit $tt
-xpaset -p ds9 view blue yes
-testit $tt
-xpaset -p ds9 frame delete
-testit $tt
-fi
-
-if [ "$1" = "wcs" -o -z "$1" ]; then
-tt="wcs"
-xpaset -p ds9 wcs wcs
-testit $tt
-xpaset -p ds9 wcs align yes
-testit $tt
-xpaset -p ds9 wcs system wcs
-testit $tt
-xpaset -p ds9 wcs sky galactic
-testit $tt
-xpaset -p ds9 wcs skyformat sexagesimal
-testit $tt
-xpaset -p ds9 wcs align no
-testit $tt
-xpaset -p ds9 wcs sky fk5
-testit $tt
-xpaset -p ds9 wcs skyformat degrees
-testit $tt
-xpaset -p ds9 wcs skyformat sexagesimal
-testit $tt
-xpaset -p ds9 wcs reset
-testit $tt
-fi
-
-if [ "$1" = "width" -o -z "$1" ]; then
-tt="width"
-xpaset -p ds9 width 600
-testit $tt
-fi
-
-if [ "$1" = "zscale" -o -z "$1" ]; then
-tt="zscale"
-xpaset -p ds9 zscale contrast .25
-testit $tt
-xpaset -p ds9 zscale sample 600
-testit $tt
-xpaset -p ds9 zscale line 120
-testit $tt
-fi
-
-if [ "$1" = "zoom" -o -z "$1" ]; then
-tt="zoom"
-xpaset -p ds9 zoom 2
-testit $tt
-xpaset -p ds9 zoom 2 4
-testit $tt
-xpaset -p ds9 zoom to 4
-testit $tt
-xpaset -p ds9 zoom to 2 4
-testit $tt
-xpaset -p ds9 zoom to fit
-testit $tt
-xpaset -p ds9 frame reset
-testit $tt
-fi
-
-xpaset -p ds9 exit
-xpaset -p bb9 exit
-
 echo "DONE"
diff --git a/tests/ciao.fk5.reg b/tests/ciao.fk5.reg
index 8e7ec41..7b43dd3 100644
--- a/tests/ciao.fk5.reg
+++ b/tests/ciao.fk5.reg
@@ -1,26 +1,26 @@
 # Region file format: CIAO version 1.0
-circle(13:29:56.891,+47:12:29.65,0.0660667')
--ellipse(13:29:55.941,+47:12:16.17,0.132133',0.0660667',45)
--rotbox(13:29:54.679,+47:12:03.80,0.264267',0.132133',45)
-polygon(13:29:53.543,+47:11:56.12,13:29:52.505,+47:11:56.56,13:29:52.462,+47:11:45.99,13:29:53.499,+47:11:45.55)
-annulus(13:29:58.365,+47:12:13.31,0.0330333',0.0660667')
-annulus(13:29:58.365,+47:12:13.31,0.0660667',0.0991')
-point(13:29:59.689,+47:12:00.68)
-point(13:29:58.442,+47:11:48.45)
-point(13:29:57.256,+47:11:37.88)
-point(13:30:00.120,+47:11:51.52)
-point(13:29:59.018,+47:11:41.47)
-point(13:29:57.955,+47:11:30.70)
-point(13:29:59.674,+47:11:33.61)
-pie(13:29:55.839,+47:11:24.59,0',0.04955',0,90)
-pie(13:29:55.839,+47:11:24.59,0',0.04955',90,180)
-pie(13:29:55.839,+47:11:24.59,0',0.04955',180,270)
-pie(13:29:55.839,+47:11:24.59,0.04955',0.0991',0,90)
-pie(13:29:55.839,+47:11:24.59,0.04955',0.0991',90,180)
-pie(13:29:55.839,+47:11:24.59,0.04955',0.0991',180,270)
-pie(13:29:57.008,+47:11:11.05,0',0.04955',51.5819,90)
-pie(13:29:57.008,+47:11:11.05,0',0.04955',90,180)
-pie(13:29:57.008,+47:11:11.05,0',0.04955',180,270)
-pie(13:29:57.008,+47:11:11.05,0.04955',0.0991',51.5819,90)
-pie(13:29:57.008,+47:11:11.05,0.04955',0.0991',90,180)
-pie(13:29:57.008,+47:11:11.05,0.04955',0.0991',180,270)
+circle(13:29:56.743,+47:12:30.42,0.0660667')
+-ellipse(13:29:55.792,+47:12:16.94,0.132133',0.0660667',45)
+-rotbox(13:29:54.530,+47:12:04.57,0.264267',0.132133',45)
+polygon(13:29:53.394,+47:11:56.88,13:29:52.357,+47:11:57.32,13:29:52.314,+47:11:46.75,13:29:53.351,+47:11:46.31)
+annulus(13:29:58.217,+47:12:14.07,0.0330333',0.0660667')
+annulus(13:29:58.217,+47:12:14.07,0.0660667',0.0991')
+point(13:29:59.541,+47:12:01.44)
+point(13:29:58.293,+47:11:49.21)
+point(13:29:57.107,+47:11:38.64)
+point(13:29:59.971,+47:11:52.28)
+point(13:29:58.870,+47:11:42.23)
+point(13:29:57.807,+47:11:31.47)
+point(13:29:59.526,+47:11:34.38)
+pie(13:29:55.690,+47:11:25.36,0',0.04955',0,90)
+pie(13:29:55.690,+47:11:25.36,0',0.04955',90,180)
+pie(13:29:55.690,+47:11:25.36,0',0.04955',180,270)
+pie(13:29:55.690,+47:11:25.36,0.04955',0.0991',0,90)
+pie(13:29:55.690,+47:11:25.36,0.04955',0.0991',90,180)
+pie(13:29:55.690,+47:11:25.36,0.04955',0.0991',180,270)
+pie(13:29:56.859,+47:11:11.81,0',0.04955',51.5819,90)
+pie(13:29:56.859,+47:11:11.81,0',0.04955',90,180)
+pie(13:29:56.859,+47:11:11.81,0',0.04955',180,270)
+pie(13:29:56.859,+47:11:11.81,0.04955',0.0991',51.5819,90)
+pie(13:29:56.859,+47:11:11.81,0.04955',0.0991',90,180)
+pie(13:29:56.859,+47:11:11.81,0.04955',0.0991',180,270)
diff --git a/tests/ciao.physical.reg b/tests/ciao.physical.reg
index 4576c89..89d4e57 100644
--- a/tests/ciao.physical.reg
+++ b/tests/ciao.physical.reg
@@ -1,26 +1,26 @@
 # Region file format: CIAO version 1.0
-circle(325,1075,40)
--ellipse(489,1041,80,40,45)
--rotbox(669,1037,160,80,45)
-polygon(807.49446,1059,883,1134.5055,958.50554,1059,883,983.49446)
-annulus(325,851,20,40)
-annulus(325,851,40,60)
-point(311,665)
-point(489,661)
-point(651,665)
-point(341,567)
-point(493,569)
-point(647,563)
-point(497,465)
-pie(849,665,0,30,0,90)
-pie(849,665,0,30,90,180)
-pie(849,665,0,30,180,270)
-pie(849,665,30,60,0,90)
-pie(849,665,30,60,90,180)
-pie(849,665,30,60,180,270)
-pie(853,483,0,30,51.5819,90)
-pie(853,483,0,30,90,180)
-pie(853,483,0,30,180,270)
-pie(853,483,30,60,51.5819,90)
-pie(853,483,30,60,90,180)
-pie(853,483,30,60,180,270)
+circle(331,1091,40)
+-ellipse(495,1057,80,40,45)
+-rotbox(675,1053,160,80,45)
+polygon(813.49446,1075,889,1150.5055,964.50554,1075,889,999.49446)
+annulus(331,867,20,40)
+annulus(331,867,40,60)
+point(317,681)
+point(495,677)
+point(657,681)
+point(347,583)
+point(499,585)
+point(653,579)
+point(503,481)
+pie(855,681,0,30,0,90)
+pie(855,681,0,30,90,180)
+pie(855,681,0,30,180,270)
+pie(855,681,30,60,0,90)
+pie(855,681,30,60,90,180)
+pie(855,681,30,60,180,270)
+pie(859,499,0,30,51.5819,90)
+pie(859,499,0,30,90,180)
+pie(859,499,0,30,180,270)
+pie(859,499,30,60,51.5819,90)
+pie(859,499,30,60,90,180)
+pie(859,499,30,60,180,270)
diff --git a/tests/command.sh b/tests/command.sh
index dff5dcc..874b8da 100755
--- a/tests/command.sh
+++ b/tests/command.sh
@@ -413,6 +413,24 @@ testit "-mode pointer"
 doit
 fi
 
+if [ "$1" = "export" -o -z "$1" ]; then
+initit "export"
+testit "-export foo.fits"
+testit "-export foo.gif"
+testit "-export foo.tif"
+testit "-export foo.tif none"
+testit "-export foo.jpg"
+testit "-export foo.jpg 100"
+testit "-export foo.png"
+testit "-export foo.ppm"
+
+# backward compatability
+testit "-savefits foo.fits"
+
+rm -f foo.fits foo.gif foo.tif foo.jpg foo.png foo.ppm
+doit
+fi
+
 if [ "$1" = "fifo" -o -z "$1" ]; then
 initit "fifo"
 testit "-fifo /dev/imt1"
@@ -624,6 +642,17 @@ testit "-iis filename foo.fits 1"
 doit
 fi
 
+if [ "$1" = "import" -o -z "$1" ]; then
+initit "import"
+testit "-frame new"
+testit "-image rose.jpg"
+testit "-frame delete"
+testit "-frame new rgb"
+testit "-image rose.tif"
+testit "-frame delete"
+doit
+fi
+
 if [ "$1" = "lock" -o -z "$1" ]; then
 initit "lock"
 testit "-file img16.fits"
@@ -1171,24 +1200,49 @@ testit "-samp send table topcat"
 doit
 fi
 
-if [ "$1" = "saveas" -o -z "$1" ]; then
-initit "saveas"
+if [ "$1" = "saveimage" -o -z "$1" ]; then
+initit "saveimage"
+
+testit "-saveimage foo.fits"
+testit "-saveimage foo.gif"
+testit "-saveimage foo.tif"
+testit "-saveimage foo.tif none"
+testit "-saveimage foo.jpg"
+testit "-saveimage foo.jpg 100"
+testit "-saveimage foo.png"
+testit "-saveimage foo.ppm"
+
+# backward compatibility
 testit "-saveimage fits foo.fits"
-testit "-saveimage jpeg foo.jpeg"
-testit "-saveimage jpeg 100 foo.jpeg"
+testit "-saveimage jpeg foo.jpg"
+testit "-saveimage jpeg 100 foo.jpg"
 testit "-saveimage tiff foo.tif"
 testit "-saveimage tiff deflate foo.tif"
 testit "-saveimage png foo.png"
 testit "-saveimage ppm foo.ppm"
-testit "-saveimage mpeg foo.mpg"
-testit "-saveimage mpeg 31 foo.mpg"
 
-testit "-savefits foo.fits"
-testit "-savempeg foo.mpg"
+doit
 rm -f foo.fits foo.jpeg foo.tif foo.png foo.ppm foo.mpg foo.mpg
+fi
+
+if [ "$1" = "savempeg" -o -z "$1" ]; then
+initit "savempeg"
+testit "-saveimage ppm foo.ppm"
+testit "-savempeg slice foo.mpg"
+testit "-savempeg frame foo.mpg"
+testit "-frame new 3d"
+testit "-savempeg 3d foo.mpg number 1 azfrom 0 azto 0 elfrom 0 elto 0 slfrom 1 slto 1 repeat 1"
+testit "-frame delete"
+
+# backward compatibility
+testit "-savempeg foo.mpg"
+
 doit
+rm -f foo.mpg
 fi
 
+testit "-saveimage foo.fits"
+
 if [ "$1" = "scale" -o -z "$1" ]; then
 initit "scale"
 testit "-scale open"
diff --git a/tests/ds9.composite.reg b/tests/ds9.composite.reg
index 08666a5..3830238 100644
--- a/tests/ds9.composite.reg
+++ b/tests/ds9.composite.reg
@@ -38,4 +38,3 @@ bpanda(202.47302,47.183543,317.39831,587.39831,3,7.9280014",3.9640007",11.892002
 bpanda(202.47809,47.180126,2.3983109,47.398311,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) || # bpanda=(2.3983109 47.398311 137.39831 227.39831)(7.9280014" 3.9640007" 11.892002" 5.946001")(2.3983109) text={Bpanda 2}
 bpanda(202.47809,47.180126,47.398311,137.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) || # bpanda=ignore
 bpanda(202.47809,47.180126,137.39831,227.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) || # bpanda=ignore
-# circle3d(202.46965,47.178963,1.9820003") text={Circle3d}
diff --git a/tests/ds9.ecliptic.hms.reg b/tests/ds9.ecliptic.hms.reg
index 24baae2..7c0a51a 100644
--- a/tests/ds9.ecliptic.hms.reg
+++ b/tests/ds9.ecliptic.hms.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 ecliptic
-circle(+175:06:47.329,+50:57:10.157,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(+175:06:47.329,+50:56:53.559,7.928",3.964",326.717) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(+175:06:42.199,+50:56:36.012,15.856",7.928",326.717) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(+175:06:34.390,+50:56:23.015,+175:06:20.354,+50:56:17.207,+175:06:29.571,+50:56:08.362,+175:06:43.608,+50:56:14.170) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(+175:06:35.595,+50:56:02.262,+175:06:16.061,+50:55:52.669) # line=1 1 color=cyan text={Line}
-# vector(+175:06:22.822,+50:55:44.904,7.928",326.717) vector=1 color=red text={Vector}
-# text(+175:06:23.624,+50:55:33.666) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(+175:07:17.569,+50:56:21.473,+175:06:55.311,+50:56:11.427) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(+175:07:21.832,+50:57:05.650,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(+175:07:17.633,+50:56:48.993,2.973",1.4865",5.946",2.973",326.717) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(+175:07:12.383,+50:56:32.069,7.928",3.964",11.892",5.946",326.717) # font="helvetica 10 bold roman" text={Box Annulus}
-point(+175:07:50.928,+50:57:03.264) # point=circle text={Circle Point}
-point(+175:07:45.855,+50:56:45.911) # point=box color=red width=3 text={Box Point}
-point(+175:07:40.062,+50:56:30.273) # point=diamond text={Diamond Point}
-point(+175:08:05.063,+50:56:58.379) # point=cross color=blue text={Cross Point}
-point(+175:07:59.895,+50:56:43.670) # point=x text={X Point}
-point(+175:07:55.897,+50:56:28.607) # point=arrow color=magenta text={Arrow Point}
-point(+175:08:15.784,+50:56:41.187) # point=boxcircle text={BoxCircle Point}
-# projection(+175:07:14.006,+50:56:00.887,+175:06:47.744,+50:55:45.494,3.964") text={Projection}
-panda(+175:07:33.735,+50:56:11.060,281.717,551.717,3,0",5.946",2) # text={Panda}
-panda(+175:08:01.631,+50:56:07.007,333.299,371.717,1,0",2.973",1) # panda=(333.299 11.7172 101.717 191.717)(0" 2.973" 5.946") text={Panda 2}
-panda(+175:08:01.631,+50:56:07.007,333.299,371.717,1,2.973",5.946",1) # panda=ignore
-panda(+175:08:01.631,+50:56:07.007,11.7172,101.717,1,0",2.973",1) # panda=ignore
-panda(+175:08:01.631,+50:56:07.007,11.7172,101.717,1,2.973",5.946",1) # panda=ignore
-panda(+175:08:01.631,+50:56:07.007,101.717,191.717,1,0",2.973",1) # panda=ignore
-panda(+175:08:01.631,+50:56:07.007,101.717,191.717,1,2.973",5.946",1) # panda=ignore
-# compass(+175:06:59.749,+50:55:38.055,7.928") compass=physical {N} {E} 1 1 text={Compass}
-epanda(+175:07:30.960,+50:55:54.824,281.717,551.717,3,2.973",1.4865",5.946",2.973",1,326.717) # text={Epanda}
-epanda(+175:07:58.173,+50:55:50.658,326.717,371.717,1,2.973",1.4865",5.946",2.973",1,326.717) # epanda=(326.717 11.7172 101.717 191.717)(2.973" 1.4865" 5.946" 2.973")(326.717) text={Epanda 2}
-epanda(+175:07:58.173,+50:55:50.658,11.7172,101.717,1,2.973",1.4865",5.946",2.973",1,326.717) # epanda=ignore
-epanda(+175:07:58.173,+50:55:50.658,101.717,191.717,1,2.973",1.4865",5.946",2.973",1,326.717) # epanda=ignore
-bpanda(+175:07:25.403,+50:55:37.941,281.717,551.717,3,7.928",3.964",11.892",5.946",1,326.717) # text={Bpanda}
-bpanda(+175:07:52.752,+50:55:35.173,326.717,371.717,1,7.928",3.964",11.892",5.946",1,326.717) # bpanda=(326.717 11.7172 101.717 191.717)(7.928" 3.964" 11.892" 5.946")(326.717) text={Bpanda 2}
-bpanda(+175:07:52.752,+50:55:35.173,11.7172,101.717,1,7.928",3.964",11.892",5.946",1,326.717) # bpanda=ignore
-bpanda(+175:07:52.752,+50:55:35.173,101.717,191.717,1,7.928",3.964",11.892",5.946",1,326.717) # bpanda=ignore
-# circle3d(+175:07:30.006,+50:55:19.728,1.982") text={Circle3d}
+circle(+175:06:44.609,+50:57:09.897,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(+175:06:44.610,+50:56:53.299,7.928",3.964",326.717) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(+175:06:39.479,+50:56:35.752,15.856",7.928",326.717) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(+175:06:31.671,+50:56:22.755,+175:06:17.634,+50:56:16.946,+175:06:26.852,+50:56:08.101,+175:06:40.888,+50:56:13.910) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(+175:06:32.876,+50:56:02.002,+175:06:13.343,+50:55:52.408) # line=1 1 color=cyan text={Line}
+# vector(+175:06:20.104,+50:55:44.643,7.928",326.717) vector=1 color=red text={Vector}
+# text(+175:06:20.905,+50:55:33.406) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(+175:07:14.850,+50:56:21.212,+175:06:52.592,+50:56:11.166) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(+175:07:19.112,+50:57:05.390,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(+175:07:14.913,+50:56:48.733,2.973",1.4865",5.946",2.973",326.717) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(+175:07:09.664,+50:56:31.809,7.928",3.964",11.892",5.946",326.717) # font="helvetica 10 bold roman" text={Box Annulus}
+point(+175:07:48.208,+50:57:03.004) # point=circle text={Circle Point}
+point(+175:07:43.135,+50:56:45.651) # point=box color=red width=3 text={Box Point}
+point(+175:07:37.342,+50:56:30.013) # point=diamond text={Diamond Point}
+point(+175:08:02.343,+50:56:58.119) # point=cross color=blue text={Cross Point}
+point(+175:07:57.176,+50:56:43.411) # point=x text={X Point}
+point(+175:07:53.177,+50:56:28.347) # point=arrow color=magenta text={Arrow Point}
+point(+175:08:13.064,+50:56:40.927) # point=boxcircle text={BoxCircle Point}
+# projection(+175:07:11.287,+50:56:00.627,+175:06:45.026,+50:55:45.234,3.964") text={Projection}
+panda(+175:07:31.016,+50:56:10.800,281.717,551.717,3,0",5.946",2) # text={Panda}
+panda(+175:07:58.912,+50:56:06.747,333.299,371.717,1,0",2.973",1) # panda=(333.299 11.7172 101.717 191.717)(0" 2.973" 5.946") text={Panda 2}
+panda(+175:07:58.912,+50:56:06.747,333.299,371.717,1,2.973",5.946",1) # panda=ignore
+panda(+175:07:58.912,+50:56:06.747,11.7172,101.717,1,0",2.973",1) # panda=ignore
+panda(+175:07:58.912,+50:56:06.747,11.7172,101.717,1,2.973",5.946",1) # panda=ignore
+panda(+175:07:58.912,+50:56:06.747,101.717,191.717,1,0",2.973",1) # panda=ignore
+panda(+175:07:58.912,+50:56:06.747,101.717,191.717,1,2.973",5.946",1) # panda=ignore
+# compass(+175:06:57.031,+50:55:37.795,7.928") compass=physical {N} {E} 1 1 text={Compass}
+epanda(+175:07:28.241,+50:55:54.564,281.717,551.717,3,2.973",1.4865",5.946",2.973",1,326.717) # text={Epanda}
+epanda(+175:07:55.454,+50:55:50.398,326.717,371.717,1,2.973",1.4865",5.946",2.973",1,326.717) # epanda=(326.717 11.7172 101.717 191.717)(2.973" 1.4865" 5.946" 2.973")(326.717) text={Epanda 2}
+epanda(+175:07:55.454,+50:55:50.398,11.7172,101.717,1,2.973",1.4865",5.946",2.973",1,326.717) # epanda=ignore
+epanda(+175:07:55.454,+50:55:50.398,101.717,191.717,1,2.973",1.4865",5.946",2.973",1,326.717) # epanda=ignore
+bpanda(+175:07:22.684,+50:55:37.680,281.717,551.717,3,7.928",3.964",11.892",5.946",1,326.717) # text={Bpanda}
+bpanda(+175:07:50.034,+50:55:34.913,326.717,371.717,1,7.928",3.964",11.892",5.946",1,326.717) # bpanda=(326.717 11.7172 101.717 191.717)(7.928" 3.964" 11.892" 5.946")(326.717) text={Bpanda 2}
+bpanda(+175:07:50.034,+50:55:34.913,11.7172,101.717,1,7.928",3.964",11.892",5.946",1,326.717) # bpanda=ignore
+bpanda(+175:07:50.034,+50:55:34.913,101.717,191.717,1,7.928",3.964",11.892",5.946",1,326.717) # bpanda=ignore
diff --git a/tests/ds9.ecliptic.hms.strip.reg b/tests/ds9.ecliptic.hms.strip.reg
index ccccba1..357bd97 100644
--- a/tests/ds9.ecliptic.hms.strip.reg
+++ b/tests/ds9.ecliptic.hms.strip.reg
@@ -1 +1 @@
-ecliptic;circle(+175:06:47.329,+50:57:10.157,3.964");-ellipse(+175:06:47.329,+50:56:53.559,7.928",3.964",326.717);-box(+175:06:42.199,+50:56:36.012,15.856",7.928",326.717);polygon(+175:06:34.390,+50:56:23.015,+175:06:20.354,+50:56:17.207,+175:06:29.571,+50:56:08.362,+175:06:43.608,+50:56:14.170);-line(+175:06:35.595,+50:56:02.262,+175:06:16.061,+50:55:52.669);annulus(+175:07:21.832,+50:57:05.650,1.982",3.964",5.946");ellipse(+175:07:17.633,+50:56:48.993,2.973",1.4865",5.946",2.973",326.717);box(+175:07:12.383,+50:56:32.069,7.928",3.964",11.892",5.946",326.717);point(+175:07:50.928,+50:57:03.264);point(+175:07:45.855,+50:56:45.911);point(+175:07:40.062,+50:56:30.273);point(+175:08:05.063,+50:56:58.379);point(+175:07:59.895,+50:56:43.670);point(+175:07:55.897,+50:56:28.607);point(+175:08:15.784,+50:56:41.187);panda(+175:07:33.735,+50:56:11.060,281.717,551.717,3,0",5.946",2);panda(+175:08:01.631,+50:56:07.007,333.299,371.717,1,0",2.973",1);panda(+175:08:01.631,+50:56:07.007,333.299,371.717,1,2.973",5.946",1);panda(+175:08:01.631,+50:56:07.007,11.7172,101.717,1,0",2.973",1);panda(+175:08:01.631,+50:56:07.007,11.7172,101.717,1,2.973",5.946",1);panda(+175:08:01.631,+50:56:07.007,101.717,191.717,1,0",2.973",1);panda(+175:08:01.631,+50:56:07.007,101.717,191.717,1,2.973",5.946",1);epanda(+175:07:30.960,+50:55:54.824,281.717,551.717,3,2.973",1.4865",5.946",2.973",1,326.717);epanda(+175:07:58.173,+50:55:50.658,326.717,371.717,1,2.973",1.4865",5.946",2.973",1,326.717);epanda(+175:07:58.173,+50:55:50.658,11.7172,101.717,1,2.973",1.4865",5.946",2.973",1,326.717);epanda(+175:07:58.173,+50:55:50.658,101.717,191.717,1,2.973",1.4865",5.946",2.973",1,326.717);bpanda(+175:07:25.403,+50:55:37.941,281.717,551.717,3,7.928",3.964",11.892",5.946",1,326.717);bpanda(+175:07:52.752,+50:55:35.173,326.717,371.717,1,7.928",3.964",11.892",5.946",1,326.717);bpanda(+175:07:52.752,+50:55:35.173,11.7172,101.717,1,7.928",3.964",11.892",5.946",1,326.717);bpanda(+175:07:52.752,+50:55:35.173,101.717,191.717,1,7.928",3.964",11.892",5.946",1,326.717);
\ No newline at end of file
+ecliptic;circle(+175:06:44.609,+50:57:09.897,3.964");-ellipse(+175:06:44.610,+50:56:53.299,7.928",3.964",326.717);-box(+175:06:39.479,+50:56:35.752,15.856",7.928",326.717);polygon(+175:06:31.671,+50:56:22.755,+175:06:17.634,+50:56:16.946,+175:06:26.852,+50:56:08.101,+175:06:40.888,+50:56:13.910);-line(+175:06:32.876,+50:56:02.002,+175:06:13.343,+50:55:52.408);annulus(+175:07:19.112,+50:57:05.390,1.982",3.964",5.946");ellipse(+175:07:14.913,+50:56:48.733,2.973",1.4865",5.946",2.973",326.717);box(+175:07:09.664,+50:56:31.809,7.928",3.964",11.892",5.946",326.717);point(+175:07:48.208,+50:57:03.004);point(+175:07:43.135,+50:56:45.651);point(+175:07:37.342,+50:56:30.013);point(+175:08:02.343,+50:56:58.119);point(+175:07:57.176,+50:56:43.411);point(+175:07:53.177,+50:56:28.347);point(+175:08:13.064,+50:56:40.927);panda(+175:07:31.016,+50:56:10.800,281.717,551.717,3,0",5.946",2);panda(+175:07:58.912,+50:56:06.747,333.299,371.717,1,0",2.973",1);panda(+175:07:58.912,+50:56:06.747,333.299,371.717,1,2.973",5.946",1);panda(+175:07:58.912,+50:56:06.747,11.7172,101.717,1,0",2.973",1);panda(+175:07:58.912,+50:56:06.747,11.7172,101.717,1,2.973",5.946",1);panda(+175:07:58.912,+50:56:06.747,101.717,191.717,1,0",2.973",1);panda(+175:07:58.912,+50:56:06.747,101.717,191.717,1,2.973",5.946",1);epanda(+175:07:28.241,+50:55:54.564,281.717,551.717,3,2.973",1.4865",5.946",2.973",1,326.717);epanda(+175:07:55.454,+50:55:50.398,326.717,371.717,1,2.973",1.4865",5.946",2.973",1,326.717);epanda(+175:07:55.454,+50:55:50.398,11.7172,101.717,1,2.973",1.4865",5.946",2.973",1,326.717);epanda(+175:07:55.454,+50:55:50.398,101.717,191.717,1,2.973",1.4865",5.946",2.973",1,326.717);bpanda(+175:07:22.684,+50:55:37.680,281.717,551.717,3,7.928",3.964",11.892",5.946",1,326.717);bpanda(+175:07:50.034,+50:55:34.913,326.717,371.717,1,7.928",3.964",11.892",5.946",1,326.717);bpanda(+175:07:50.034,+50:55:34.913,11.7172,101.717,1,7.928",3.964",11.892",5.946",1,326.717);bpanda(+175:07:50.034,+50:55:34.913,101.717,191.717,1,7.928",3.964",11.892",5.946",1,326.717);
\ No newline at end of file
diff --git a/tests/ds9.ecliptic.reg b/tests/ds9.ecliptic.reg
index f9f84ae..60e5381 100644
--- a/tests/ds9.ecliptic.reg
+++ b/tests/ds9.ecliptic.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 ecliptic
-circle(175.11315,50.952821,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(175.11315,50.948211,7.9280014",3.9640007",326.71724) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(175.11172,50.943337,15.856003",7.9280014",326.71724) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(175.10955,50.939727,175.10565,50.938113,175.10821,50.935656,175.11211,50.937269) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(175.10989,50.933962,175.10446,50.931297) # line=1 1 color=cyan text={Line}
-# vector(175.10634,50.92914,7.9280014",326.71724) vector=1 color=red text={Vector}
-# text(175.10656,50.926018) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(175.12155,50.939298,175.11536,50.936507) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(175.12273,50.951569,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(175.12156,50.946943,2.9730005",1.4865003",5.946001",2.9730005",326.71724) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(175.12011,50.942241,7.9280014",3.9640007",11.892002",5.946001",326.71724) # font="helvetica 10 bold roman" text={Box Annulus}
-point(175.13081,50.950907) # point=circle text={Circle Point}
-point(175.1294,50.946087) # point=box color=red width=3 text={Box Point}
-point(175.12779,50.941742) # point=diamond text={Diamond Point}
-point(175.13474,50.94955) # point=cross color=blue text={Cross Point}
-point(175.1333,50.945464) # point=x text={X Point}
-point(175.13219,50.94128) # point=arrow color=magenta text={Arrow Point}
-point(175.13772,50.944774) # point=boxcircle text={BoxCircle Point}
-# projection(175.12056,50.93358,175.11326,50.929304,3.9640007") text={Projection}
-panda(175.12604,50.936406,281.71724,551.71724,3,0",5.946001",2) # text={Panda}
-panda(175.13379,50.93528,333.29914,371.71724,1,0",2.9730005",1) # panda=(333.29914 11.71724 101.71724 191.71724)(0" 2.9730005" 5.946001") text={Panda 2}
-panda(175.13379,50.93528,333.29914,371.71724,1,2.9730005",5.946001",1) # panda=ignore
-panda(175.13379,50.93528,11.71724,101.71724,1,0",2.9730005",1) # panda=ignore
-panda(175.13379,50.93528,11.71724,101.71724,1,2.9730005",5.946001",1) # panda=ignore
-panda(175.13379,50.93528,101.71724,191.71724,1,0",2.9730005",1) # panda=ignore
-panda(175.13379,50.93528,101.71724,191.71724,1,2.9730005",5.946001",1) # panda=ignore
-# compass(175.1166,50.927238,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
-epanda(175.12527,50.931896,281.71724,551.71724,3,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # text={Epanda}
-epanda(175.13283,50.930738,326.71724,371.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # epanda=(326.71724 11.71724 101.71724 191.71724)(2.9730005" 1.4865003" 5.946001" 2.9730005")(326.71724) text={Epanda 2}
-epanda(175.13283,50.930738,11.71724,101.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # epanda=ignore
-epanda(175.13283,50.930738,101.71724,191.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # epanda=ignore
-bpanda(175.12372,50.927206,281.71724,551.71724,3,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # text={Bpanda}
-bpanda(175.13132,50.926437,326.71724,371.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # bpanda=(326.71724 11.71724 101.71724 191.71724)(7.9280014" 3.9640007" 11.892002" 5.946001")(326.71724) text={Bpanda 2}
-bpanda(175.13132,50.926437,11.71724,101.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # bpanda=ignore
-bpanda(175.13132,50.926437,101.71724,191.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # bpanda=ignore
-# circle3d(175.125,50.922147,1.9820003") text={Circle3d}
+circle(175.11239,50.952749,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(175.11239,50.948139,7.9280014",3.9640007",326.71724) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(175.11097,50.943264,15.856003",7.9280014",326.71724) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(175.1088,50.939654,175.1049,50.938041,175.10746,50.935584,175.11136,50.937197) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(175.10913,50.933889,175.10371,50.931224) # line=1 1 color=cyan text={Line}
+# vector(175.10558,50.929068,7.9280014",326.71724) vector=1 color=red text={Vector}
+# text(175.10581,50.925946) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(175.12079,50.939226,175.11461,50.936435) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(175.12198,50.951497,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(175.12081,50.94687,2.9730005",1.4865003",5.946001",2.9730005",326.71724) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(175.11935,50.942169,7.9280014",3.9640007",11.892002",5.946001",326.71724) # font="helvetica 10 bold roman" text={Box Annulus}
+point(175.13006,50.950834) # point=circle text={Circle Point}
+point(175.12865,50.946014) # point=box color=red width=3 text={Box Point}
+point(175.12704,50.94167) # point=diamond text={Diamond Point}
+point(175.13398,50.949478) # point=cross color=blue text={Cross Point}
+point(175.13255,50.945392) # point=x text={X Point}
+point(175.13144,50.941207) # point=arrow color=magenta text={Arrow Point}
+point(175.13696,50.944702) # point=boxcircle text={BoxCircle Point}
+# projection(175.1198,50.933507,175.11251,50.929232,3.9640007") text={Projection}
+panda(175.12528,50.936333,281.71724,551.71724,3,0",5.946001",2) # text={Panda}
+panda(175.13303,50.935208,333.29914,371.71724,1,0",2.9730005",1) # panda=(333.29914 11.71724 101.71724 191.71724)(0" 2.9730005" 5.946001") text={Panda 2}
+panda(175.13303,50.935208,333.29914,371.71724,1,2.9730005",5.946001",1) # panda=ignore
+panda(175.13303,50.935208,11.71724,101.71724,1,0",2.9730005",1) # panda=ignore
+panda(175.13303,50.935208,11.71724,101.71724,1,2.9730005",5.946001",1) # panda=ignore
+panda(175.13303,50.935208,101.71724,191.71724,1,0",2.9730005",1) # panda=ignore
+panda(175.13303,50.935208,101.71724,191.71724,1,2.9730005",5.946001",1) # panda=ignore
+# compass(175.11584,50.927165,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
+epanda(175.12451,50.931823,281.71724,551.71724,3,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # text={Epanda}
+epanda(175.13207,50.930666,326.71724,371.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # epanda=(326.71724 11.71724 101.71724 191.71724)(2.9730005" 1.4865003" 5.946001" 2.9730005")(326.71724) text={Epanda 2}
+epanda(175.13207,50.930666,11.71724,101.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # epanda=ignore
+epanda(175.13207,50.930666,101.71724,191.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724) # epanda=ignore
+bpanda(175.12297,50.927133,281.71724,551.71724,3,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # text={Bpanda}
+bpanda(175.13056,50.926365,326.71724,371.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # bpanda=(326.71724 11.71724 101.71724 191.71724)(7.9280014" 3.9640007" 11.892002" 5.946001")(326.71724) text={Bpanda 2}
+bpanda(175.13056,50.926365,11.71724,101.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # bpanda=ignore
+bpanda(175.13056,50.926365,101.71724,191.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724) # bpanda=ignore
diff --git a/tests/ds9.ecliptic.strip.reg b/tests/ds9.ecliptic.strip.reg
index d734332..202b5ac 100644
--- a/tests/ds9.ecliptic.strip.reg
+++ b/tests/ds9.ecliptic.strip.reg
@@ -1 +1 @@
-ecliptic;circle(175.11315,50.952821,3.9640007");-ellipse(175.11315,50.948211,7.9280014",3.9640007",326.71724);-box(175.11172,50.943337,15.856003",7.9280014",326.71724);polygon(175.10955,50.939727,175.10565,50.938113,175.10821,50.935656,175.11211,50.937269);-line(175.10989,50.933962,175.10446,50.931297);annulus(175.12273,50.951569,1.9820003",3.9640007",5.946001");ellipse(175.12156,50.946943,2.9730005",1.4865003",5.946001",2.9730005",326.71724);box(175.12011,50.942241,7.9280014",3.9640007",11.892002",5.946001",326.71724);point(175.13081,50.950907);point(175.1294,50.946087);point(175.12779,50.941742);point(175.13474,50.94955);point(175.1333,50.945464);point(175.13219,50.94128);point(175.13772,50.944774);panda(175.12604,50.936406,281.71724,551.71724,3,0",5.946001",2);panda(175.13379,50.93528,333.29914,371.71724,1,0",2.9730005",1);panda(175.13379,50.93528,333.29914,371.71724,1,2.9730005",5.946001",1);panda(175.13379,50.93528,11.71724,101.71724,1,0",2.9730005",1);panda(175.13379,50.93528,11.71724,101.71724,1,2.9730005",5.946001",1);panda(175.13379,50.93528,101.71724,191.71724,1,0",2.9730005",1);panda(175.13379,50.93528,101.71724,191.71724,1,2.9730005",5.946001",1);epanda(175.12527,50.931896,281.71724,551.71724,3,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);epanda(175.13283,50.930738,326.71724,371.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);epanda(175.13283,50.930738,11.71724,101.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);epanda(175.13283,50.930738,101.71724,191.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);bpanda(175.12372,50.927206,281.71724,551.71724,3,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);bpanda(175.13132,50.926437,326.71724,371.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);bpanda(175.13132,50.926437,11.71724,101.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);bpanda(175.13132,50.926437,101.71724,191.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);
\ No newline at end of file
+ecliptic;circle(175.11239,50.952749,3.9640007");-ellipse(175.11239,50.948139,7.9280014",3.9640007",326.71724);-box(175.11097,50.943264,15.856003",7.9280014",326.71724);polygon(175.1088,50.939654,175.1049,50.938041,175.10746,50.935584,175.11136,50.937197);-line(175.10913,50.933889,175.10371,50.931224);annulus(175.12198,50.951497,1.9820003",3.9640007",5.946001");ellipse(175.12081,50.94687,2.9730005",1.4865003",5.946001",2.9730005",326.71724);box(175.11935,50.942169,7.9280014",3.9640007",11.892002",5.946001",326.71724);point(175.13006,50.950834);point(175.12865,50.946014);point(175.12704,50.94167);point(175.13398,50.949478);point(175.13255,50.945392);point(175.13144,50.941207);point(175.13696,50.944702);panda(175.12528,50.936333,281.71724,551.71724,3,0",5.946001",2);panda(175.13303,50.935208,333.29914,371.71724,1,0",2.9730005",1);panda(175.13303,50.935208,333.29914,371.71724,1,2.9730005",5.946001",1);panda(175.13303,50.935208,11.71724,101.71724,1,0",2.9730005",1);panda(175.13303,50.935208,11.71724,101.71724,1,2.9730005",5.946001",1);panda(175.13303,50.935208,101.71724,191.71724,1,0",2.9730005",1);panda(175.13303,50.935208,101.71724,191.71724,1,2.9730005",5.946001",1);epanda(175.12451,50.931823,281.71724,551.71724,3,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);epanda(175.13207,50.930666,326.71724,371.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);epanda(175.13207,50.930666,11.71724,101.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);epanda(175.13207,50.930666,101.71724,191.71724,1,2.9730005",1.4865003",5.946001",2.9730005",1,326.71724);bpanda(175.12297,50.927133,281.71724,551.71724,3,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);bpanda(175.13056,50.926365,326.71724,371.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);bpanda(175.13056,50.926365,11.71724,101.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);bpanda(175.13056,50.926365,101.71724,191.71724,1,7.9280014",3.9640007",11.892002",5.946001",1,326.71724);
\ No newline at end of file
diff --git a/tests/ds9.fk4.hms.reg b/tests/ds9.fk4.hms.reg
index 7953942..441c0f4 100644
--- a/tests/ds9.fk4.hms.reg
+++ b/tests/ds9.fk4.hms.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk4
-circle(13:27:50.533,+47:27:57.00,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(13:27:49.574,+47:27:43.54,7.928",3.964",2.55309) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(13:27:48.303,+47:27:31.21,15.856",7.928",2.55309) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(13:27:47.159,+47:27:23.56,13:27:46.117,+47:27:24.03,13:27:46.071,+47:27:13.45,13:27:47.113,+47:27:12.98) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(13:27:46.022,+47:27:06.29,13:27:44.484,+47:27:05.72) # line=1 1 color=cyan text={Line}
-# vector(13:27:44.377,+47:26:56.93,7.928",2.55309) vector=1 color=red text={Vector}
-# text(13:27:43.769,+47:26:47.52) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(13:27:49.245,+47:27:06.37,13:27:47.544,+47:27:06.44) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(13:27:52.010,+47:27:40.61,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(13:27:50.837,+47:27:28.66,2.973",1.4865",5.946",2.973",2.55309) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(13:27:49.595,+47:27:16.88,7.928",3.964",11.892",5.946",2.55309) # font="helvetica 10 bold roman" text={Box Annulus}
-point(13:27:53.337,+47:27:27.95) # point=circle text={Circle Point}
-point(13:27:52.080,+47:27:15.75) # point=box color=red width=3 text={Box Point}
-point(13:27:50.886,+47:27:05.21) # point=diamond text={Diamond Point}
-point(13:27:53.767,+47:27:18.77) # point=cross color=blue text={Cross Point}
-point(13:27:52.658,+47:27:08.75) # point=x text={X Point}
-point(13:27:51.587,+47:26:58.02) # point=arrow color=magenta text={Arrow Point}
-point(13:27:53.315,+47:27:00.88) # point=boxcircle text={BoxCircle Point}
-# projection(13:27:47.877,+47:26:51.00,13:27:45.666,+47:26:48.21,3.964") text={Projection}
-panda(13:27:49.458,+47:26:51.97,317.553,587.553,3,0",5.946",2) # text={Panda}
-panda(13:27:50.629,+47:26:38.39,9.13499,47.5531,1,0",2.973",1) # panda=(9.13499 47.5531 137.553 227.553)(0" 2.973" 5.946") text={Panda 2}
-panda(13:27:50.629,+47:26:38.39,9.13499,47.5531,1,2.973",5.946",1) # panda=ignore
-panda(13:27:50.629,+47:26:38.39,47.5531,137.553,1,0",2.973",1) # panda=ignore
-panda(13:27:50.629,+47:26:38.39,47.5531,137.553,1,2.973",5.946",1) # panda=ignore
-panda(13:27:50.629,+47:26:38.39,137.553,227.553,1,0",2.973",1) # panda=ignore
-panda(13:27:50.629,+47:26:38.39,137.553,227.553,1,2.973",5.946",1) # panda=ignore
-# compass(13:27:45.842,+47:26:37.75,7.928") compass=physical {N} {E} 1 1 text={Compass}
-epanda(13:27:48.381,+47:26:39.83,317.553,587.553,3,2.973",1.4865",5.946",2.973",1,2.55309) # text={Epanda}
-epanda(13:27:49.512,+47:26:26.41,2.55309,47.5531,1,2.973",1.4865",5.946",2.973",1,2.55309) # epanda=(2.55309 47.5531 137.553 227.553)(2.973" 1.4865" 5.946" 2.973")(2.55309) text={Epanda 2}
-epanda(13:27:49.512,+47:26:26.41,47.5531,137.553,1,2.973",1.4865",5.946",2.973",1,2.55309) # epanda=ignore
-epanda(13:27:49.512,+47:26:26.41,137.553,227.553,1,2.973",1.4865",5.946",2.973",1,2.55309) # epanda=ignore
-bpanda(13:27:47.127,+47:26:28.19,317.553,587.553,3,7.928",3.964",11.892",5.946",1,2.55309) # text={Bpanda}
-bpanda(13:27:48.345,+47:26:15.86,2.55309,47.5531,1,7.928",3.964",11.892",5.946",1,2.55309) # bpanda=(2.55309 47.5531 137.553 227.553)(7.928" 3.964" 11.892" 5.946")(2.55309) text={Bpanda 2}
-bpanda(13:27:48.345,+47:26:15.86,47.5531,137.553,1,7.928",3.964",11.892",5.946",1,2.55309) # bpanda=ignore
-bpanda(13:27:48.345,+47:26:15.86,137.553,227.553,1,7.928",3.964",11.892",5.946",1,2.55309) # bpanda=ignore
-# circle3d(13:27:46.308,+47:26:11.73,1.982") text={Circle3d}
+circle(13:27:50.384,+47:27:57.76,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(13:27:49.426,+47:27:44.31,7.928",3.964",2.55409) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(13:27:48.154,+47:27:31.98,15.856",7.928",2.55409) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(13:27:47.011,+47:27:24.32,13:27:45.968,+47:27:24.79,13:27:45.922,+47:27:14.22,13:27:46.964,+47:27:13.75) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(13:27:45.873,+47:27:07.05,13:27:44.336,+47:27:06.48) # line=1 1 color=cyan text={Line}
+# vector(13:27:44.228,+47:26:57.70,7.928",2.55409) vector=1 color=red text={Vector}
+# text(13:27:43.620,+47:26:48.29) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(13:27:49.096,+47:27:07.14,13:27:47.395,+47:27:07.21) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(13:27:51.861,+47:27:41.38,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(13:27:50.688,+47:27:29.43,2.973",1.4865",5.946",2.973",2.55409) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(13:27:49.447,+47:27:17.65,7.928",3.964",11.892",5.946",2.55409) # font="helvetica 10 bold roman" text={Box Annulus}
+point(13:27:53.189,+47:27:28.71) # point=circle text={Circle Point}
+point(13:27:51.931,+47:27:16.52) # point=box color=red width=3 text={Box Point}
+point(13:27:50.737,+47:27:05.98) # point=diamond text={Diamond Point}
+point(13:27:53.618,+47:27:19.54) # point=cross color=blue text={Cross Point}
+point(13:27:52.509,+47:27:09.52) # point=x text={X Point}
+point(13:27:51.438,+47:26:58.79) # point=arrow color=magenta text={Arrow Point}
+point(13:27:53.166,+47:27:01.65) # point=boxcircle text={BoxCircle Point}
+# projection(13:27:47.729,+47:26:51.77,13:27:45.517,+47:26:48.98,3.964") text={Projection}
+panda(13:27:49.309,+47:26:52.74,317.554,587.554,3,0",5.946",2) # text={Panda}
+panda(13:27:50.481,+47:26:39.16,9.13599,47.5541,1,0",2.973",1) # panda=(9.13599 47.5541 137.554 227.554)(0" 2.973" 5.946") text={Panda 2}
+panda(13:27:50.481,+47:26:39.16,9.13599,47.5541,1,2.973",5.946",1) # panda=ignore
+panda(13:27:50.481,+47:26:39.16,47.5541,137.554,1,0",2.973",1) # panda=ignore
+panda(13:27:50.481,+47:26:39.16,47.5541,137.554,1,2.973",5.946",1) # panda=ignore
+panda(13:27:50.481,+47:26:39.16,137.554,227.554,1,0",2.973",1) # panda=ignore
+panda(13:27:50.481,+47:26:39.16,137.554,227.554,1,2.973",5.946",1) # panda=ignore
+# compass(13:27:45.693,+47:26:38.52,7.928") compass=physical {N} {E} 1 1 text={Compass}
+epanda(13:27:48.233,+47:26:40.60,317.554,587.554,3,2.973",1.4865",5.946",2.973",1,2.55409) # text={Epanda}
+epanda(13:27:49.363,+47:26:27.18,2.55409,47.5541,1,2.973",1.4865",5.946",2.973",1,2.55409) # epanda=(2.55409 47.5541 137.554 227.554)(2.973" 1.4865" 5.946" 2.973")(2.55409) text={Epanda 2}
+epanda(13:27:49.363,+47:26:27.18,47.5541,137.554,1,2.973",1.4865",5.946",2.973",1,2.55409) # epanda=ignore
+epanda(13:27:49.363,+47:26:27.18,137.554,227.554,1,2.973",1.4865",5.946",2.973",1,2.55409) # epanda=ignore
+bpanda(13:27:46.979,+47:26:28.96,317.554,587.554,3,7.928",3.964",11.892",5.946",1,2.55409) # text={Bpanda}
+bpanda(13:27:48.197,+47:26:16.63,2.55409,47.5541,1,7.928",3.964",11.892",5.946",1,2.55409) # bpanda=(2.55409 47.5541 137.554 227.554)(7.928" 3.964" 11.892" 5.946")(2.55409) text={Bpanda 2}
+bpanda(13:27:48.197,+47:26:16.63,47.5541,137.554,1,7.928",3.964",11.892",5.946",1,2.55409) # bpanda=ignore
+bpanda(13:27:48.197,+47:26:16.63,137.554,227.554,1,7.928",3.964",11.892",5.946",1,2.55409) # bpanda=ignore
diff --git a/tests/ds9.fk4.hms.strip.reg b/tests/ds9.fk4.hms.strip.reg
index 9ff1744..4c524b2 100644
--- a/tests/ds9.fk4.hms.strip.reg
+++ b/tests/ds9.fk4.hms.strip.reg
@@ -1 +1 @@
-fk4;circle(13:27:50.533,+47:27:57.00,3.964");-ellipse(13:27:49.574,+47:27:43.54,7.928",3.964",2.55309);-box(13:27:48.303,+47:27:31.21,15.856",7.928",2.55309);polygon(13:27:47.159,+47:27:23.56,13:27:46.117,+47:27:24.03,13:27:46.071,+47:27:13.45,13:27:47.113,+47:27:12.98);-line(13:27:46.022,+47:27:06.29,13:27:44.484,+47:27:05.72);annulus(13:27:52.010,+47:27:40.61,1.982",3.964",5.946");ellipse(13:27:50.837,+47:27:28.66,2.973",1.4865",5.946",2.973",2.55309);box(13:27:49.595,+47:27:16.88,7.928",3.964",11.892",5.946",2.55309);point(13:27:53.337,+47:27:27.95);point(13:27:52.080,+47:27:15.75);point(13:27:50.886,+47:27:05.21);point(13:27:53.767,+47:27:18.77);point(13:27:52.658,+47:27:08.75);point(13:27:51.587,+47:26:58.02);point(13:27:53.315,+47:27:00.88);panda(13:27:49.458,+47:26:51.97,317.553,587.553,3,0",5.946",2);panda(13:27:50.629,+47:26:38.39,9.13499,47.5531,1,0",2.973",1);panda(13:27:50.629,+47:26:38.39,9.13499,47.5531,1,2.973",5.946",1);panda(13:27:50.629,+47:26:38.39,47.5531,137.553,1,0",2.973",1);panda(13:27:50.629,+47:26:38.39,47.5531,137.553,1,2.973",5.946",1);panda(13:27:50.629,+47:26:38.39,137.553,227.553,1,0",2.973",1);panda(13:27:50.629,+47:26:38.39,137.553,227.553,1,2.973",5.946",1);epanda(13:27:48.381,+47:26:39.83,317.553,587.553,3,2.973",1.4865",5.946",2.973",1,2.55309);epanda(13:27:49.512,+47:26:26.41,2.55309,47.5531,1,2.973",1.4865",5.946",2.973",1,2.55309);epanda(13:27:49.512,+47:26:26.41,47.5531,137.553,1,2.973",1.4865",5.946",2.973",1,2.55309);epanda(13:27:49.512,+47:26:26.41,137.553,227.553,1,2.973",1.4865",5.946",2.973",1,2.55309);bpanda(13:27:47.127,+47:26:28.19,317.553,587.553,3,7.928",3.964",11.892",5.946",1,2.55309);bpanda(13:27:48.345,+47:26:15.86,2.55309,47.5531,1,7.928",3.964",11.892",5.946",1,2.55309);bpanda(13:27:48.345,+47:26:15.86,47.5531,137.553,1,7.928",3.964",11.892",5.946",1,2.55309);bpanda(13:27:48.345,+47:26:15.86,137.553,227.553,1,7.928",3.964",11.892",5.946",1,2.55309);
\ No newline at end of file
+fk4;circle(13:27:50.384,+47:27:57.76,3.964");-ellipse(13:27:49.426,+47:27:44.31,7.928",3.964",2.55409);-box(13:27:48.154,+47:27:31.98,15.856",7.928",2.55409);polygon(13:27:47.011,+47:27:24.32,13:27:45.968,+47:27:24.79,13:27:45.922,+47:27:14.22,13:27:46.964,+47:27:13.75);-line(13:27:45.873,+47:27:07.05,13:27:44.336,+47:27:06.48);annulus(13:27:51.861,+47:27:41.38,1.982",3.964",5.946");ellipse(13:27:50.688,+47:27:29.43,2.973",1.4865",5.946",2.973",2.55409);box(13:27:49.447,+47:27:17.65,7.928",3.964",11.892",5.946",2.55409);point(13:27:53.189,+47:27:28.71);point(13:27:51.931,+47:27:16.52);point(13:27:50.737,+47:27:05.98);point(13:27:53.618,+47:27:19.54);point(13:27:52.509,+47:27:09.52);point(13:27:51.438,+47:26:58.79);point(13:27:53.166,+47:27:01.65);panda(13:27:49.309,+47:26:52.74,317.554,587.554,3,0",5.946",2);panda(13:27:50.481,+47:26:39.16,9.13599,47.5541,1,0",2.973",1);panda(13:27:50.481,+47:26:39.16,9.13599,47.5541,1,2.973",5.946",1);panda(13:27:50.481,+47:26:39.16,47.5541,137.554,1,0",2.973",1);panda(13:27:50.481,+47:26:39.16,47.5541,137.554,1,2.973",5.946",1);panda(13:27:50.481,+47:26:39.16,137.554,227.554,1,0",2.973",1);panda(13:27:50.481,+47:26:39.16,137.554,227.554,1,2.973",5.946",1);epanda(13:27:48.233,+47:26:40.60,317.554,587.554,3,2.973",1.4865",5.946",2.973",1,2.55409);epanda(13:27:49.363,+47:26:27.18,2.55409,47.5541,1,2.973",1.4865",5.946",2.973",1,2.55409);epanda(13:27:49.363,+47:26:27.18,47.5541,137.554,1,2.973",1.4865",5.946",2.973",1,2.55409);epanda(13:27:49.363,+47:26:27.18,137.554,227.554,1,2.973",1.4865",5.946",2.973",1,2.55409);bpanda(13:27:46.979,+47:26:28.96,317.554,587.554,3,7.928",3.964",11.892",5.946",1,2.55409);bpanda(13:27:48.197,+47:26:16.63,2.55409,47.5541,1,7.928",3.964",11.892",5.946",1,2.55409);bpanda(13:27:48.197,+47:26:16.63,47.5541,137.554,1,7.928",3.964",11.892",5.946",1,2.55409);bpanda(13:27:48.197,+47:26:16.63,137.554,227.554,1,7.928",3.964",11.892",5.946",1,2.55409);
\ No newline at end of file
diff --git a/tests/ds9.fk4.reg b/tests/ds9.fk4.reg
index e2df67a..813d3c1 100644
--- a/tests/ds9.fk4.reg
+++ b/tests/ds9.fk4.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk4
-circle(201.96055,47.465832,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(201.95656,47.462095,7.9280014",3.9640007",2.553089) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(201.95126,47.458669,15.856003",7.9280014",2.553089) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(201.9465,47.456543,201.94215,47.456674,201.94196,47.453737,201.9463,47.453607) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(201.94176,47.451746,201.93535,47.451588) # line=1 1 color=cyan text={Line}
-# vector(201.9349,47.449146,7.9280014",2.553089) vector=1 color=red text={Vector}
-# text(201.93237,47.446533) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(201.95519,47.451771,201.9481,47.451789) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(201.96671,47.461282,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(201.96182,47.457961,2.9730005",1.4865003",5.946001",2.9730005",2.553089) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(201.95665,47.454688,7.9280014",3.9640007",11.892002",5.946001",2.553089) # font="helvetica 10 bold roman" text={Box Annulus}
-point(201.97224,47.457763) # point=circle text={Circle Point}
-point(201.967,47.454375) # point=box color=red width=3 text={Box Point}
-point(201.96202,47.451447) # point=diamond text={Diamond Point}
-point(201.97403,47.455214) # point=cross color=blue text={Cross Point}
-point(201.96941,47.452432) # point=x text={X Point}
-point(201.96495,47.449449) # point=arrow color=magenta text={Arrow Point}
-point(201.97214,47.450245) # point=boxcircle text={BoxCircle Point}
-# projection(201.94949,47.4475,201.94028,47.446725,3.9640007") text={Projection}
-panda(201.95608,47.447769,317.55309,587.55309,3,0",5.946001",2) # text={Panda}
-panda(201.96096,47.443997,9.134989,47.553089,1,0",2.9730005",1) # panda=(9.134989 47.553089 137.55309 227.55309)(0" 2.9730005" 5.946001") text={Panda 2}
-panda(201.96096,47.443997,9.134989,47.553089,1,2.9730005",5.946001",1) # panda=ignore
-panda(201.96096,47.443997,47.553089,137.55309,1,0",2.9730005",1) # panda=ignore
-panda(201.96096,47.443997,47.553089,137.55309,1,2.9730005",5.946001",1) # panda=ignore
-panda(201.96096,47.443997,137.55309,227.55309,1,0",2.9730005",1) # panda=ignore
-panda(201.96096,47.443997,137.55309,227.55309,1,2.9730005",5.946001",1) # panda=ignore
-# compass(201.94101,47.443819,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
-epanda(201.95159,47.444397,317.55309,587.55309,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089) # text={Epanda}
-epanda(201.9563,47.44067,2.553089,47.553089,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089) # epanda=(2.553089 47.553089 137.55309 227.55309)(2.9730005" 1.4865003" 5.946001" 2.9730005")(2.553089) text={Epanda 2}
-epanda(201.9563,47.44067,47.553089,137.55309,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089) # epanda=ignore
-epanda(201.9563,47.44067,137.55309,227.55309,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089) # epanda=ignore
-bpanda(201.94636,47.441164,317.55309,587.55309,3,7.9280014",3.9640007",11.892002",5.946001",1,2.553089) # text={Bpanda}
-bpanda(201.95144,47.437738,2.553089,47.553089,1,7.9280014",3.9640007",11.892002",5.946001",1,2.553089) # bpanda=(2.553089 47.553089 137.55309 227.55309)(7.9280014" 3.9640007" 11.892002" 5.946001")(2.553089) text={Bpanda 2}
-bpanda(201.95144,47.437738,47.553089,137.55309,1,7.9280014",3.9640007",11.892002",5.946001",1,2.553089) # bpanda=ignore
-bpanda(201.95144,47.437738,137.55309,227.55309,1,7.9280014",3.9640007",11.892002",5.946001",1,2.553089) # bpanda=ignore
-# circle3d(201.94295,47.436591,1.9820003") text={Circle3d}
+circle(201.95993,47.466046,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(201.95594,47.462308,7.9280014",3.9640007",2.55409) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(201.95064,47.458883,15.856003",7.9280014",2.55409) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(201.94588,47.456757,201.94153,47.456887,201.94134,47.453951,201.94568,47.45382) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(201.94114,47.45196,201.93473,47.451801) # line=1 1 color=cyan text={Line}
+# vector(201.93428,47.44936,7.9280014",2.55409) vector=1 color=red text={Vector}
+# text(201.93175,47.446747) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(201.95457,47.451984,201.94748,47.452003) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(201.96609,47.461495,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(201.9612,47.458175,2.9730005",1.4865003",5.946001",2.9730005",2.55409) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(201.95603,47.454902,7.9280014",3.9640007",11.892002",5.946001",2.55409) # font="helvetica 10 bold roman" text={Box Annulus}
+point(201.97162,47.457976) # point=circle text={Circle Point}
+point(201.96638,47.454589) # point=box color=red width=3 text={Box Point}
+point(201.9614,47.451661) # point=diamond text={Diamond Point}
+point(201.97341,47.455428) # point=cross color=blue text={Cross Point}
+point(201.96879,47.452645) # point=x text={X Point}
+point(201.96433,47.449663) # point=arrow color=magenta text={Arrow Point}
+point(201.97152,47.450458) # point=boxcircle text={BoxCircle Point}
+# projection(201.94887,47.447713,201.93966,47.446938,3.9640007") text={Projection}
+panda(201.95546,47.447982,317.55409,587.55409,3,0",5.946001",2) # text={Panda}
+panda(201.96034,47.444211,9.13599,47.55409,1,0",2.9730005",1) # panda=(9.13599 47.55409 137.55409 227.55409)(0" 2.9730005" 5.946001") text={Panda 2}
+panda(201.96034,47.444211,9.13599,47.55409,1,2.9730005",5.946001",1) # panda=ignore
+panda(201.96034,47.444211,47.55409,137.55409,1,0",2.9730005",1) # panda=ignore
+panda(201.96034,47.444211,47.55409,137.55409,1,2.9730005",5.946001",1) # panda=ignore
+panda(201.96034,47.444211,137.55409,227.55409,1,0",2.9730005",1) # panda=ignore
+panda(201.96034,47.444211,137.55409,227.55409,1,2.9730005",5.946001",1) # panda=ignore
+# compass(201.94039,47.444033,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
+epanda(201.95097,47.444611,317.55409,587.55409,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409) # text={Epanda}
+epanda(201.95568,47.440883,2.55409,47.55409,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409) # epanda=(2.55409 47.55409 137.55409 227.55409)(2.9730005" 1.4865003" 5.946001" 2.9730005")(2.55409) text={Epanda 2}
+epanda(201.95568,47.440883,47.55409,137.55409,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409) # epanda=ignore
+epanda(201.95568,47.440883,137.55409,227.55409,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409) # epanda=ignore
+bpanda(201.94574,47.441378,317.55409,587.55409,3,7.9280014",3.9640007",11.892002",5.946001",1,2.55409) # text={Bpanda}
+bpanda(201.95082,47.437951,2.55409,47.55409,1,7.9280014",3.9640007",11.892002",5.946001",1,2.55409) # bpanda=(2.55409 47.55409 137.55409 227.55409)(7.9280014" 3.9640007" 11.892002" 5.946001")(2.55409) text={Bpanda 2}
+bpanda(201.95082,47.437951,47.55409,137.55409,1,7.9280014",3.9640007",11.892002",5.946001",1,2.55409) # bpanda=ignore
+bpanda(201.95082,47.437951,137.55409,227.55409,1,7.9280014",3.9640007",11.892002",5.946001",1,2.55409) # bpanda=ignore
diff --git a/tests/ds9.fk4.strip.reg b/tests/ds9.fk4.strip.reg
index 02e5901..7a865de 100644
--- a/tests/ds9.fk4.strip.reg
+++ b/tests/ds9.fk4.strip.reg
@@ -1 +1 @@
-fk4;circle(201.96055,47.465832,3.9640007");-ellipse(201.95656,47.462095,7.9280014",3.9640007",2.553089);-box(201.95126,47.458669,15.856003",7.9280014",2.553089);polygon(201.9465,47.456543,201.94215,47.456674,201.94196,47.453737,201.9463,47.453607);-line(201.94176,47.451746,201.93535,47.451588);annulus(201.96671,47.461282,1.9820003",3.9640007",5.946001");ellipse(201.96182,47.457961,2.9730005",1.4865003",5.946001",2.9730005",2.553089);box(201.95665,47.454688,7.9280014",3.9640007",11.892002",5.946001",2.553089);point(201.97224,47.457763);point(201.967,47.454375);point(201.96202,47.451447);point(201.97403,47.455214);point(201.96941,47.452432);point(201.96495,47.449449);point(201.97214,47.450245);panda(201.95608,47.447769,317.55309,587.55309,3,0",5.946001",2);panda(201.96096,47.443997,9.134989,47.553089,1,0",2.9730005",1);panda(201.96096,47.443997,9.134989,47.553089,1,2.9730005",5.946001",1);panda(201.96096,47.443997,47.553089,137.55309,1,0",2.9730005",1);panda(201.96096,47.443997,47.553089,137.55309,1,2.9730005",5.946001",1);panda(201.96096,47.443997,137.55309,227.55309,1,0",2.9730005",1);panda(201.96096,47.443997,137.55309,227.55309,1,2.9730005",5.946001",1);epanda(201.95159,47.444397,317.55309,587.55309,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089);epanda(201.9563,47.44067,2.553089,47.553089,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089);epanda(201.9563,47.44067,47.553089,137.55309,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089);epanda(201.9563,47.44067,137.55309,227.55309,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.553089);bpanda(201.94636,47.441164,317.55309,587.55309,3,7.9280014",3.9640007",11.892002",5.946001",1,2.553089);bpanda(201.95144,47.437738,2.553089,47.553089,1,7.9280014",3.9640007",11.892002",5.946001",1,2.553089);bpanda(201.95144,47.437738,47.553089,137.55309,1,7.9280014",3.9640007",11.892002",5.946001",1,2.553089);bpanda(201.95144,47.437738,137.55309,227.55309,1,7.9280014",3.9640007",11.892002",5.946001",1,2.553089);
\ No newline at end of file
+fk4;circle(201.95993,47.466046,3.9640007");-ellipse(201.95594,47.462308,7.9280014",3.9640007",2.55409);-box(201.95064,47.458883,15.856003",7.9280014",2.55409);polygon(201.94588,47.456757,201.94153,47.456887,201.94134,47.453951,201.94568,47.45382);-line(201.94114,47.45196,201.93473,47.451801);annulus(201.96609,47.461495,1.9820003",3.9640007",5.946001");ellipse(201.9612,47.458175,2.9730005",1.4865003",5.946001",2.9730005",2.55409);box(201.95603,47.454902,7.9280014",3.9640007",11.892002",5.946001",2.55409);point(201.97162,47.457976);point(201.96638,47.454589);point(201.9614,47.451661);point(201.97341,47.455428);point(201.96879,47.452645);point(201.96433,47.449663);point(201.97152,47.450458);panda(201.95546,47.447982,317.55409,587.55409,3,0",5.946001",2);panda(201.96034,47.444211,9.13599,47.55409,1,0",2.9730005",1);panda(201.96034,47.444211,9.13599,47.55409,1,2.9730005",5.946001",1);panda(201.96034,47.444211,47.55409,137.55409,1,0",2.9730005",1);panda(201.96034,47.444211,47.55409,137.55409,1,2.9730005",5.946001",1);panda(201.96034,47.444211,137.55409,227.55409,1,0",2.9730005",1);panda(201.96034,47.444211,137.55409,227.55409,1,2.9730005",5.946001",1);epanda(201.95097,47.444611,317.55409,587.55409,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409);epanda(201.95568,47.440883,2.55409,47.55409,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409);epanda(201.95568,47.440883,47.55409,137.55409,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409);epanda(201.95568,47.440883,137.55409,227.55409,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.55409);bpanda(201.94574,47.441378,317.55409,587.55409,3,7.9280014",3.9640007",11.892002",5.946001",1,2.55409);bpanda(201.95082,47.437951,2.55409,47.55409,1,7.9280014",3.9640007",11.892002",5.946001",1,2.55409);bpanda(201.95082,47.437951,47.55409,137.55409,1,7.9280014",3.9640007",11.892002",5.946001",1,2.55409);bpanda(201.95082,47.437951,137.55409,227.55409,1,7.9280014",3.9640007",11.892002",5.946001",1,2.55409);
\ No newline at end of file
diff --git a/tests/ds9.fk5.hms.reg b/tests/ds9.fk5.hms.reg
index 69f3832..7e0c7e1 100644
--- a/tests/ds9.fk5.hms.reg
+++ b/tests/ds9.fk5.hms.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk5
-circle(13:29:56.891,+47:12:29.65,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(13:29:55.941,+47:12:16.17,7.928",3.964",2.39831) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(13:29:54.679,+47:12:03.80,15.856",7.928",2.39831) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(13:29:53.543,+47:11:56.12,13:29:52.505,+47:11:56.56,13:29:52.462,+47:11:45.99,13:29:53.499,+47:11:45.55) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(13:29:52.415,+47:11:38.82,13:29:50.885,+47:11:38.21) # line=1 1 color=cyan text={Line}
-# vector(13:29:50.781,+47:11:29.41,7.928",2.39831) vector=1 color=red text={Vector}
-# text(13:29:50.178,+47:11:19.99) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(13:29:55.623,+47:11:38.99,13:29:53.930,+47:11:39.02) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(13:29:58.365,+47:12:13.31,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(13:29:57.201,+47:12:01.32,2.973",1.4865",5.946",2.973",2.39831) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(13:29:55.969,+47:11:49.51,7.928",3.964",11.892",5.946",2.39831) # font="helvetica 10 bold roman" text={Box Annulus}
-point(13:29:59.689,+47:12:00.68) # point=circle text={Circle Point}
-point(13:29:58.442,+47:11:48.45) # point=box color=red width=3 text={Box Point}
-point(13:29:57.256,+47:11:37.88) # point=diamond text={Diamond Point}
-point(13:30:00.120,+47:11:51.52) # point=cross color=blue text={Cross Point}
-point(13:29:59.018,+47:11:41.47) # point=x text={X Point}
-point(13:29:57.955,+47:11:30.70) # point=arrow color=magenta text={Arrow Point}
-point(13:29:59.674,+47:11:33.61) # point=boxcircle text={BoxCircle Point}
-# projection(13:29:54.266,+47:11:23.58,13:29:52.066,+47:11:20.73,3.964") text={Projection}
-panda(13:29:55.839,+47:11:24.59,317.398,587.398,3,0",5.946",2) # text={Panda}
-panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,0",2.973",1) # panda=(8.98021 47.3983 137.398 227.398)(0" 2.973" 5.946") text={Panda 2}
-panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,2.973",5.946",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,0",2.973",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,2.973",5.946",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,0",2.973",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,2.973",5.946",1) # panda=ignore
-# compass(13:29:52.244,+47:11:10.28,7.928") compass=physical {N} {E} 1 1 text={Compass}
-epanda(13:29:54.770,+47:11:12.43,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39831) # text={Epanda}
-epanda(13:29:55.899,+47:10:59.04,2.39831,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=(2.39831 47.3983 137.398 227.398)(2.973" 1.4865" 5.946" 2.973")(2.39831) text={Epanda 2}
-epanda(13:29:55.899,+47:10:59.04,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=ignore
-epanda(13:29:55.899,+47:10:59.04,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=ignore
-bpanda(13:29:53.525,+47:11:00.75,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39831) # text={Bpanda}
-bpanda(13:29:54.741,+47:10:48.45,2.39831,47.3983,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=(2.39831 47.3983 137.398 227.398)(7.928" 3.964" 11.892" 5.946")(2.39831) text={Bpanda 2}
-bpanda(13:29:54.741,+47:10:48.45,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=ignore
-bpanda(13:29:54.741,+47:10:48.45,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=ignore
-# circle3d(13:29:52.715,+47:10:44.27,1.982") text={Circle3d}
+circle(13:29:56.743,+47:12:30.42,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(13:29:55.792,+47:12:16.94,7.928",3.964",2.39831) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(13:29:54.530,+47:12:04.57,15.856",7.928",2.39831) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(13:29:53.394,+47:11:56.88,13:29:52.357,+47:11:57.32,13:29:52.314,+47:11:46.75,13:29:53.351,+47:11:46.31) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(13:29:52.267,+47:11:39.58,13:29:50.737,+47:11:38.97) # line=1 1 color=cyan text={Line}
+# vector(13:29:50.632,+47:11:30.18,7.928",2.39831) vector=1 color=red text={Vector}
+# text(13:29:50.030,+47:11:20.75) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(13:29:55.474,+47:11:39.76,13:29:53.782,+47:11:39.78) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(13:29:58.217,+47:12:14.07,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(13:29:57.053,+47:12:02.09,2.973",1.4865",5.946",2.973",2.39831) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(13:29:55.820,+47:11:50.27,7.928",3.964",11.892",5.946",2.39831) # font="helvetica 10 bold roman" text={Box Annulus}
+point(13:29:59.541,+47:12:01.44) # point=circle text={Circle Point}
+point(13:29:58.293,+47:11:49.21) # point=box color=red width=3 text={Box Point}
+point(13:29:57.107,+47:11:38.64) # point=diamond text={Diamond Point}
+point(13:29:59.971,+47:11:52.28) # point=cross color=blue text={Cross Point}
+point(13:29:58.870,+47:11:42.23) # point=x text={X Point}
+point(13:29:57.807,+47:11:31.47) # point=arrow color=magenta text={Arrow Point}
+point(13:29:59.526,+47:11:34.38) # point=boxcircle text={BoxCircle Point}
+# projection(13:29:54.118,+47:11:24.35,13:29:51.918,+47:11:21.50,3.964") text={Projection}
+panda(13:29:55.690,+47:11:25.36,317.398,587.398,3,0",5.946",2) # text={Panda}
+panda(13:29:56.859,+47:11:11.81,8.98021,47.3983,1,0",2.973",1) # panda=(8.98021 47.3983 137.398 227.398)(0" 2.973" 5.946") text={Panda 2}
+panda(13:29:56.859,+47:11:11.81,8.98021,47.3983,1,2.973",5.946",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.81,47.3983,137.398,1,0",2.973",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.81,47.3983,137.398,1,2.973",5.946",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.81,137.398,227.398,1,0",2.973",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.81,137.398,227.398,1,2.973",5.946",1) # panda=ignore
+# compass(13:29:52.095,+47:11:11.04,7.928") compass=physical {N} {E} 1 1 text={Compass}
+epanda(13:29:54.622,+47:11:13.19,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39831) # text={Epanda}
+epanda(13:29:55.750,+47:10:59.80,2.39831,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=(2.39831 47.3983 137.398 227.398)(2.973" 1.4865" 5.946" 2.973")(2.39831) text={Epanda 2}
+epanda(13:29:55.750,+47:10:59.80,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=ignore
+epanda(13:29:55.750,+47:10:59.80,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=ignore
+bpanda(13:29:53.377,+47:11:01.52,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39831) # text={Bpanda}
+bpanda(13:29:54.593,+47:10:49.22,2.39831,47.3983,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=(2.39831 47.3983 137.398 227.398)(7.928" 3.964" 11.892" 5.946")(2.39831) text={Bpanda 2}
+bpanda(13:29:54.593,+47:10:49.22,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=ignore
+bpanda(13:29:54.593,+47:10:49.22,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=ignore
diff --git a/tests/ds9.fk5.hms.strip.reg b/tests/ds9.fk5.hms.strip.reg
index 8287822..1c97a4b 100644
--- a/tests/ds9.fk5.hms.strip.reg
+++ b/tests/ds9.fk5.hms.strip.reg
@@ -1 +1 @@
-fk5;circle(13:29:56.891,+47:12:29.65,3.964");-ellipse(13:29:55.941,+47:12:16.17,7.928",3.964",2.39831);-box(13:29:54.679,+47:12:03.80,15.856",7.928",2.39831);polygon(13:29:53.543,+47:11:56.12,13:29:52.505,+47:11:56.56,13:29:52.462,+47:11:45.99,13:29:53.499,+47:11:45.55);-line(13:29:52.415,+47:11:38.82,13:29:50.885,+47:11:38.21);annulus(13:29:58.365,+47:12:13.31,1.982",3.964",5.946");ellipse(13:29:57.201,+47:12:01.32,2.973",1.4865",5.946",2.973",2.39831);box(13:29:55.969,+47:11:49.51,7.928",3.964",11.892",5.946",2.39831);point(13:29:59.689,+47:12:00.68);point(13:29:58.442,+47:11:48.45);point(13:29:57.256,+47:11:37.88);point(13:30:00.120,+47:11:51.52);point(13:29:59.018,+47:11:41.47);point(13:29:57.955,+47:11:30.70);point(13:29:59.674,+47:11:33.61);panda(13:29:55.839,+47:11:24.59,317.398,587.398,3,0",5.946",2);panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,0",2.973",1);panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,2.973",5.946",1);panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,0",2.973",1);panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,2.973",5.946",1);panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,0",2.973",1);panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,2.973",5.946",1);epanda(13:29:54.770,+47:11:12.43,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.899,+47:10:59.04,2.39831,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.899,+47:10:59.04,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.899,+47:10:59.04,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39831);bpanda(13:29:53.525,+47:11:00.75,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.741,+47:10:48.45,2.39831,47.3983,1,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.741,+47:10:48.45,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.741,+47:10:48.45,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39831);
\ No newline at end of file
+fk5;circle(13:29:56.743,+47:12:30.42,3.964");-ellipse(13:29:55.792,+47:12:16.94,7.928",3.964",2.39831);-box(13:29:54.530,+47:12:04.57,15.856",7.928",2.39831);polygon(13:29:53.394,+47:11:56.88,13:29:52.357,+47:11:57.32,13:29:52.314,+47:11:46.75,13:29:53.351,+47:11:46.31);-line(13:29:52.267,+47:11:39.58,13:29:50.737,+47:11:38.97);annulus(13:29:58.217,+47:12:14.07,1.982",3.964",5.946");ellipse(13:29:57.053,+47:12:02.09,2.973",1.4865",5.946",2.973",2.39831);box(13:29:55.820,+47:11:50.27,7.928",3.964",11.892",5.946",2.39831);point(13:29:59.541,+47:12:01.44);point(13:29:58.293,+47:11:49.21);point(13:29:57.107,+47:11:38.64);point(13:29:59.971,+47:11:52.28);point(13:29:58.870,+47:11:42.23);point(13:29:57.807,+47:11:31.47);point(13:29:59.526,+47:11:34.38);panda(13:29:55.690,+47:11:25.36,317.398,587.398,3,0",5.946",2);panda(13:29:56.859,+47:11:11.81,8.98021,47.3983,1,0",2.973",1);panda(13:29:56.859,+47:11:11.81,8.98021,47.3983,1,2.973",5.946",1);panda(13:29:56.859,+47:11:11.81,47.3983,137.398,1,0",2.973",1);panda(13:29:56.859,+47:11:11.81,47.3983,137.398,1,2.973",5.946",1);panda(13:29:56.859,+47:11:11.81,137.398,227.398,1,0",2.973",1);panda(13:29:56.859,+47:11:11.81,137.398,227.398,1,2.973",5.946",1);epanda(13:29:54.622,+47:11:13.19,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.750,+47:10:59.80,2.39831,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.750,+47:10:59.80,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.750,+47:10:59.80,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39831);bpanda(13:29:53.377,+47:11:01.52,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.593,+47:10:49.22,2.39831,47.3983,1,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.593,+47:10:49.22,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.593,+47:10:49.22,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39831);
\ No newline at end of file
diff --git a/tests/ds9.fk5.reg b/tests/ds9.fk5.reg
index 6c1b3ed..7aecfb4 100644
--- a/tests/ds9.fk5.reg
+++ b/tests/ds9.fk5.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk5
-circle(202.48705,47.208237,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(202.48309,47.204492,7.9280014",3.9640007",2.3983109) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(202.47783,47.201057,15.856003",7.9280014",2.3983109) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(202.47309,47.198922,202.46877,47.199044,202.46859,47.196108,202.47291,47.195985) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(202.4684,47.194116,202.46202,47.193946) # line=1 1 color=cyan text={Line}
-# vector(202.46159,47.191504,7.9280014",2.3983109) vector=1 color=red text={Vector}
-# text(202.45907,47.188886) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(202.48176,47.194165,202.47471,47.194171) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(202.49319,47.203697,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(202.48834,47.200368,2.9730005",1.4865003",5.946001",2.9730005",2.3983109) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(202.4832,47.197085,7.9280014",3.9640007",11.892002",5.946001",2.3983109) # font="helvetica 10 bold roman" text={Box Annulus}
-point(202.49871,47.200189) # point=circle text={Circle Point}
-point(202.49351,47.196791) # point=box color=red width=3 text={Box Point}
-point(202.48857,47.193854) # point=diamond text={Diamond Point}
-point(202.5005,47.197643) # point=cross color=blue text={Cross Point}
-point(202.49591,47.194852) # point=x text={X Point}
-point(202.49148,47.191862) # point=arrow color=magenta text={Arrow Point}
-point(202.49864,47.19267) # point=boxcircle text={BoxCircle Point}
-# projection(202.47611,47.189884,202.46694,47.189092,3.9640007") text={Projection}
-panda(202.48266,47.190165,317.39831,587.39831,3,0",5.946001",2) # text={Panda}
-panda(202.48753,47.186403,8.9802109,47.398311,1,0",2.9730005",1) # panda=(8.9802109 47.398311 137.39831 227.39831)(0" 2.9730005" 5.946001") text={Panda 2}
-panda(202.48753,47.186403,8.9802109,47.398311,1,2.9730005",5.946001",1) # panda=ignore
-panda(202.48753,47.186403,47.398311,137.39831,1,0",2.9730005",1) # panda=ignore
-panda(202.48753,47.186403,47.398311,137.39831,1,2.9730005",5.946001",1) # panda=ignore
-panda(202.48753,47.186403,137.39831,227.39831,1,0",2.9730005",1) # panda=ignore
-panda(202.48753,47.186403,137.39831,227.39831,1,2.9730005",5.946001",1) # panda=ignore
-# compass(202.46768,47.186188,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
-epanda(202.47821,47.186785,317.39831,587.39831,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # text={Epanda}
-epanda(202.48291,47.183066,2.3983109,47.398311,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=(2.3983109 47.398311 137.39831 227.39831)(2.9730005" 1.4865003" 5.946001" 2.9730005")(2.3983109) text={Epanda 2}
-epanda(202.48291,47.183066,47.398311,137.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=ignore
-epanda(202.48291,47.183066,137.39831,227.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=ignore
-bpanda(202.47302,47.183543,317.39831,587.39831,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # text={Bpanda}
-bpanda(202.47809,47.180126,2.3983109,47.398311,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=(2.3983109 47.398311 137.39831 227.39831)(7.9280014" 3.9640007" 11.892002" 5.946001")(2.3983109) text={Bpanda 2}
-bpanda(202.47809,47.180126,47.398311,137.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=ignore
-bpanda(202.47809,47.180126,137.39831,227.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=ignore
-# circle3d(202.46965,47.178963,1.9820003") text={Circle3d}
+circle(202.48643,47.208449,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(202.48247,47.204704,7.9280014",3.9640007",2.3983109) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(202.47721,47.201269,15.856003",7.9280014",2.3983109) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(202.47248,47.199134,202.46815,47.199257,202.46797,47.19632,202.4723,47.196197) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(202.46778,47.194329,202.4614,47.194158) # line=1 1 color=cyan text={Line}
+# vector(202.46097,47.191716,7.9280014",2.3983109) vector=1 color=red text={Vector}
+# text(202.45846,47.189099) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(202.48114,47.194378,202.47409,47.194383) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(202.49257,47.20391,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(202.48772,47.20058,2.9730005",1.4865003",5.946001",2.9730005",2.3983109) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(202.48258,47.197298,7.9280014",3.9640007",11.892002",5.946001",2.3983109) # font="helvetica 10 bold roman" text={Box Annulus}
+point(202.49809,47.200401) # point=circle text={Circle Point}
+point(202.49289,47.197004) # point=box color=red width=3 text={Box Point}
+point(202.48795,47.194067) # point=diamond text={Diamond Point}
+point(202.49988,47.197856) # point=cross color=blue text={Cross Point}
+point(202.49529,47.195065) # point=x text={X Point}
+point(202.49086,47.192074) # point=arrow color=magenta text={Arrow Point}
+point(202.49802,47.192883) # point=boxcircle text={BoxCircle Point}
+# projection(202.47549,47.190096,202.46632,47.189304,3.9640007") text={Projection}
+panda(202.48204,47.190378,317.39831,587.39831,3,0",5.946001",2) # text={Panda}
+panda(202.48691,47.186615,8.9802109,47.398311,1,0",2.9730005",1) # panda=(8.9802109 47.398311 137.39831 227.39831)(0" 2.9730005" 5.946001") text={Panda 2}
+panda(202.48691,47.186615,8.9802109,47.398311,1,2.9730005",5.946001",1) # panda=ignore
+panda(202.48691,47.186615,47.398311,137.39831,1,0",2.9730005",1) # panda=ignore
+panda(202.48691,47.186615,47.398311,137.39831,1,2.9730005",5.946001",1) # panda=ignore
+panda(202.48691,47.186615,137.39831,227.39831,1,0",2.9730005",1) # panda=ignore
+panda(202.48691,47.186615,137.39831,227.39831,1,2.9730005",5.946001",1) # panda=ignore
+# compass(202.46706,47.1864,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
+epanda(202.47759,47.186997,317.39831,587.39831,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # text={Epanda}
+epanda(202.48229,47.183279,2.3983109,47.398311,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=(2.3983109 47.398311 137.39831 227.39831)(2.9730005" 1.4865003" 5.946001" 2.9730005")(2.3983109) text={Epanda 2}
+epanda(202.48229,47.183279,47.398311,137.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=ignore
+epanda(202.48229,47.183279,137.39831,227.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=ignore
+bpanda(202.47241,47.183755,317.39831,587.39831,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # text={Bpanda}
+bpanda(202.47747,47.180338,2.3983109,47.398311,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=(2.3983109 47.398311 137.39831 227.39831)(7.9280014" 3.9640007" 11.892002" 5.946001")(2.3983109) text={Bpanda 2}
+bpanda(202.47747,47.180338,47.398311,137.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=ignore
+bpanda(202.47747,47.180338,137.39831,227.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=ignore
diff --git a/tests/ds9.fk5.strip.reg b/tests/ds9.fk5.strip.reg
index ed02170..78afd15 100644
--- a/tests/ds9.fk5.strip.reg
+++ b/tests/ds9.fk5.strip.reg
@@ -1 +1 @@
-fk5;circle(202.48705,47.208237,3.9640007");-ellipse(202.48309,47.204492,7.9280014",3.9640007",2.3983109);-box(202.47783,47.201057,15.856003",7.9280014",2.3983109);polygon(202.47309,47.198922,202.46877,47.199044,202.46859,47.196108,202.47291,47.195985);-line(202.4684,47.194116,202.46202,47.193946);annulus(202.49319,47.203697,1.9820003",3.9640007",5.946001");ellipse(202.48834,47.200368,2.9730005",1.4865003",5.946001",2.9730005",2.3983109);box(202.4832,47.197085,7.9280014",3.9640007",11.892002",5.946001",2.3983109);point(202.49871,47.200189);point(202.49351,47.196791);point(202.48857,47.193854);point(202.5005,47.197643);point(202.49591,47.194852);point(202.49148,47.191862);point(202.49864,47.19267);panda(202.48266,47.190165,317.39831,587.39831,3,0",5.946001",2);panda(202.48753,47.186403,8.9802109,47.398311,1,0",2.9730005",1);panda(202.48753,47.186403,8.9802109,47.398311,1,2.9730005",5.946001",1);panda(202.48753,47.186403,47.398311,137.39831,1,0",2.9730005",1);panda(202.48753,47.186403,47.398311,137.39831,1,2.9730005",5.946001",1);panda(202.48753,47.186403,137.39831,227.39831,1,0",2.9730005",1);panda(202.48753,47.186403,137.39831,227.39831,1,2.9730005",5.946001",1);epanda(202.47821,47.186785,317.39831,587.39831,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48291,47.183066,2.3983109,47.398311,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48291,47.183066,47.398311,137.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48291,47.183066,137.39831,227.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);bpanda(202.47302,47.183543,317.39831,587.39831,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47809,47.180126,2.3983109,47.398311,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47809,47.180126,47.398311,137.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47809,47.180126,137.39831,227.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);
\ No newline at end of file
+fk5;circle(202.48643,47.208449,3.9640007");-ellipse(202.48247,47.204704,7.9280014",3.9640007",2.3983109);-box(202.47721,47.201269,15.856003",7.9280014",2.3983109);polygon(202.47248,47.199134,202.46815,47.199257,202.46797,47.19632,202.4723,47.196197);-line(202.46778,47.194329,202.4614,47.194158);annulus(202.49257,47.20391,1.9820003",3.9640007",5.946001");ellipse(202.48772,47.20058,2.9730005",1.4865003",5.946001",2.9730005",2.3983109);box(202.48258,47.197298,7.9280014",3.9640007",11.892002",5.946001",2.3983109);point(202.49809,47.200401);point(202.49289,47.197004);point(202.48795,47.194067);point(202.49988,47.197856);point(202.49529,47.195065);point(202.49086,47.192074);point(202.49802,47.192883);panda(202.48204,47.190378,317.39831,587.39831,3,0",5.946001",2);panda(202.48691,47.186615,8.9802109,47.398311,1,0",2.9730005",1);panda(202.48691,47.186615,8.9802109,47.398311,1,2.9730005",5.946001",1);panda(202.48691,47.186615,47.398311,137.39831,1,0",2.9730005",1);panda(202.48691,47.186615,47.398311,137.39831,1,2.9730005",5.946001",1);panda(202.48691,47.186615,137.39831,227.39831,1,0",2.9730005",1);panda(202.48691,47.186615,137.39831,227.39831,1,2.9730005",5.946001",1);epanda(202.47759,47.186997,317.39831,587.39831,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48229,47.183279,2.3983109,47.398311,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48229,47.183279,47.398311,137.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48229,47.183279,137.39831,227.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);bpanda(202.47241,47.183755,317.39831,587.39831,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47747,47.180338,2.3983109,47.398311,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47747,47.180338,47.398311,137.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47747,47.180338,137.39831,227.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);
\ No newline at end of file
diff --git a/tests/ds9.galactic.hms.reg b/tests/ds9.galactic.hms.reg
index 2091edf..f00999e 100644
--- a/tests/ds9.galactic.hms.reg
+++ b/tests/ds9.galactic.hms.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 galactic
-circle(+104:50:10.908,+68:32:38.464,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(+104:50:20.096,+68:32:54.718,7.928",3.964",158.389) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(+104:50:38.471,+68:33:11.247,15.856",7.928",158.389) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(+104:50:58.854,+68:33:22.977,+104:51:25.768,+68:33:26.871,+104:51:15.116,+68:33:36.710,+104:50:48.199,+68:33:32.816) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(+104:51:08.330,+68:33:43.453,+104:51:46.639,+68:33:50.350) # line=1 1 color=cyan text={Line}
-# vector(+104:51:39.534,+68:33:58.818,7.928",158.389) vector=1 color=red text={Vector}
-# text(+104:51:44.421,+68:34:09.924) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(+104:49:46.822,+68:33:29.997,+104:50:29.960,+68:33:36.996) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(+104:49:15.203,+68:32:47.274,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(+104:49:31.493,+68:33:03.053,2.973",1.4865",5.946",2.973",158.389) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(+104:49:49.713,+68:33:18.959,7.928",3.964",11.892",5.946",158.389) # font="helvetica 10 bold roman" text={Box Annulus}
-point(+104:48:27.434,+68:32:53.313) # point=circle text={Circle Point}
-point(+104:48:45.571,+68:33:09.663) # point=box color=red width=3 text={Box Point}
-point(+104:49:03.986,+68:33:24.243) # point=diamond text={Diamond Point}
-point(+104:48:06.279,+68:32:59.893) # point=cross color=blue text={Cross Point}
-point(+104:48:23.111,+68:33:13.643) # point=x text={X Point}
-point(+104:48:38.174,+68:33:27.889) # point=arrow color=magenta text={Arrow Point}
-point(+104:47:57.663,+68:33:18.094) # point=boxcircle text={BoxCircle Point}
-# projection(+104:50:04.231,+68:33:49.703,+104:50:57.113,+68:34:01.425,3.964") text={Projection}
-panda(+104:49:25.285,+68:33:42.254,113.389,383.389,3,0",5.946",2) # text={Panda}
-panda(+104:48:40.416,+68:33:49.773,164.971,203.389,1,0",2.973",1) # panda=(164.971 203.389 293.389 23.3893)(0" 2.973" 5.946") text={Panda 2}
-panda(+104:48:40.416,+68:33:49.773,164.971,203.389,1,2.973",5.946",1) # panda=ignore
-panda(+104:48:40.416,+68:33:49.773,203.389,293.389,1,0",2.973",1) # panda=ignore
-panda(+104:48:40.416,+68:33:49.773,203.389,293.389,1,2.973",5.946",1) # panda=ignore
-panda(+104:48:40.416,+68:33:49.773,293.389,383.389,1,0",2.973",1) # panda=ignore
-panda(+104:48:40.416,+68:33:49.773,293.389,383.389,1,2.973",5.946",1) # panda=ignore
-# compass(+104:50:40.959,+68:34:10.243,7.928") compass=physical {N} {E} 1 1 text={Compass}
-epanda(+104:49:38.951,+68:33:57.801,113.389,383.389,3,2.973",1.4865",5.946",2.973",1,158.389) # text={Epanda}
-epanda(+104:48:55.286,+68:34:05.346,158.389,203.389,1,2.973",1.4865",5.946",2.973",1,158.389) # epanda=(158.389 203.389 293.389 23.3893)(2.973" 1.4865" 5.946" 2.973")(158.389) text={Epanda 2}
-epanda(+104:48:55.286,+68:34:05.346,203.389,293.389,1,2.973",1.4865",5.946",2.973",1,158.389) # epanda=ignore
-epanda(+104:48:55.286,+68:34:05.346,293.389,383.389,1,2.973",1.4865",5.946",2.973",1,158.389) # epanda=ignore
-bpanda(+104:49:57.683,+68:34:13.628,113.389,383.389,3,7.928",3.964",11.892",5.946",1,158.389) # text={Bpanda}
-bpanda(+104:49:13.002,+68:34:19.822,158.389,203.389,1,7.928",3.964",11.892",5.946",1,158.389) # bpanda=(158.389 203.389 293.389 23.3893)(7.928" 3.964" 11.892" 5.946")(158.389) text={Bpanda 2}
-bpanda(+104:49:13.002,+68:34:19.822,203.389,293.389,1,7.928",3.964",11.892",5.946",1,158.389) # bpanda=ignore
-bpanda(+104:49:13.002,+68:34:19.822,293.389,383.389,1,7.928",3.964",11.892",5.946",1,158.389) # bpanda=ignore
-# circle3d(+104:49:59.987,+68:34:32.051,1.982") text={Circle3d}
+circle(+104:50:15.532,+68:32:38.380,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(+104:50:24.720,+68:32:54.634,7.928",3.964",158.389) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(+104:50:43.097,+68:33:11.163,15.856",7.928",158.389) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(+104:51:03.480,+68:33:22.893,+104:51:30.395,+68:33:26.787,+104:51:19.743,+68:33:36.626,+104:50:52.826,+68:33:32.732) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(+104:51:12.957,+68:33:43.369,+104:51:51.267,+68:33:50.265) # line=1 1 color=cyan text={Line}
+# vector(+104:51:44.162,+68:33:58.733,7.928",158.389) vector=1 color=red text={Vector}
+# text(+104:51:49.050,+68:34:09.839) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(+104:49:51.449,+68:33:29.913,+104:50:34.587,+68:33:36.913) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(+104:49:19.827,+68:32:47.191,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(+104:49:36.118,+68:33:02.969,2.973",1.4865",5.946",2.973",158.389) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(+104:49:54.339,+68:33:18.875,7.928",3.964",11.892",5.946",158.389) # font="helvetica 10 bold roman" text={Box Annulus}
+point(+104:48:32.059,+68:32:53.230) # point=circle text={Circle Point}
+point(+104:48:50.197,+68:33:09.580) # point=box color=red width=3 text={Box Point}
+point(+104:49:08.613,+68:33:24.159) # point=diamond text={Diamond Point}
+point(+104:48:10.904,+68:32:59.810) # point=cross color=blue text={Cross Point}
+point(+104:48:27.737,+68:33:13.560) # point=x text={X Point}
+point(+104:48:42.801,+68:33:27.806) # point=arrow color=magenta text={Arrow Point}
+point(+104:48:02.289,+68:33:18.011) # point=boxcircle text={BoxCircle Point}
+# projection(+104:50:08.859,+68:33:49.619,+104:51:01.742,+68:34:01.341,3.964") text={Projection}
+panda(+104:49:29.913,+68:33:42.170,113.389,383.389,3,0",5.946",2) # text={Panda}
+panda(+104:48:45.044,+68:33:49.690,164.971,203.389,1,0",2.973",1) # panda=(164.971 203.389 293.389 23.3893)(0" 2.973" 5.946") text={Panda 2}
+panda(+104:48:45.044,+68:33:49.690,164.971,203.389,1,2.973",5.946",1) # panda=ignore
+panda(+104:48:45.044,+68:33:49.690,203.389,293.389,1,0",2.973",1) # panda=ignore
+panda(+104:48:45.044,+68:33:49.690,203.389,293.389,1,2.973",5.946",1) # panda=ignore
+panda(+104:48:45.044,+68:33:49.690,293.389,383.389,1,0",2.973",1) # panda=ignore
+panda(+104:48:45.044,+68:33:49.690,293.389,383.389,1,2.973",5.946",1) # panda=ignore
+# compass(+104:50:45.588,+68:34:10.159,7.928") compass=physical {N} {E} 1 1 text={Compass}
+epanda(+104:49:43.580,+68:33:57.717,113.389,383.389,3,2.973",1.4865",5.946",2.973",1,158.389) # text={Epanda}
+epanda(+104:48:59.915,+68:34:05.263,158.389,203.389,1,2.973",1.4865",5.946",2.973",1,158.389) # epanda=(158.389 203.389 293.389 23.3893)(2.973" 1.4865" 5.946" 2.973")(158.389) text={Epanda 2}
+epanda(+104:48:59.915,+68:34:05.263,203.389,293.389,1,2.973",1.4865",5.946",2.973",1,158.389) # epanda=ignore
+epanda(+104:48:59.915,+68:34:05.263,293.389,383.389,1,2.973",1.4865",5.946",2.973",1,158.389) # epanda=ignore
+bpanda(+104:50:02.312,+68:34:13.544,113.389,383.389,3,7.928",3.964",11.892",5.946",1,158.389) # text={Bpanda}
+bpanda(+104:49:17.632,+68:34:19.739,158.389,203.389,1,7.928",3.964",11.892",5.946",1,158.389) # bpanda=(158.389 203.389 293.389 23.3893)(7.928" 3.964" 11.892" 5.946")(158.389) text={Bpanda 2}
+bpanda(+104:49:17.632,+68:34:19.739,203.389,293.389,1,7.928",3.964",11.892",5.946",1,158.389) # bpanda=ignore
+bpanda(+104:49:17.632,+68:34:19.739,293.389,383.389,1,7.928",3.964",11.892",5.946",1,158.389) # bpanda=ignore
diff --git a/tests/ds9.galactic.hms.strip.reg b/tests/ds9.galactic.hms.strip.reg
index ed061ef..af30ccb 100644
--- a/tests/ds9.galactic.hms.strip.reg
+++ b/tests/ds9.galactic.hms.strip.reg
@@ -1 +1 @@
-galactic;circle(+104:50:10.908,+68:32:38.464,3.964");-ellipse(+104:50:20.096,+68:32:54.718,7.928",3.964",158.389);-box(+104:50:38.471,+68:33:11.247,15.856",7.928",158.389);polygon(+104:50:58.854,+68:33:22.977,+104:51:25.768,+68:33:26.871,+104:51:15.116,+68:33:36.710,+104:50:48.199,+68:33:32.816);-line(+104:51:08.330,+68:33:43.453,+104:51:46.639,+68:33:50.350);annulus(+104:49:15.203,+68:32:47.274,1.982",3.964",5.946");ellipse(+104:49:31.493,+68:33:03.053,2.973",1.4865",5.946",2.973",158.389);box(+104:49:49.713,+68:33:18.959,7.928",3.964",11.892",5.946",158.389);point(+104:48:27.434,+68:32:53.313);point(+104:48:45.571,+68:33:09.663);point(+104:49:03.986,+68:33:24.243);point(+104:48:06.279,+68:32:59.893);point(+104:48:23.111,+68:33:13.643);point(+104:48:38.174,+68:33:27.889);point(+104:47:57.663,+68:33:18.094);panda(+104:49:25.285,+68:33:42.254,113.389,383.389,3,0",5.946",2);panda(+104:48:40.416,+68:33:49.773,164.971,203.389,1,0",2.973",1);panda(+104:48:40.416,+68:33:49.773,164.971,203.389,1,2.973",5.946",1);panda(+104:48:40.416,+68:33:49.773,203.389,293.389,1,0",2.973",1);panda(+104:48:40.416,+68:33:49.773,203.389,293.389,1,2.973",5.946",1);panda(+104:48:40.416,+68:33:49.773,293.389,383.389,1,0",2.973",1);panda(+104:48:40.416,+68:33:49.773,293.389,383.389,1,2.973",5.946",1);epanda(+104:49:38.951,+68:33:57.801,113.389,383.389,3,2.973",1.4865",5.946",2.973",1,158.389);epanda(+104:48:55.286,+68:34:05.346,158.389,203.389,1,2.973",1.4865",5.946",2.973",1,158.389);epanda(+104:48:55.286,+68:34:05.346,203.389,293.389,1,2.973",1.4865",5.946",2.973",1,158.389);epanda(+104:48:55.286,+68:34:05.346,293.389,383.389,1,2.973",1.4865",5.946",2.973",1,158.389);bpanda(+104:49:57.683,+68:34:13.628,113.389,383.389,3,7.928",3.964",11.892",5.946",1,158.389);bpanda(+104:49:13.002,+68:34:19.822,158.389,203.389,1,7.928",3.964",11.892",5.946",1,158.389);bpanda(+104:49:13.002,+68:34:19.822,203.389,293.389,1,7.928",3.964",11.892",5.946",1,158.389);bpanda(+104:49:13.002,+68:34:19.822,293.389,383.389,1,7.928",3.964",11.892",5.946",1,158.389);
\ No newline at end of file
+galactic;circle(+104:50:15.532,+68:32:38.380,3.964");-ellipse(+104:50:24.720,+68:32:54.634,7.928",3.964",158.389);-box(+104:50:43.097,+68:33:11.163,15.856",7.928",158.389);polygon(+104:51:03.480,+68:33:22.893,+104:51:30.395,+68:33:26.787,+104:51:19.743,+68:33:36.626,+104:50:52.826,+68:33:32.732);-line(+104:51:12.957,+68:33:43.369,+104:51:51.267,+68:33:50.265);annulus(+104:49:19.827,+68:32:47.191,1.982",3.964",5.946");ellipse(+104:49:36.118,+68:33:02.969,2.973",1.4865",5.946",2.973",158.389);box(+104:49:54.339,+68:33:18.875,7.928",3.964",11.892",5.946",158.389);point(+104:48:32.059,+68:32:53.230);point(+104:48:50.197,+68:33:09.580);point(+104:49:08.613,+68:33:24.159);point(+104:48:10.904,+68:32:59.810);point(+104:48:27.737,+68:33:13.560);point(+104:48:42.801,+68:33:27.806);point(+104:48:02.289,+68:33:18.011);panda(+104:49:29.913,+68:33:42.170,113.389,383.389,3,0",5.946",2);panda(+104:48:45.044,+68:33:49.690,164.971,203.389,1,0",2.973",1);panda(+104:48:45.044,+68:33:49.690,164.971,203.389,1,2.973",5.946",1);panda(+104:48:45.044,+68:33:49.690,203.389,293.389,1,0",2.973",1);panda(+104:48:45.044,+68:33:49.690,203.389,293.389,1,2.973",5.946",1);panda(+104:48:45.044,+68:33:49.690,293.389,383.389,1,0",2.973",1);panda(+104:48:45.044,+68:33:49.690,293.389,383.389,1,2.973",5.946",1);epanda(+104:49:43.580,+68:33:57.717,113.389,383.389,3,2.973",1.4865",5.946",2.973",1,158.389);epanda(+104:48:59.915,+68:34:05.263,158.389,203.389,1,2.973",1.4865",5.946",2.973",1,158.389);epanda(+104:48:59.915,+68:34:05.263,203.389,293.389,1,2.973",1.4865",5.946",2.973",1,158.389);epanda(+104:48:59.915,+68:34:05.263,293.389,383.389,1,2.973",1.4865",5.946",2.973",1,158.389);bpanda(+104:50:02.312,+68:34:13.544,113.389,383.389,3,7.928",3.964",11.892",5.946",1,158.389);bpanda(+104:49:17.632,+68:34:19.739,158.389,203.389,1,7.928",3.964",11.892",5.946",1,158.389);bpanda(+104:49:17.632,+68:34:19.739,203.389,293.389,1,7.928",3.964",11.892",5.946",1,158.389);bpanda(+104:49:17.632,+68:34:19.739,293.389,383.389,1,7.928",3.964",11.892",5.946",1,158.389);
\ No newline at end of file
diff --git a/tests/ds9.galactic.reg b/tests/ds9.galactic.reg
index 2a2b9b1..47b74b3 100644
--- a/tests/ds9.galactic.reg
+++ b/tests/ds9.galactic.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 galactic
-circle(104.83636,68.544018,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(104.83892,68.548533,7.9280014",3.9640007",158.38935) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(104.84402,68.553124,15.856003",7.9280014",158.38935) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(104.84968,68.556382,104.85716,68.557464,104.8542,68.560197,104.84672,68.559116) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(104.85231,68.56207,104.86296,68.563986) # line=1 1 color=cyan text={Line}
-# vector(104.86098,68.566338,7.9280014",158.38935) vector=1 color=red text={Vector}
-# text(104.86234,68.569423) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(104.82967,68.558332,104.84166,68.560277) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(104.82089,68.546465,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(104.82541,68.550848,2.9730005",1.4865003",5.946001",2.9730005",158.38935) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(104.83048,68.555266,7.9280014",3.9640007",11.892002",5.946001",158.38935) # font="helvetica 10 bold roman" text={Box Annulus}
-point(104.80762,68.548142) # point=circle text={Circle Point}
-point(104.81266,68.552684) # point=box color=red width=3 text={Box Point}
-point(104.81777,68.556734) # point=diamond text={Diamond Point}
-point(104.80174,68.54997) # point=cross color=blue text={Cross Point}
-point(104.80642,68.55379) # point=x text={X Point}
-point(104.8106,68.557747) # point=arrow color=magenta text={Arrow Point}
-point(104.79935,68.555026) # point=boxcircle text={BoxCircle Point}
-# projection(104.83451,68.563806,104.8492,68.567063,3.9640007") text={Projection}
-panda(104.82369,68.561737,113.38935,383.38935,3,0",5.946001",2) # text={Panda}
-panda(104.81123,68.563826,164.97125,203.38935,1,0",2.9730005",1) # panda=(164.97125 203.38935 293.38935 23.389346)(0" 2.9730005" 5.946001") text={Panda 2}
-panda(104.81123,68.563826,164.97125,203.38935,1,2.9730005",5.946001",1) # panda=ignore
-panda(104.81123,68.563826,203.38935,293.38935,1,0",2.9730005",1) # panda=ignore
-panda(104.81123,68.563826,203.38935,293.38935,1,2.9730005",5.946001",1) # panda=ignore
-panda(104.81123,68.563826,293.38935,383.38935,1,0",2.9730005",1) # panda=ignore
-panda(104.81123,68.563826,293.38935,383.38935,1,2.9730005",5.946001",1) # panda=ignore
-# compass(104.84471,68.569512,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
-epanda(104.82749,68.566056,113.38935,383.38935,3,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # text={Epanda}
-epanda(104.81536,68.568152,158.38935,203.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # epanda=(158.38935 203.38935 293.38935 23.389346)(2.9730005" 1.4865003" 5.946001" 2.9730005")(158.38935) text={Epanda 2}
-epanda(104.81536,68.568152,203.38935,293.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # epanda=ignore
-epanda(104.81536,68.568152,293.38935,383.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # epanda=ignore
-bpanda(104.83269,68.570452,113.38935,383.38935,3,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # text={Bpanda}
-bpanda(104.82028,68.572173,158.38935,203.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # bpanda=(158.38935 203.38935 293.38935 23.389346)(7.9280014" 3.9640007" 11.892002" 5.946001")(158.38935) text={Bpanda 2}
-bpanda(104.82028,68.572173,203.38935,293.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # bpanda=ignore
-bpanda(104.82028,68.572173,293.38935,383.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # bpanda=ignore
-# circle3d(104.83333,68.57557,1.9820003") text={Circle3d}
+circle(104.83765,68.543994,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(104.8402,68.54851,7.9280014",3.9640007",158.38935) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(104.8453,68.553101,15.856003",7.9280014",158.38935) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(104.85097,68.556359,104.85844,68.557441,104.85548,68.560174,104.84801,68.559092) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(104.8536,68.562047,104.86424,68.563963) # line=1 1 color=cyan text={Line}
+# vector(104.86227,68.566315,7.9280014",158.38935) vector=1 color=red text={Vector}
+# text(104.86363,68.5694) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(104.83096,68.558309,104.84294,68.560253) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(104.82217,68.546442,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(104.8267,68.550825,2.9730005",1.4865003",5.946001",2.9730005",158.38935) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(104.83176,68.555243,7.9280014",3.9640007",11.892002",5.946001",158.38935) # font="helvetica 10 bold roman" text={Box Annulus}
+point(104.80891,68.548119) # point=circle text={Circle Point}
+point(104.81394,68.552661) # point=box color=red width=3 text={Box Point}
+point(104.81906,68.556711) # point=diamond text={Diamond Point}
+point(104.80303,68.549947) # point=cross color=blue text={Cross Point}
+point(104.8077,68.553767) # point=x text={X Point}
+point(104.81189,68.557724) # point=arrow color=magenta text={Arrow Point}
+point(104.80064,68.555003) # point=boxcircle text={BoxCircle Point}
+# projection(104.83579,68.563783,104.85048,68.567039,3.9640007") text={Projection}
+panda(104.82498,68.561714,113.38935,383.38935,3,0",5.946001",2) # text={Panda}
+panda(104.81251,68.563803,164.97125,203.38935,1,0",2.9730005",1) # panda=(164.97125 203.38935 293.38935 23.389346)(0" 2.9730005" 5.946001") text={Panda 2}
+panda(104.81251,68.563803,164.97125,203.38935,1,2.9730005",5.946001",1) # panda=ignore
+panda(104.81251,68.563803,203.38935,293.38935,1,0",2.9730005",1) # panda=ignore
+panda(104.81251,68.563803,203.38935,293.38935,1,2.9730005",5.946001",1) # panda=ignore
+panda(104.81251,68.563803,293.38935,383.38935,1,0",2.9730005",1) # panda=ignore
+panda(104.81251,68.563803,293.38935,383.38935,1,2.9730005",5.946001",1) # panda=ignore
+# compass(104.846,68.569488,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
+epanda(104.82877,68.566033,113.38935,383.38935,3,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # text={Epanda}
+epanda(104.81664,68.568129,158.38935,203.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # epanda=(158.38935 203.38935 293.38935 23.389346)(2.9730005" 1.4865003" 5.946001" 2.9730005")(158.38935) text={Epanda 2}
+epanda(104.81664,68.568129,203.38935,293.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # epanda=ignore
+epanda(104.81664,68.568129,293.38935,383.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935) # epanda=ignore
+bpanda(104.83398,68.570429,113.38935,383.38935,3,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # text={Bpanda}
+bpanda(104.82156,68.57215,158.38935,203.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # bpanda=(158.38935 203.38935 293.38935 23.389346)(7.9280014" 3.9640007" 11.892002" 5.946001")(158.38935) text={Bpanda 2}
+bpanda(104.82156,68.57215,203.38935,293.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # bpanda=ignore
+bpanda(104.82156,68.57215,293.38935,383.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935) # bpanda=ignore
diff --git a/tests/ds9.galactic.strip.reg b/tests/ds9.galactic.strip.reg
index fb1034a..5ea05f7 100644
--- a/tests/ds9.galactic.strip.reg
+++ b/tests/ds9.galactic.strip.reg
@@ -1 +1 @@
-galactic;circle(104.83636,68.544018,3.9640007");-ellipse(104.83892,68.548533,7.9280014",3.9640007",158.38935);-box(104.84402,68.553124,15.856003",7.9280014",158.38935);polygon(104.84968,68.556382,104.85716,68.557464,104.8542,68.560197,104.84672,68.559116);-line(104.85231,68.56207,104.86296,68.563986);annulus(104.82089,68.546465,1.9820003",3.9640007",5.946001");ellipse(104.82541,68.550848,2.9730005",1.4865003",5.946001",2.9730005",158.38935);box(104.83048,68.555266,7.9280014",3.9640007",11.892002",5.946001",158.38935);point(104.80762,68.548142);point(104.81266,68.552684);point(104.81777,68.556734);point(104.80174,68.54997);point(104.80642,68.55379);point(104.8106,68.557747);point(104.79935,68.555026);panda(104.82369,68.561737,113.38935,383.38935,3,0",5.946001",2);panda(104.81123,68.563826,164.97125,203.38935,1,0",2.9730005",1);panda(104.81123,68.563826,164.97125,203.38935,1,2.9730005",5.946001",1);panda(104.81123,68.563826,203.38935,293.38935,1,0",2.9730005",1);panda(104.81123,68.563826,203.38935,293.38935,1,2.9730005",5.946001",1);panda(104.81123,68.563826,293.38935,383.38935,1,0",2.9730005",1);panda(104.81123,68.563826,293.38935,383.38935,1,2.9730005",5.946001",1);epanda(104.82749,68.566056,113.38935,383.38935,3,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);epanda(104.81536,68.568152,158.38935,203.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);epanda(104.81536,68.568152,203.38935,293.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);epanda(104.81536,68.568152,293.38935,383.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);bpanda(104.83269,68.570452,113.38935,383.38935,3,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);bpanda(104.82028,68.572173,158.38935,203.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);bpanda(104.82028,68.572173,203.38935,293.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);bpanda(104.82028,68.572173,293.38935,383.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);
\ No newline at end of file
+galactic;circle(104.83765,68.543994,3.9640007");-ellipse(104.8402,68.54851,7.9280014",3.9640007",158.38935);-box(104.8453,68.553101,15.856003",7.9280014",158.38935);polygon(104.85097,68.556359,104.85844,68.557441,104.85548,68.560174,104.84801,68.559092);-line(104.8536,68.562047,104.86424,68.563963);annulus(104.82217,68.546442,1.9820003",3.9640007",5.946001");ellipse(104.8267,68.550825,2.9730005",1.4865003",5.946001",2.9730005",158.38935);box(104.83176,68.555243,7.9280014",3.9640007",11.892002",5.946001",158.38935);point(104.80891,68.548119);point(104.81394,68.552661);point(104.81906,68.556711);point(104.80303,68.549947);point(104.8077,68.553767);point(104.81189,68.557724);point(104.80064,68.555003);panda(104.82498,68.561714,113.38935,383.38935,3,0",5.946001",2);panda(104.81251,68.563803,164.97125,203.38935,1,0",2.9730005",1);panda(104.81251,68.563803,164.97125,203.38935,1,2.9730005",5.946001",1);panda(104.81251,68.563803,203.38935,293.38935,1,0",2.9730005",1);panda(104.81251,68.563803,203.38935,293.38935,1,2.9730005",5.946001",1);panda(104.81251,68.563803,293.38935,383.38935,1,0",2.9730005",1);panda(104.81251,68.563803,293.38935,383.38935,1,2.9730005",5.946001",1);epanda(104.82877,68.566033,113.38935,383.38935,3,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);epanda(104.81664,68.568129,158.38935,203.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);epanda(104.81664,68.568129,203.38935,293.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);epanda(104.81664,68.568129,293.38935,383.38935,1,2.9730005",1.4865003",5.946001",2.9730005",1,158.38935);bpanda(104.83398,68.570429,113.38935,383.38935,3,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);bpanda(104.82156,68.57215,158.38935,203.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);bpanda(104.82156,68.57215,203.38935,293.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);bpanda(104.82156,68.57215,293.38935,383.38935,1,7.9280014",3.9640007",11.892002",5.946001",1,158.38935);
\ No newline at end of file
diff --git a/tests/ds9.icrs.hms.reg b/tests/ds9.icrs.hms.reg
index ca1172a..fd0c254 100644
--- a/tests/ds9.icrs.hms.reg
+++ b/tests/ds9.icrs.hms.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 icrs
-circle(13:29:56.891,+47:12:29.65,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(13:29:55.941,+47:12:16.17,7.928",3.964",2.39831) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(13:29:54.679,+47:12:03.80,15.856",7.928",2.39831) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(13:29:53.543,+47:11:56.12,13:29:52.505,+47:11:56.56,13:29:52.462,+47:11:45.99,13:29:53.499,+47:11:45.55) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(13:29:52.415,+47:11:38.82,13:29:50.885,+47:11:38.21) # line=1 1 color=cyan text={Line}
-# vector(13:29:50.781,+47:11:29.41,7.928",2.39831) vector=1 color=red text={Vector}
-# text(13:29:50.178,+47:11:19.99) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(13:29:55.623,+47:11:38.99,13:29:53.930,+47:11:39.02) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(13:29:58.365,+47:12:13.31,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(13:29:57.201,+47:12:01.32,2.973",1.4865",5.946",2.973",2.39831) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(13:29:55.969,+47:11:49.51,7.928",3.964",11.892",5.946",2.39831) # font="helvetica 10 bold roman" text={Box Annulus}
-point(13:29:59.689,+47:12:00.68) # point=circle text={Circle Point}
-point(13:29:58.442,+47:11:48.45) # point=box color=red width=3 text={Box Point}
-point(13:29:57.256,+47:11:37.88) # point=diamond text={Diamond Point}
-point(13:30:00.120,+47:11:51.52) # point=cross color=blue text={Cross Point}
-point(13:29:59.018,+47:11:41.47) # point=x text={X Point}
-point(13:29:57.955,+47:11:30.70) # point=arrow color=magenta text={Arrow Point}
-point(13:29:59.674,+47:11:33.61) # point=boxcircle text={BoxCircle Point}
-# projection(13:29:54.266,+47:11:23.58,13:29:52.066,+47:11:20.73,3.964") text={Projection}
-panda(13:29:55.839,+47:11:24.59,317.398,587.398,3,0",5.946",2) # text={Panda}
-panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,0",2.973",1) # panda=(8.98021 47.3983 137.398 227.398)(0" 2.973" 5.946") text={Panda 2}
-panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,2.973",5.946",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,0",2.973",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,2.973",5.946",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,0",2.973",1) # panda=ignore
-panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,2.973",5.946",1) # panda=ignore
-# compass(13:29:52.244,+47:11:10.28,7.928") compass=physical {N} {E} 1 1 text={Compass}
-epanda(13:29:54.770,+47:11:12.43,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39831) # text={Epanda}
-epanda(13:29:55.899,+47:10:59.04,2.39831,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=(2.39831 47.3983 137.398 227.398)(2.973" 1.4865" 5.946" 2.973")(2.39831) text={Epanda 2}
-epanda(13:29:55.899,+47:10:59.04,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=ignore
-epanda(13:29:55.899,+47:10:59.04,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39831) # epanda=ignore
-bpanda(13:29:53.525,+47:11:00.75,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39831) # text={Bpanda}
-bpanda(13:29:54.741,+47:10:48.45,2.39831,47.3983,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=(2.39831 47.3983 137.398 227.398)(7.928" 3.964" 11.892" 5.946")(2.39831) text={Bpanda 2}
-bpanda(13:29:54.741,+47:10:48.45,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=ignore
-bpanda(13:29:54.741,+47:10:48.45,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39831) # bpanda=ignore
-# circle3d(13:29:52.715,+47:10:44.27,1.982") text={Circle3d}
+circle(13:29:56.743,+47:12:30.42,3.964") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(13:29:55.792,+47:12:16.94,7.928",3.964",2.39832) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(13:29:54.530,+47:12:04.57,15.856",7.928",2.39832) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(13:29:53.394,+47:11:56.88,13:29:52.357,+47:11:57.33,13:29:52.314,+47:11:46.75,13:29:53.351,+47:11:46.31) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(13:29:52.267,+47:11:39.58,13:29:50.737,+47:11:38.97) # line=1 1 color=cyan text={Line}
+# vector(13:29:50.632,+47:11:30.18,7.928",2.39832) vector=1 color=red text={Vector}
+# text(13:29:50.030,+47:11:20.76) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(13:29:55.474,+47:11:39.76,13:29:53.782,+47:11:39.78) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(13:29:58.217,+47:12:14.08,1.982",3.964",5.946") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(13:29:57.053,+47:12:02.09,2.973",1.4865",5.946",2.973",2.39832) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(13:29:55.820,+47:11:50.27,7.928",3.964",11.892",5.946",2.39832) # font="helvetica 10 bold roman" text={Box Annulus}
+point(13:29:59.541,+47:12:01.45) # point=circle text={Circle Point}
+point(13:29:58.293,+47:11:49.22) # point=box color=red width=3 text={Box Point}
+point(13:29:57.108,+47:11:38.64) # point=diamond text={Diamond Point}
+point(13:29:59.971,+47:11:52.28) # point=cross color=blue text={Cross Point}
+point(13:29:58.870,+47:11:42.24) # point=x text={X Point}
+point(13:29:57.807,+47:11:31.47) # point=arrow color=magenta text={Arrow Point}
+point(13:29:59.526,+47:11:34.38) # point=boxcircle text={BoxCircle Point}
+# projection(13:29:54.118,+47:11:24.35,13:29:51.918,+47:11:21.50,3.964") text={Projection}
+panda(13:29:55.691,+47:11:25.36,317.398,587.398,3,0",5.946",2) # text={Panda}
+panda(13:29:56.859,+47:11:11.82,8.98022,47.3983,1,0",2.973",1) # panda=(8.98022 47.3983 137.398 227.398)(0" 2.973" 5.946") text={Panda 2}
+panda(13:29:56.859,+47:11:11.82,8.98022,47.3983,1,2.973",5.946",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.82,47.3983,137.398,1,0",2.973",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.82,47.3983,137.398,1,2.973",5.946",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.82,137.398,227.398,1,0",2.973",1) # panda=ignore
+panda(13:29:56.859,+47:11:11.82,137.398,227.398,1,2.973",5.946",1) # panda=ignore
+# compass(13:29:52.095,+47:11:11.04,7.928") compass=physical {N} {E} 1 1 text={Compass}
+epanda(13:29:54.622,+47:11:13.19,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39832) # text={Epanda}
+epanda(13:29:55.751,+47:10:59.81,2.39832,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39832) # epanda=(2.39832 47.3983 137.398 227.398)(2.973" 1.4865" 5.946" 2.973")(2.39832) text={Epanda 2}
+epanda(13:29:55.751,+47:10:59.81,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39832) # epanda=ignore
+epanda(13:29:55.751,+47:10:59.81,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39832) # epanda=ignore
+bpanda(13:29:53.377,+47:11:01.52,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39832) # text={Bpanda}
+bpanda(13:29:54.593,+47:10:49.22,2.39832,47.3983,1,7.928",3.964",11.892",5.946",1,2.39832) # bpanda=(2.39832 47.3983 137.398 227.398)(7.928" 3.964" 11.892" 5.946")(2.39832) text={Bpanda 2}
+bpanda(13:29:54.593,+47:10:49.22,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39832) # bpanda=ignore
+bpanda(13:29:54.593,+47:10:49.22,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39832) # bpanda=ignore
diff --git a/tests/ds9.icrs.hms.strip.reg b/tests/ds9.icrs.hms.strip.reg
index fd511cf..3baf706 100644
--- a/tests/ds9.icrs.hms.strip.reg
+++ b/tests/ds9.icrs.hms.strip.reg
@@ -1 +1 @@
-icrs;circle(13:29:56.891,+47:12:29.65,3.964");-ellipse(13:29:55.941,+47:12:16.17,7.928",3.964",2.39831);-box(13:29:54.679,+47:12:03.80,15.856",7.928",2.39831);polygon(13:29:53.543,+47:11:56.12,13:29:52.505,+47:11:56.56,13:29:52.462,+47:11:45.99,13:29:53.499,+47:11:45.55);-line(13:29:52.415,+47:11:38.82,13:29:50.885,+47:11:38.21);annulus(13:29:58.365,+47:12:13.31,1.982",3.964",5.946");ellipse(13:29:57.201,+47:12:01.32,2.973",1.4865",5.946",2.973",2.39831);box(13:29:55.969,+47:11:49.51,7.928",3.964",11.892",5.946",2.39831);point(13:29:59.689,+47:12:00.68);point(13:29:58.442,+47:11:48.45);point(13:29:57.256,+47:11:37.88);point(13:30:00.120,+47:11:51.52);point(13:29:59.018,+47:11:41.47);point(13:29:57.955,+47:11:30.70);point(13:29:59.674,+47:11:33.61);panda(13:29:55.839,+47:11:24.59,317.398,587.398,3,0",5.946",2);panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,0",2.973",1);panda(13:29:57.008,+47:11:11.05,8.98021,47.3983,1,2.973",5.946",1);panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,0",2.973",1);panda(13:29:57.008,+47:11:11.05,47.3983,137.398,1,2.973",5.946",1);panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,0",2.973",1);panda(13:29:57.008,+47:11:11.05,137.398,227.398,1,2.973",5.946",1);epanda(13:29:54.770,+47:11:12.43,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.899,+47:10:59.04,2.39831,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.899,+47:10:59.04,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39831);epanda(13:29:55.899,+47:10:59.04,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39831);bpanda(13:29:53.525,+47:11:00.75,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.741,+47:10:48.45,2.39831,47.3983,1,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.741,+47:10:48.45,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39831);bpanda(13:29:54.741,+47:10:48.45,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39831);
\ No newline at end of file
+icrs;circle(13:29:56.743,+47:12:30.42,3.964");-ellipse(13:29:55.792,+47:12:16.94,7.928",3.964",2.39832);-box(13:29:54.530,+47:12:04.57,15.856",7.928",2.39832);polygon(13:29:53.394,+47:11:56.88,13:29:52.357,+47:11:57.33,13:29:52.314,+47:11:46.75,13:29:53.351,+47:11:46.31);-line(13:29:52.267,+47:11:39.58,13:29:50.737,+47:11:38.97);annulus(13:29:58.217,+47:12:14.08,1.982",3.964",5.946");ellipse(13:29:57.053,+47:12:02.09,2.973",1.4865",5.946",2.973",2.39832);box(13:29:55.820,+47:11:50.27,7.928",3.964",11.892",5.946",2.39832);point(13:29:59.541,+47:12:01.45);point(13:29:58.293,+47:11:49.22);point(13:29:57.108,+47:11:38.64);point(13:29:59.971,+47:11:52.28);point(13:29:58.870,+47:11:42.24);point(13:29:57.807,+47:11:31.47);point(13:29:59.526,+47:11:34.38);panda(13:29:55.691,+47:11:25.36,317.398,587.398,3,0",5.946",2);panda(13:29:56.859,+47:11:11.82,8.98022,47.3983,1,0",2.973",1);panda(13:29:56.859,+47:11:11.82,8.98022,47.3983,1,2.973",5.946",1);panda(13:29:56.859,+47:11:11.82,47.3983,137.398,1,0",2.973",1);panda(13:29:56.859,+47:11:11.82,47.3983,137.398,1,2.973",5.946",1);panda(13:29:56.859,+47:11:11.82,137.398,227.398,1,0",2.973",1);panda(13:29:56.859,+47:11:11.82,137.398,227.398,1,2.973",5.946",1);epanda(13:29:54.622,+47:11:13.19,317.398,587.398,3,2.973",1.4865",5.946",2.973",1,2.39832);epanda(13:29:55.751,+47:10:59.81,2.39832,47.3983,1,2.973",1.4865",5.946",2.973",1,2.39832);epanda(13:29:55.751,+47:10:59.81,47.3983,137.398,1,2.973",1.4865",5.946",2.973",1,2.39832);epanda(13:29:55.751,+47:10:59.81,137.398,227.398,1,2.973",1.4865",5.946",2.973",1,2.39832);bpanda(13:29:53.377,+47:11:01.52,317.398,587.398,3,7.928",3.964",11.892",5.946",1,2.39832);bpanda(13:29:54.593,+47:10:49.22,2.39832,47.3983,1,7.928",3.964",11.892",5.946",1,2.39832);bpanda(13:29:54.593,+47:10:49.22,47.3983,137.398,1,7.928",3.964",11.892",5.946",1,2.39832);bpanda(13:29:54.593,+47:10:49.22,137.398,227.398,1,7.928",3.964",11.892",5.946",1,2.39832);
\ No newline at end of file
diff --git a/tests/ds9.icrs.reg b/tests/ds9.icrs.reg
index 03f4c4d..5e8dcdf 100644
--- a/tests/ds9.icrs.reg
+++ b/tests/ds9.icrs.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 icrs
-circle(202.48705,47.208237,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(202.48309,47.204492,7.9280014",3.9640007",2.3983109) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(202.47783,47.201057,15.856003",7.9280014",2.3983109) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(202.47309,47.198922,202.46877,47.199044,202.46859,47.196108,202.47291,47.195985) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(202.4684,47.194116,202.46202,47.193946) # line=1 1 color=cyan text={Line}
-# vector(202.46159,47.191504,7.9280014",2.3983109) vector=1 color=red text={Vector}
-# text(202.45907,47.188886) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(202.48176,47.194165,202.47471,47.194171) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(202.49319,47.203697,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(202.48834,47.200368,2.9730005",1.4865003",5.946001",2.9730005",2.3983109) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(202.4832,47.197085,7.9280014",3.9640007",11.892002",5.946001",2.3983109) # font="helvetica 10 bold roman" text={Box Annulus}
-point(202.49871,47.200189) # point=circle text={Circle Point}
-point(202.49351,47.196791) # point=box color=red width=3 text={Box Point}
-point(202.48857,47.193854) # point=diamond text={Diamond Point}
-point(202.5005,47.197643) # point=cross color=blue text={Cross Point}
-point(202.49591,47.194852) # point=x text={X Point}
-point(202.49148,47.191862) # point=arrow color=magenta text={Arrow Point}
-point(202.49864,47.19267) # point=boxcircle text={BoxCircle Point}
-# projection(202.47611,47.189884,202.46694,47.189092,3.9640007") text={Projection}
-panda(202.48266,47.190165,317.39831,587.39831,3,0",5.946001",2) # text={Panda}
-panda(202.48753,47.186403,8.9802109,47.398311,1,0",2.9730005",1) # panda=(8.9802109 47.398311 137.39831 227.39831)(0" 2.9730005" 5.946001") text={Panda 2}
-panda(202.48753,47.186403,8.9802109,47.398311,1,2.9730005",5.946001",1) # panda=ignore
-panda(202.48753,47.186403,47.398311,137.39831,1,0",2.9730005",1) # panda=ignore
-panda(202.48753,47.186403,47.398311,137.39831,1,2.9730005",5.946001",1) # panda=ignore
-panda(202.48753,47.186403,137.39831,227.39831,1,0",2.9730005",1) # panda=ignore
-panda(202.48753,47.186403,137.39831,227.39831,1,2.9730005",5.946001",1) # panda=ignore
-# compass(202.46768,47.186188,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
-epanda(202.47821,47.186785,317.39831,587.39831,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # text={Epanda}
-epanda(202.48291,47.183066,2.3983109,47.398311,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=(2.3983109 47.398311 137.39831 227.39831)(2.9730005" 1.4865003" 5.946001" 2.9730005")(2.3983109) text={Epanda 2}
-epanda(202.48291,47.183066,47.398311,137.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=ignore
-epanda(202.48291,47.183066,137.39831,227.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109) # epanda=ignore
-bpanda(202.47302,47.183543,317.39831,587.39831,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # text={Bpanda}
-bpanda(202.47809,47.180126,2.3983109,47.398311,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=(2.3983109 47.398311 137.39831 227.39831)(7.9280014" 3.9640007" 11.892002" 5.946001")(2.3983109) text={Bpanda 2}
-bpanda(202.47809,47.180126,47.398311,137.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=ignore
-bpanda(202.47809,47.180126,137.39831,227.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109) # bpanda=ignore
-# circle3d(202.46965,47.178963,1.9820003") text={Circle3d}
+circle(202.48643,47.208449,3.9640007") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(202.48247,47.204705,7.9280014",3.9640007",2.3983198) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(202.47721,47.20127,15.856003",7.9280014",2.3983198) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(202.47248,47.199135,202.46815,47.199257,202.46797,47.19632,202.4723,47.196198) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(202.46778,47.194329,202.4614,47.194159) # line=1 1 color=cyan text={Line}
+# vector(202.46097,47.191716,7.9280014",2.3983198) vector=1 color=red text={Vector}
+# text(202.45846,47.189099) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(202.48114,47.194378,202.47409,47.194384) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(202.49257,47.20391,1.9820003",3.9640007",5.946001") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(202.48772,47.200581,2.9730005",1.4865003",5.946001",2.9730005",2.3983198) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(202.48259,47.197298,7.9280014",3.9640007",11.892002",5.946001",2.3983198) # font="helvetica 10 bold roman" text={Box Annulus}
+point(202.49809,47.200401) # point=circle text={Circle Point}
+point(202.49289,47.197004) # point=box color=red width=3 text={Box Point}
+point(202.48795,47.194067) # point=diamond text={Diamond Point}
+point(202.49988,47.197856) # point=cross color=blue text={Cross Point}
+point(202.49529,47.195065) # point=x text={X Point}
+point(202.49086,47.192075) # point=arrow color=magenta text={Arrow Point}
+point(202.49802,47.192883) # point=boxcircle text={BoxCircle Point}
+# projection(202.47549,47.190097,202.46632,47.189305,3.9640007") text={Projection}
+panda(202.48204,47.190378,317.39832,587.39832,3,0",5.946001",2) # text={Panda}
+panda(202.48691,47.186615,8.9802198,47.39832,1,0",2.9730005",1) # panda=(8.9802198 47.39832 137.39832 227.39832)(0" 2.9730005" 5.946001") text={Panda 2}
+panda(202.48691,47.186615,8.9802198,47.39832,1,2.9730005",5.946001",1) # panda=ignore
+panda(202.48691,47.186615,47.39832,137.39832,1,0",2.9730005",1) # panda=ignore
+panda(202.48691,47.186615,47.39832,137.39832,1,2.9730005",5.946001",1) # panda=ignore
+panda(202.48691,47.186615,137.39832,227.39832,1,0",2.9730005",1) # panda=ignore
+panda(202.48691,47.186615,137.39832,227.39832,1,2.9730005",5.946001",1) # panda=ignore
+# compass(202.46706,47.186401,7.9280014") compass=physical {N} {E} 1 1 text={Compass}
+epanda(202.47759,47.186998,317.39832,587.39832,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198) # text={Epanda}
+epanda(202.48229,47.183279,2.3983198,47.39832,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198) # epanda=(2.3983198 47.39832 137.39832 227.39832)(2.9730005" 1.4865003" 5.946001" 2.9730005")(2.3983198) text={Epanda 2}
+epanda(202.48229,47.183279,47.39832,137.39832,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198) # epanda=ignore
+epanda(202.48229,47.183279,137.39832,227.39832,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198) # epanda=ignore
+bpanda(202.47241,47.183755,317.39832,587.39832,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198) # text={Bpanda}
+bpanda(202.47747,47.180338,2.3983198,47.39832,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198) # bpanda=(2.3983198 47.39832 137.39832 227.39832)(7.9280014" 3.9640007" 11.892002" 5.946001")(2.3983198) text={Bpanda 2}
+bpanda(202.47747,47.180338,47.39832,137.39832,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198) # bpanda=ignore
+bpanda(202.47747,47.180338,137.39832,227.39832,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198) # bpanda=ignore
diff --git a/tests/ds9.icrs.strip.reg b/tests/ds9.icrs.strip.reg
index 202482c..2254132 100644
--- a/tests/ds9.icrs.strip.reg
+++ b/tests/ds9.icrs.strip.reg
@@ -1 +1 @@
-icrs;circle(202.48705,47.208237,3.9640007");-ellipse(202.48309,47.204492,7.9280014",3.9640007",2.3983109);-box(202.47783,47.201057,15.856003",7.9280014",2.3983109);polygon(202.47309,47.198922,202.46877,47.199044,202.46859,47.196108,202.47291,47.195985);-line(202.4684,47.194116,202.46202,47.193946);annulus(202.49319,47.203697,1.9820003",3.9640007",5.946001");ellipse(202.48834,47.200368,2.9730005",1.4865003",5.946001",2.9730005",2.3983109);box(202.4832,47.197085,7.9280014",3.9640007",11.892002",5.946001",2.3983109);point(202.49871,47.200189);point(202.49351,47.196791);point(202.48857,47.193854);point(202.5005,47.197643);point(202.49591,47.194852);point(202.49148,47.191862);point(202.49864,47.19267);panda(202.48266,47.190165,317.39831,587.39831,3,0",5.946001",2);panda(202.48753,47.186403,8.9802109,47.398311,1,0",2.9730005",1);panda(202.48753,47.186403,8.9802109,47.398311,1,2.9730005",5.946001",1);panda(202.48753,47.186403,47.398311,137.39831,1,0",2.9730005",1);panda(202.48753,47.186403,47.398311,137.39831,1,2.9730005",5.946001",1);panda(202.48753,47.186403,137.39831,227.39831,1,0",2.9730005",1);panda(202.48753,47.186403,137.39831,227.39831,1,2.9730005",5.946001",1);epanda(202.47821,47.186785,317.39831,587.39831,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48291,47.183066,2.3983109,47.398311,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48291,47.183066,47.398311,137.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);epanda(202.48291,47.183066,137.39831,227.39831,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983109);bpanda(202.47302,47.183543,317.39831,587.39831,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47809,47.180126,2.3983109,47.398311,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47809,47.180126,47.398311,137.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);bpanda(202.47809,47.180126,137.39831,227.39831,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983109);
\ No newline at end of file
+icrs;circle(202.48643,47.208449,3.9640007");-ellipse(202.48247,47.204705,7.9280014",3.9640007",2.3983198);-box(202.47721,47.20127,15.856003",7.9280014",2.3983198);polygon(202.47248,47.199135,202.46815,47.199257,202.46797,47.19632,202.4723,47.196198);-line(202.46778,47.194329,202.4614,47.194159);annulus(202.49257,47.20391,1.9820003",3.9640007",5.946001");ellipse(202.48772,47.200581,2.9730005",1.4865003",5.946001",2.9730005",2.3983198);box(202.48259,47.197298,7.9280014",3.9640007",11.892002",5.946001",2.3983198);point(202.49809,47.200401);point(202.49289,47.197004);point(202.48795,47.194067);point(202.49988,47.197856);point(202.49529,47.195065);point(202.49086,47.192075);point(202.49802,47.192883);panda(202.48204,47.190378,317.39832,587.39832,3,0",5.946001",2);panda(202.48691,47.186615,8.9802198,47.39832,1,0",2.9730005",1);panda(202.48691,47.186615,8.9802198,47.39832,1,2.9730005",5.946001",1);panda(202.48691,47.186615,47.39832,137.39832,1,0",2.9730005",1);panda(202.48691,47.186615,47.39832,137.39832,1,2.9730005",5.946001",1);panda(202.48691,47.186615,137.39832,227.39832,1,0",2.9730005",1);panda(202.48691,47.186615,137.39832,227.39832,1,2.9730005",5.946001",1);epanda(202.47759,47.186998,317.39832,587.39832,3,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198);epanda(202.48229,47.183279,2.3983198,47.39832,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198);epanda(202.48229,47.183279,47.39832,137.39832,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198);epanda(202.48229,47.183279,137.39832,227.39832,1,2.9730005",1.4865003",5.946001",2.9730005",1,2.3983198);bpanda(202.47241,47.183755,317.39832,587.39832,3,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198);bpanda(202.47747,47.180338,2.3983198,47.39832,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198);bpanda(202.47747,47.180338,47.39832,137.39832,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198);bpanda(202.47747,47.180338,137.39832,227.39832,1,7.9280014",3.9640007",11.892002",5.946001",1,2.3983198);
\ No newline at end of file
diff --git a/tests/ds9.image.reg b/tests/ds9.image.reg
index 888da41..107dd3b 100644
--- a/tests/ds9.image.reg
+++ b/tests/ds9.image.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 image
-circle(163,538,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(245,521,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(335,519,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(404.24723,530,442,567.75275,479.75277,530,442,492.24723) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(506,505,566,556) # line=1 1 color=cyan text={Line}
-# vector(600,527,40,45) vector=1 color=red text={Vector}
-# text(655,513) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(384,394,448,453) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(163,426,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(248,422,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(335,421,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
-point(156,333) # point=circle text={Circle Point}
-point(245,331) # point=box color=red width=3 text={Box Point}
-point(326,333) # point=diamond text={Diamond Point}
-point(171,284) # point=cross color=blue text={Cross Point}
-point(247,285) # point=x text={X Point}
-point(324,282) # point=arrow color=magenta text={Arrow Point}
-point(249,233) # point=boxcircle text={BoxCircle Point}
-# projection(488,384,581,450,20) text={Projection}
-panda(425,333,0,270,3,0,30,2) # text={Panda}
-panda(427,242,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
-panda(427,242,51.5819,90,1,15,30,1) # panda=ignore
-panda(427,242,90,180,1,0,15,1) # panda=ignore
-panda(427,242,90,180,1,15,30,1) # panda=ignore
-panda(427,242,180,270,1,0,15,1) # panda=ignore
-panda(427,242,180,270,1,15,30,1) # panda=ignore
-# compass(610,405,40) compass=physical {N} {E} 1 1 text={Compass}
-epanda(507,325,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
-epanda(510,236,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
-epanda(510,236,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
-epanda(510,236,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
-bpanda(594,325,0,270,3,40,20,60,30,1,45) # text={Bpanda}
-bpanda(590,237,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
-bpanda(590,237,90,180,1,40,20,60,30,1,45) # bpanda=ignore
-bpanda(590,237,180,270,1,40,20,60,30,1,45) # bpanda=ignore
-# circle3d(681,292,10) text={Circle3d}
+circle(166,546,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(248,529,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(338,527,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(407.24723,538,445,575.75275,482.75277,538,445,500.24723) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(509,513,569,564) # line=1 1 color=cyan text={Line}
+# vector(603,535,40,45) vector=1 color=red text={Vector}
+# text(658,521) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(387,402,451,461) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(166,434,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(251,430,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(338,429,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
+point(159,341) # point=circle text={Circle Point}
+point(248,339) # point=box color=red width=3 text={Box Point}
+point(329,341) # point=diamond text={Diamond Point}
+point(174,292) # point=cross color=blue text={Cross Point}
+point(250,293) # point=x text={X Point}
+point(327,290) # point=arrow color=magenta text={Arrow Point}
+point(252,241) # point=boxcircle text={BoxCircle Point}
+# projection(491,392,584,458,20) text={Projection}
+panda(428,341,0,270,3,0,30,2) # text={Panda}
+panda(430,250,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
+panda(430,250,51.5819,90,1,15,30,1) # panda=ignore
+panda(430,250,90,180,1,0,15,1) # panda=ignore
+panda(430,250,90,180,1,15,30,1) # panda=ignore
+panda(430,250,180,270,1,0,15,1) # panda=ignore
+panda(430,250,180,270,1,15,30,1) # panda=ignore
+# compass(613,413,40) compass=physical {N} {E} 1 1 text={Compass}
+epanda(510,333,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
+epanda(513,244,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
+epanda(513,244,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(513,244,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
+bpanda(597,333,0,270,3,40,20,60,30,1,45) # text={Bpanda}
+bpanda(593,245,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
+bpanda(593,245,90,180,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(593,245,180,270,1,40,20,60,30,1,45) # bpanda=ignore
diff --git a/tests/ds9.image.strip.reg b/tests/ds9.image.strip.reg
index 1631dc6..7236cae 100644
--- a/tests/ds9.image.strip.reg
+++ b/tests/ds9.image.strip.reg
@@ -1 +1 @@
-image;circle(163,538,20);-ellipse(245,521,40,20,45);-box(335,519,80,40,45);polygon(404.24723,530,442,567.75275,479.75277,530,442,492.24723);-line(506,505,566,556);annulus(163,426,10,20,30);ellipse(248,422,15,7.5,30,15,45);box(335,421,40,20,60,30,45);point(156,333);point(245,331);point(326,333);point(171,284);point(247,285);point(324,282);point(249,233);panda(425,333,0,270,3,0,30,2);panda(427,242,51.5819,90,1,0,15,1);panda(427,242,51.5819,90,1,15,30,1);panda(427,242,90,180,1,0,15,1);panda(427,242,90,180,1,15,30,1);panda(427,242,180,270,1,0,15,1);panda(427,242,180,270,1,15,30,1);epanda(507,325,0,270,3,15,7.5,30,15,1,45);epanda(510,236,45,90,1,15,7.5,30,15,1,45);epanda(510,236,90,180,1,15,7.5,30,15,1,45);epanda(510,236,180,270,1,15,7.5,30,15,1,45);bpanda(594,325,0,270,3,40,20,60,30,1,45);bpanda(590,237,45,90,1,40,20,60,30,1,45);bpanda(590,237,90,180,1,40,20,60,30,1,45);bpanda(590,237,180,270,1,40,20,60,30,1,45);
\ No newline at end of file
+image;circle(166,546,20);-ellipse(248,529,40,20,45);-box(338,527,80,40,45);polygon(407.24723,538,445,575.75275,482.75277,538,445,500.24723);-line(509,513,569,564);annulus(166,434,10,20,30);ellipse(251,430,15,7.5,30,15,45);box(338,429,40,20,60,30,45);point(159,341);point(248,339);point(329,341);point(174,292);point(250,293);point(327,290);point(252,241);panda(428,341,0,270,3,0,30,2);panda(430,250,51.5819,90,1,0,15,1);panda(430,250,51.5819,90,1,15,30,1);panda(430,250,90,180,1,0,15,1);panda(430,250,90,180,1,15,30,1);panda(430,250,180,270,1,0,15,1);panda(430,250,180,270,1,15,30,1);epanda(510,333,0,270,3,15,7.5,30,15,1,45);epanda(513,244,45,90,1,15,7.5,30,15,1,45);epanda(513,244,90,180,1,15,7.5,30,15,1,45);epanda(513,244,180,270,1,15,7.5,30,15,1,45);bpanda(597,333,0,270,3,40,20,60,30,1,45);bpanda(593,245,45,90,1,40,20,60,30,1,45);bpanda(593,245,90,180,1,40,20,60,30,1,45);bpanda(593,245,180,270,1,40,20,60,30,1,45);
\ No newline at end of file
diff --git a/tests/ds9.linear.wcs.reg b/tests/ds9.linear.wcs.reg
index 0ca4664..bc4ad31 100644
--- a/tests/ds9.linear.wcs.reg
+++ b/tests/ds9.linear.wcs.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 wcs;
 # tile 2
-circle(3917.1782,3891.8317,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(3975,3969,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 2
--ellipse(3753.1782,3857.8317,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(3811,3935,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 2
--box(3573.1782,3853.8317,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(3631,3931,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 2
-polygon(3434.6838,3875.8317,3359.1782,3951.3372,3283.6727,3875.8317,3359.1782,3800.3261) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(3492.5055,3953,3417,4028.5055,3341.4945,3953,3417,3877.4945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 2
--line(3231.1782,3825.8317,3111.1782,3927.8317) # line=1 1 color=cyan text={Line}
+-line(3289,3903,3169,4005) # line=1 1 color=cyan text={Line}
 # tile 2
-# vector(3043.1782,3869.8317,80,135) vector=1 color=red text={Vector}
+# vector(3101,3947,80,135) vector=1 color=red text={Vector}
 # tile 2
-# text(2933.1782,3841.8317) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(2991,3919) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 2
-# ruler(3475.1782,3603.8317,3347.1782,3721.8317) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(3533,3681,3405,3799) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 2
-annulus(3917.1782,3667.8317,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(3975,3745,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 2
-ellipse(3747.1782,3659.8317,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(3805,3737,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 2
-box(3573.1782,3657.8317,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
+box(3631,3735,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 2
-point(3931.1782,3481.8317) # point=circle text={Circle Point}
+point(3989,3559) # point=circle text={Circle Point}
 # tile 2
-point(3753.1782,3477.8317) # point=box color=red width=3 text={Box Point}
+point(3811,3555) # point=box color=red width=3 text={Box Point}
 # tile 2
-point(3591.1782,3481.8317) # point=diamond text={Diamond Point}
+point(3649,3559) # point=diamond text={Diamond Point}
 # tile 2
-point(3901.1782,3383.8317) # point=cross color=blue text={Cross Point}
+point(3959,3461) # point=cross color=blue text={Cross Point}
 # tile 2
-point(3749.1782,3385.8317) # point=x text={X Point}
+point(3807,3463) # point=x text={X Point}
 # tile 2
-point(3595.1782,3379.8317) # point=arrow color=magenta text={Arrow Point}
+point(3653,3457) # point=arrow color=magenta text={Arrow Point}
 # tile 2
-point(3745.1782,3281.8317) # point=boxcircle text={BoxCircle Point}
+point(3803,3359) # point=boxcircle text={BoxCircle Point}
 # tile 2
-# projection(3267.1782,3583.8317,3081.1782,3715.8317,40) text={Projection}
+# projection(3325,3661,3139,3793,40) text={Projection}
 # tile 2
-panda(3393.1782,3481.8317,180,270,3,0,60,2) # text={Panda}
+panda(3451,3559,180,270,3,0,60,2) # text={Panda}
 # tile 2
-panda(3389.1782,3299.8317,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
+panda(3447,3377,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
 # tile 2
-panda(3389.1782,3299.8317,128.4181,450,1,30,60,1) # panda=ignore
+panda(3447,3377,128.4181,450,1,30,60,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,90,360,1,0,30,1) # panda=ignore
+panda(3447,3377,90,360,1,0,30,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,90,360,1,30,60,1) # panda=ignore
+panda(3447,3377,90,360,1,30,60,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,0,270,1,0,30,1) # panda=ignore
+panda(3447,3377,0,270,1,0,30,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,0,270,1,30,60,1) # panda=ignore
+panda(3447,3377,0,270,1,30,60,1) # panda=ignore
 # tile 2
-# compass(3023.1782,3625.8317,80) compass=physical {N} {E} 1 1 text={Compass}
+# compass(3081,3703,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 2
-epanda(3229.1782,3465.8317,180,270,3,30,15,60,30,1,135) # text={Epanda}
+epanda(3287,3543,180,270,3,30,15,60,30,1,135) # text={Epanda}
 # tile 2
-epanda(3223.1782,3287.8317,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
+epanda(3281,3365,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
 # tile 2
-epanda(3223.1782,3287.8317,90,360,1,30,15,60,30,1,135) # epanda=ignore
+epanda(3281,3365,90,360,1,30,15,60,30,1,135) # epanda=ignore
 # tile 2
-epanda(3223.1782,3287.8317,0,270,1,30,15,60,30,1,135) # epanda=ignore
+epanda(3281,3365,0,270,1,30,15,60,30,1,135) # epanda=ignore
 # tile 2
-bpanda(3055.1782,3465.8317,180,270,3,80,40,120,60,1,135) # text={Bpanda}
+bpanda(3113,3543,180,270,3,80,40,120,60,1,135) # text={Bpanda}
 # tile 2
-bpanda(3063.1782,3289.8317,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
+bpanda(3121,3367,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
 # tile 2
-bpanda(3063.1782,3289.8317,90,360,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(3121,3367,90,360,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 2
-bpanda(3063.1782,3289.8317,0,270,1,80,40,120,60,1,135) # bpanda=ignore
-# tile 2
-# circle3d(2881.1782,3399.8317,20) text={Circle3d}
-# tile 7
-circle(5279.5545,4802.7228,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
-# tile 7
--ellipse(5115.5545,4768.7228,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+bpanda(3121,3367,0,270,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 7
--box(4935.5545,4764.7228,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
+circle(5027,4773,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 7
-polygon(4797.06,4786.7228,4721.5545,4862.2283,4646.0489,4786.7228,4721.5545,4711.2172) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-ellipse(4863,4739,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 7
--line(4593.5545,4736.7228,4473.5545,4838.7228) # line=1 1 color=cyan text={Line}
+-box(4683,4735,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 7
-# vector(4405.5545,4780.7228,80,135) vector=1 color=red text={Vector}
+polygon(4544.5055,4757,4469,4832.5055,4393.4945,4757,4469,4681.4945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 7
-# text(4295.5545,4752.7228) color=magenta font="helvetica 14 bold roman" text={Region}
+-line(4341,4707,4221,4809) # line=1 1 color=cyan text={Line}
 # tile 7
-# ruler(4837.5545,4514.7228,4709.5545,4632.7228) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# vector(4153,4751,80,135) vector=1 color=red text={Vector}
+# tile 6
+# text(4043,4723) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 7
-annulus(5279.5545,4578.7228,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(4585,4485,4457,4603) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 7
-ellipse(5109.5545,4570.7228,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(5027,4549,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 7
-box(4935.5545,4568.7228,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(4857,4541,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 7
-point(5293.5545,4392.7228) # point=circle text={Circle Point}
+box(4683,4539,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 7
-point(5115.5545,4388.7228) # point=box color=red width=3 text={Box Point}
+point(5041,4363) # point=circle text={Circle Point}
 # tile 7
-point(4953.5545,4392.7228) # point=diamond text={Diamond Point}
+point(4863,4359) # point=box color=red width=3 text={Box Point}
 # tile 7
-point(5263.5545,4294.7228) # point=cross color=blue text={Cross Point}
+point(4701,4363) # point=diamond text={Diamond Point}
 # tile 7
-point(5111.5545,4296.7228) # point=x text={X Point}
+point(5011,4265) # point=cross color=blue text={Cross Point}
 # tile 7
-point(4957.5545,4290.7228) # point=arrow color=magenta text={Arrow Point}
+point(4859,4267) # point=x text={X Point}
 # tile 7
-point(5107.5545,4192.7228) # point=boxcircle text={BoxCircle Point}
+point(4705,4261) # point=arrow color=magenta text={Arrow Point}
 # tile 7
-# projection(4629.5545,4494.7228,4443.5545,4626.7228,40) text={Projection}
+point(4855,4163) # point=boxcircle text={BoxCircle Point}
 # tile 7
-panda(4755.5545,4392.7228,180,270,3,0,60,2) # text={Panda}
+# projection(4377,4465,4191,4597,40) text={Projection}
 # tile 7
-panda(4751.5545,4210.7228,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
+panda(4503,4363,180,270,3,0,60,2) # text={Panda}
 # tile 7
-panda(4751.5545,4210.7228,128.4181,450,1,30,60,1) # panda=ignore
+panda(4499,4181,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
 # tile 7
-panda(4751.5545,4210.7228,90,360,1,0,30,1) # panda=ignore
+panda(4499,4181,128.4181,450,1,30,60,1) # panda=ignore
 # tile 7
-panda(4751.5545,4210.7228,90,360,1,30,60,1) # panda=ignore
+panda(4499,4181,90,360,1,0,30,1) # panda=ignore
 # tile 7
-panda(4751.5545,4210.7228,0,270,1,0,30,1) # panda=ignore
+panda(4499,4181,90,360,1,30,60,1) # panda=ignore
 # tile 7
-panda(4751.5545,4210.7228,0,270,1,30,60,1) # panda=ignore
+panda(4499,4181,0,270,1,0,30,1) # panda=ignore
 # tile 7
-# compass(4385.5545,4536.7228,80) compass=physical {N} {E} 1 1 text={Compass}
+panda(4499,4181,0,270,1,30,60,1) # panda=ignore
 # tile 7
-epanda(4591.5545,4376.7228,180,270,3,30,15,60,30,1,135) # text={Epanda}
+# compass(4133,4507,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 7
-epanda(4585.5545,4198.7228,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
+epanda(4339,4347,180,270,3,30,15,60,30,1,135) # text={Epanda}
 # tile 7
-epanda(4585.5545,4198.7228,90,360,1,30,15,60,30,1,135) # epanda=ignore
+epanda(4333,4169,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
 # tile 7
-epanda(4585.5545,4198.7228,0,270,1,30,15,60,30,1,135) # epanda=ignore
+epanda(4333,4169,90,360,1,30,15,60,30,1,135) # epanda=ignore
 # tile 7
-bpanda(4417.5545,4376.7228,180,270,3,80,40,120,60,1,135) # text={Bpanda}
+epanda(4333,4169,0,270,1,30,15,60,30,1,135) # epanda=ignore
 # tile 7
-bpanda(4425.5545,4200.7228,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
+bpanda(4165,4347,180,270,3,80,40,120,60,1,135) # text={Bpanda}
 # tile 7
-bpanda(4425.5545,4200.7228,90,360,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(4173,4171,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
 # tile 7
-bpanda(4425.5545,4200.7228,0,270,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(4173,4171,90,360,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 7
-# circle3d(4243.5545,4310.7228,20) text={Circle3d}
+bpanda(4173,4171,0,270,1,80,40,120,60,1,135) # bpanda=ignore
diff --git a/tests/ds9.linear.wcsa.reg b/tests/ds9.linear.wcsa.reg
index 3da46d8..b53b9d9 100644
--- a/tests/ds9.linear.wcsa.reg
+++ b/tests/ds9.linear.wcsa.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 wcsa;
 # tile 2
-circle(179.32178,3892.3317,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(121.5,3969.5,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 2
--ellipse(343.32178,3858.3317,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(285.5,3935.5,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 2
--box(523.32178,3854.3317,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(465.5,3931.5,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 2
-polygon(661.81624,3876.3317,737.32178,3951.8372,812.82732,3876.3317,737.32178,3800.8261) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(603.9945,3953.5,679.5,4029.0055,755.0055,3953.5,679.5,3877.9945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 2
--line(865.32178,3826.3317,985.32178,3928.3317) # line=1 1 color=cyan text={Line}
+-line(807.5,3903.5,927.5,4005.5) # line=1 1 color=cyan text={Line}
 # tile 2
-# vector(1053.3218,3870.3317,80,45) vector=1 color=red text={Vector}
+# vector(995.5,3947.5,80,45) vector=1 color=red text={Vector}
 # tile 2
-# text(1163.3218,3842.3317) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(1105.5,3919.5) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 2
-# ruler(621.32178,3604.3317,749.32178,3722.3317) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(563.5,3681.5,691.5,3799.5) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 2
-annulus(179.32178,3668.3317,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(121.5,3745.5,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 2
-ellipse(349.32178,3660.3317,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(291.5,3737.5,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 2
-box(523.32178,3658.3317,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
+box(465.5,3735.5,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 2
-point(165.32178,3482.3317) # point=circle text={Circle Point}
+point(107.5,3559.5) # point=circle text={Circle Point}
 # tile 2
-point(343.32178,3478.3317) # point=box color=red width=3 text={Box Point}
+point(285.5,3555.5) # point=box color=red width=3 text={Box Point}
 # tile 2
-point(505.32178,3482.3317) # point=diamond text={Diamond Point}
+point(447.5,3559.5) # point=diamond text={Diamond Point}
 # tile 2
-point(195.32178,3384.3317) # point=cross color=blue text={Cross Point}
+point(137.5,3461.5) # point=cross color=blue text={Cross Point}
 # tile 2
-point(347.32178,3386.3317) # point=x text={X Point}
+point(289.5,3463.5) # point=x text={X Point}
 # tile 2
-point(501.32178,3380.3317) # point=arrow color=magenta text={Arrow Point}
+point(443.5,3457.5) # point=arrow color=magenta text={Arrow Point}
 # tile 2
-point(351.32178,3282.3317) # point=boxcircle text={BoxCircle Point}
+point(293.5,3359.5) # point=boxcircle text={BoxCircle Point}
 # tile 2
-# projection(829.32178,3584.3317,1015.3218,3716.3317,40) text={Projection}
+# projection(771.5,3661.5,957.5,3793.5,40) text={Projection}
 # tile 2
-panda(703.32178,3482.3317,0,270,3,0,60,2) # text={Panda}
+panda(645.5,3559.5,0,270,3,0,60,2) # text={Panda}
 # tile 2
-panda(707.32178,3300.3317,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
+panda(649.5,3377.5,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
 # tile 2
-panda(707.32178,3300.3317,51.5819,90,1,30,60,1) # panda=ignore
+panda(649.5,3377.5,51.5819,90,1,30,60,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,90,180,1,0,30,1) # panda=ignore
+panda(649.5,3377.5,90,180,1,0,30,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,90,180,1,30,60,1) # panda=ignore
+panda(649.5,3377.5,90,180,1,30,60,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,180,270,1,0,30,1) # panda=ignore
+panda(649.5,3377.5,180,270,1,0,30,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,180,270,1,30,60,1) # panda=ignore
+panda(649.5,3377.5,180,270,1,30,60,1) # panda=ignore
 # tile 2
-# compass(1073.3218,3626.3317,80) compass=physical {N} {E} 1 1 text={Compass}
+# compass(1015.5,3703.5,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 2
-epanda(867.32178,3466.3317,0,270,3,30,15,60,30,1,45) # text={Epanda}
+epanda(809.5,3543.5,0,270,3,30,15,60,30,1,45) # text={Epanda}
 # tile 2
-epanda(873.32178,3288.3317,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
+epanda(815.5,3365.5,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
 # tile 2
-epanda(873.32178,3288.3317,90,180,1,30,15,60,30,1,45) # epanda=ignore
+epanda(815.5,3365.5,90,180,1,30,15,60,30,1,45) # epanda=ignore
 # tile 2
-epanda(873.32178,3288.3317,180,270,1,30,15,60,30,1,45) # epanda=ignore
+epanda(815.5,3365.5,180,270,1,30,15,60,30,1,45) # epanda=ignore
 # tile 2
-bpanda(1041.3218,3466.3317,0,270,3,80,40,120,60,1,45) # text={Bpanda}
+bpanda(983.5,3543.5,0,270,3,80,40,120,60,1,45) # text={Bpanda}
 # tile 2
-bpanda(1033.3218,3290.3317,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
+bpanda(975.5,3367.5,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
 # tile 2
-bpanda(1033.3218,3290.3317,90,180,1,80,40,120,60,1,45) # bpanda=ignore
+bpanda(975.5,3367.5,90,180,1,80,40,120,60,1,45) # bpanda=ignore
 # tile 2
-bpanda(1033.3218,3290.3317,180,270,1,80,40,120,60,1,45) # bpanda=ignore
-# tile 2
-# circle3d(1215.3218,3400.3317,20) text={Circle3d}
-# tile 7
-circle(1184.0545,3389.7772,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
-# tile 7
--ellipse(1020.0545,3423.7772,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+bpanda(975.5,3367.5,180,270,1,80,40,120,60,1,45) # bpanda=ignore
 # tile 7
--box(840.05446,3427.7772,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+circle(931.5,3419.5,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 7
-polygon(701.56,3405.7772,626.05446,3330.2717,550.54892,3405.7772,626.05446,3481.2828) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-ellipse(767.5,3453.5,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 7
--line(498.05446,3455.7772,378.05446,3353.7772) # line=1 1 color=cyan text={Line}
+-box(587.5,3457.5,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 7
-# vector(310.05446,3411.7772,80,45) vector=1 color=red text={Vector}
+polygon(449.0055,3435.5,373.5,3359.9945,297.9945,3435.5,373.5,3511.0055) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 7
-# text(200.05446,3439.7772) color=magenta font="helvetica 14 bold roman" text={Region}
+-line(245.5,3485.5,125.5,3383.5) # line=1 1 color=cyan text={Line}
 # tile 7
-# ruler(742.05446,3677.7772,614.05446,3559.7772) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# vector(57.5,3441.5,80,45) vector=1 color=red text={Vector}
+# tile 6
+# text(1995.5,3469.5) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 7
-annulus(1184.0545,3613.7772,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(489.5,3707.5,361.5,3589.5) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 7
-ellipse(1014.0545,3621.7772,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(931.5,3643.5,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 7
-box(840.05446,3623.7772,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(761.5,3651.5,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 7
-point(1198.0545,3799.7772) # point=circle text={Circle Point}
+box(587.5,3653.5,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 7
-point(1020.0545,3803.7772) # point=box color=red width=3 text={Box Point}
+point(945.5,3829.5) # point=circle text={Circle Point}
 # tile 7
-point(858.05446,3799.7772) # point=diamond text={Diamond Point}
+point(767.5,3833.5) # point=box color=red width=3 text={Box Point}
 # tile 7
-point(1168.0545,3897.7772) # point=cross color=blue text={Cross Point}
+point(605.5,3829.5) # point=diamond text={Diamond Point}
 # tile 7
-point(1016.0545,3895.7772) # point=x text={X Point}
+point(915.5,3927.5) # point=cross color=blue text={Cross Point}
 # tile 7
-point(862.05446,3901.7772) # point=arrow color=magenta text={Arrow Point}
+point(763.5,3925.5) # point=x text={X Point}
 # tile 7
-point(1012.0545,3999.7772) # point=boxcircle text={BoxCircle Point}
+point(609.5,3931.5) # point=arrow color=magenta text={Arrow Point}
 # tile 7
-# projection(534.05446,3697.7772,348.05446,3565.7772,40) text={Projection}
+point(759.5,4029.5) # point=boxcircle text={BoxCircle Point}
 # tile 7
-panda(660.05446,3799.7772,0,270,3,0,60,2) # text={Panda}
+# projection(281.5,3727.5,95.5,3595.5,40) text={Projection}
 # tile 7
-panda(656.05446,3981.7772,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
+panda(407.5,3829.5,0,270,3,0,60,2) # text={Panda}
 # tile 7
-panda(656.05446,3981.7772,51.5819,90,1,30,60,1) # panda=ignore
+panda(403.5,4011.5,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
 # tile 7
-panda(656.05446,3981.7772,90,180,1,0,30,1) # panda=ignore
+panda(403.5,4011.5,51.5819,90,1,30,60,1) # panda=ignore
 # tile 7
-panda(656.05446,3981.7772,90,180,1,30,60,1) # panda=ignore
+panda(403.5,4011.5,90,180,1,0,30,1) # panda=ignore
 # tile 7
-panda(656.05446,3981.7772,180,270,1,0,30,1) # panda=ignore
+panda(403.5,4011.5,90,180,1,30,60,1) # panda=ignore
 # tile 7
-panda(656.05446,3981.7772,180,270,1,30,60,1) # panda=ignore
+panda(403.5,4011.5,180,270,1,0,30,1) # panda=ignore
 # tile 7
-# compass(290.05446,3655.7772,80) compass=physical {N} {E} 1 1 text={Compass}
+panda(403.5,4011.5,180,270,1,30,60,1) # panda=ignore
 # tile 7
-epanda(496.05446,3815.7772,0,270,3,30,15,60,30,1,45) # text={Epanda}
+# compass(37.5,3685.5,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 7
-epanda(490.05446,3993.7772,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
+epanda(243.5,3845.5,0,270,3,30,15,60,30,1,45) # text={Epanda}
 # tile 7
-epanda(490.05446,3993.7772,90,180,1,30,15,60,30,1,45) # epanda=ignore
+epanda(237.5,4023.5,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
 # tile 7
-epanda(490.05446,3993.7772,180,270,1,30,15,60,30,1,45) # epanda=ignore
+epanda(237.5,4023.5,90,180,1,30,15,60,30,1,45) # epanda=ignore
 # tile 7
-bpanda(322.05446,3815.7772,0,270,3,80,40,120,60,1,45) # text={Bpanda}
+epanda(237.5,4023.5,180,270,1,30,15,60,30,1,45) # epanda=ignore
 # tile 7
-bpanda(330.05446,3991.7772,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
+bpanda(69.5,3845.5,0,270,3,80,40,120,60,1,45) # text={Bpanda}
 # tile 7
-bpanda(330.05446,3991.7772,90,180,1,80,40,120,60,1,45) # bpanda=ignore
+bpanda(77.5,4021.5,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
 # tile 7
-bpanda(330.05446,3991.7772,180,270,1,80,40,120,60,1,45) # bpanda=ignore
+bpanda(77.5,4021.5,90,180,1,80,40,120,60,1,45) # bpanda=ignore
 # tile 7
-# circle3d(148.05446,3881.7772,20) text={Circle3d}
+bpanda(77.5,4021.5,180,270,1,80,40,120,60,1,45) # bpanda=ignore
diff --git a/tests/ds9.linear.wcsc.reg b/tests/ds9.linear.wcsc.reg
index a726fe2..3adf1eb 100644
--- a/tests/ds9.linear.wcsc.reg
+++ b/tests/ds9.linear.wcsc.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 wcsc;
 # tile 2
-circle(179.32178,3892.3317,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(121.5,3969.5,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 2
--ellipse(343.32178,3858.3317,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(285.5,3935.5,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 2
--box(523.32178,3854.3317,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(465.5,3931.5,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 2
-polygon(661.81624,3876.3317,737.32178,3951.8372,812.82732,3876.3317,737.32178,3800.8261) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(603.9945,3953.5,679.5,4029.0055,755.0055,3953.5,679.5,3877.9945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 2
--line(865.32178,3826.3317,985.32178,3928.3317) # line=1 1 color=cyan text={Line}
+-line(807.5,3903.5,927.5,4005.5) # line=1 1 color=cyan text={Line}
 # tile 2
-# vector(1053.3218,3870.3317,80,45) vector=1 color=red text={Vector}
+# vector(995.5,3947.5,80,45) vector=1 color=red text={Vector}
 # tile 2
-# text(1163.3218,3842.3317) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(1105.5,3919.5) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 2
-# ruler(621.32178,3604.3317,749.32178,3722.3317) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(563.5,3681.5,691.5,3799.5) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 2
-annulus(179.32178,3668.3317,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(121.5,3745.5,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 2
-ellipse(349.32178,3660.3317,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(291.5,3737.5,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 2
-box(523.32178,3658.3317,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
+box(465.5,3735.5,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 2
-point(165.32178,3482.3317) # point=circle text={Circle Point}
+point(107.5,3559.5) # point=circle text={Circle Point}
 # tile 2
-point(343.32178,3478.3317) # point=box color=red width=3 text={Box Point}
+point(285.5,3555.5) # point=box color=red width=3 text={Box Point}
 # tile 2
-point(505.32178,3482.3317) # point=diamond text={Diamond Point}
+point(447.5,3559.5) # point=diamond text={Diamond Point}
 # tile 2
-point(195.32178,3384.3317) # point=cross color=blue text={Cross Point}
+point(137.5,3461.5) # point=cross color=blue text={Cross Point}
 # tile 2
-point(347.32178,3386.3317) # point=x text={X Point}
+point(289.5,3463.5) # point=x text={X Point}
 # tile 2
-point(501.32178,3380.3317) # point=arrow color=magenta text={Arrow Point}
+point(443.5,3457.5) # point=arrow color=magenta text={Arrow Point}
 # tile 2
-point(351.32178,3282.3317) # point=boxcircle text={BoxCircle Point}
+point(293.5,3359.5) # point=boxcircle text={BoxCircle Point}
 # tile 2
-# projection(829.32178,3584.3317,1015.3218,3716.3317,40) text={Projection}
+# projection(771.5,3661.5,957.5,3793.5,40) text={Projection}
 # tile 2
-panda(703.32178,3482.3317,0,270,3,0,60,2) # text={Panda}
+panda(645.5,3559.5,0,270,3,0,60,2) # text={Panda}
 # tile 2
-panda(707.32178,3300.3317,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
+panda(649.5,3377.5,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
 # tile 2
-panda(707.32178,3300.3317,51.5819,90,1,30,60,1) # panda=ignore
+panda(649.5,3377.5,51.5819,90,1,30,60,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,90,180,1,0,30,1) # panda=ignore
+panda(649.5,3377.5,90,180,1,0,30,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,90,180,1,30,60,1) # panda=ignore
+panda(649.5,3377.5,90,180,1,30,60,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,180,270,1,0,30,1) # panda=ignore
+panda(649.5,3377.5,180,270,1,0,30,1) # panda=ignore
 # tile 2
-panda(707.32178,3300.3317,180,270,1,30,60,1) # panda=ignore
+panda(649.5,3377.5,180,270,1,30,60,1) # panda=ignore
 # tile 2
-# compass(1073.3218,3626.3317,80) compass=physical {N} {E} 1 1 text={Compass}
+# compass(1015.5,3703.5,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 2
-epanda(867.32178,3466.3317,0,270,3,30,15,60,30,1,45) # text={Epanda}
+epanda(809.5,3543.5,0,270,3,30,15,60,30,1,45) # text={Epanda}
 # tile 2
-epanda(873.32178,3288.3317,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
+epanda(815.5,3365.5,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
 # tile 2
-epanda(873.32178,3288.3317,90,180,1,30,15,60,30,1,45) # epanda=ignore
+epanda(815.5,3365.5,90,180,1,30,15,60,30,1,45) # epanda=ignore
 # tile 2
-epanda(873.32178,3288.3317,180,270,1,30,15,60,30,1,45) # epanda=ignore
+epanda(815.5,3365.5,180,270,1,30,15,60,30,1,45) # epanda=ignore
 # tile 2
-bpanda(1041.3218,3466.3317,0,270,3,80,40,120,60,1,45) # text={Bpanda}
+bpanda(983.5,3543.5,0,270,3,80,40,120,60,1,45) # text={Bpanda}
 # tile 2
-bpanda(1033.3218,3290.3317,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
+bpanda(975.5,3367.5,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
 # tile 2
-bpanda(1033.3218,3290.3317,90,180,1,80,40,120,60,1,45) # bpanda=ignore
+bpanda(975.5,3367.5,90,180,1,80,40,120,60,1,45) # bpanda=ignore
 # tile 2
-bpanda(1033.3218,3290.3317,180,270,1,80,40,120,60,1,45) # bpanda=ignore
-# tile 2
-# circle3d(1215.3218,3400.3317,20) text={Circle3d}
-# tile 7
-circle(-1182.0545,3389.7772,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
-# tile 7
--ellipse(-1018.0545,3423.7772,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+bpanda(975.5,3367.5,180,270,1,80,40,120,60,1,45) # bpanda=ignore
 # tile 7
--box(-838.05446,3427.7772,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+circle(-929.5,3419.5,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 7
-polygon(-699.56,3405.7772,-624.05446,3330.2717,-548.54892,3405.7772,-624.05446,3481.2828) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-ellipse(-765.5,3453.5,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 7
--line(-496.05446,3455.7772,-376.05446,3353.7772) # line=1 1 color=cyan text={Line}
+-box(-585.5,3457.5,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 7
-# vector(-308.05446,3411.7772,80,45) vector=1 color=red text={Vector}
+polygon(-447.0055,3435.5,-371.5,3359.9945,-295.9945,3435.5,-371.5,3511.0055) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 7
-# text(-198.05446,3439.7772) color=magenta font="helvetica 14 bold roman" text={Region}
+-line(-243.5,3485.5,-123.5,3383.5) # line=1 1 color=cyan text={Line}
 # tile 7
-# ruler(-740.05446,3677.7772,-612.05446,3559.7772) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# vector(-55.5,3441.5,80,45) vector=1 color=red text={Vector}
+# tile 6
+# text(-1993.5,3469.5) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 7
-annulus(-1182.0545,3613.7772,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(-487.5,3707.5,-359.5,3589.5) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 7
-ellipse(-1012.0545,3621.7772,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(-929.5,3643.5,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 7
-box(-838.05446,3623.7772,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(-759.5,3651.5,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 7
-point(-1196.0545,3799.7772) # point=circle text={Circle Point}
+box(-585.5,3653.5,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 7
-point(-1018.0545,3803.7772) # point=box color=red width=3 text={Box Point}
+point(-943.5,3829.5) # point=circle text={Circle Point}
 # tile 7
-point(-856.05446,3799.7772) # point=diamond text={Diamond Point}
+point(-765.5,3833.5) # point=box color=red width=3 text={Box Point}
 # tile 7
-point(-1166.0545,3897.7772) # point=cross color=blue text={Cross Point}
+point(-603.5,3829.5) # point=diamond text={Diamond Point}
 # tile 7
-point(-1014.0545,3895.7772) # point=x text={X Point}
+point(-913.5,3927.5) # point=cross color=blue text={Cross Point}
 # tile 7
-point(-860.05446,3901.7772) # point=arrow color=magenta text={Arrow Point}
+point(-761.5,3925.5) # point=x text={X Point}
 # tile 7
-point(-1010.0545,3999.7772) # point=boxcircle text={BoxCircle Point}
+point(-607.5,3931.5) # point=arrow color=magenta text={Arrow Point}
 # tile 7
-# projection(-532.05446,3697.7772,-346.05446,3565.7772,40) text={Projection}
+point(-757.5,4029.5) # point=boxcircle text={BoxCircle Point}
 # tile 7
-panda(-658.05446,3799.7772,0,270,3,0,60,2) # text={Panda}
+# projection(-279.5,3727.5,-93.5,3595.5,40) text={Projection}
 # tile 7
-panda(-654.05446,3981.7772,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
+panda(-405.5,3829.5,0,270,3,0,60,2) # text={Panda}
 # tile 7
-panda(-654.05446,3981.7772,51.5819,90,1,30,60,1) # panda=ignore
+panda(-401.5,4011.5,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
 # tile 7
-panda(-654.05446,3981.7772,90,180,1,0,30,1) # panda=ignore
+panda(-401.5,4011.5,51.5819,90,1,30,60,1) # panda=ignore
 # tile 7
-panda(-654.05446,3981.7772,90,180,1,30,60,1) # panda=ignore
+panda(-401.5,4011.5,90,180,1,0,30,1) # panda=ignore
 # tile 7
-panda(-654.05446,3981.7772,180,270,1,0,30,1) # panda=ignore
+panda(-401.5,4011.5,90,180,1,30,60,1) # panda=ignore
 # tile 7
-panda(-654.05446,3981.7772,180,270,1,30,60,1) # panda=ignore
+panda(-401.5,4011.5,180,270,1,0,30,1) # panda=ignore
 # tile 7
-# compass(-288.05446,3655.7772,80) compass=physical {N} {E} 1 1 text={Compass}
+panda(-401.5,4011.5,180,270,1,30,60,1) # panda=ignore
 # tile 7
-epanda(-494.05446,3815.7772,0,270,3,30,15,60,30,1,45) # text={Epanda}
+# compass(-35.5,3685.5,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 7
-epanda(-488.05446,3993.7772,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
+epanda(-241.5,3845.5,0,270,3,30,15,60,30,1,45) # text={Epanda}
 # tile 7
-epanda(-488.05446,3993.7772,90,180,1,30,15,60,30,1,45) # epanda=ignore
+epanda(-235.5,4023.5,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
 # tile 7
-epanda(-488.05446,3993.7772,180,270,1,30,15,60,30,1,45) # epanda=ignore
+epanda(-235.5,4023.5,90,180,1,30,15,60,30,1,45) # epanda=ignore
 # tile 7
-bpanda(-320.05446,3815.7772,0,270,3,80,40,120,60,1,45) # text={Bpanda}
+epanda(-235.5,4023.5,180,270,1,30,15,60,30,1,45) # epanda=ignore
 # tile 7
-bpanda(-328.05446,3991.7772,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
+bpanda(-67.5,3845.5,0,270,3,80,40,120,60,1,45) # text={Bpanda}
 # tile 7
-bpanda(-328.05446,3991.7772,90,180,1,80,40,120,60,1,45) # bpanda=ignore
+bpanda(-75.5,4021.5,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
 # tile 7
-bpanda(-328.05446,3991.7772,180,270,1,80,40,120,60,1,45) # bpanda=ignore
+bpanda(-75.5,4021.5,90,180,1,80,40,120,60,1,45) # bpanda=ignore
 # tile 7
-# circle3d(-146.05446,3881.7772,20) text={Circle3d}
+bpanda(-75.5,4021.5,180,270,1,80,40,120,60,1,45) # bpanda=ignore
diff --git a/tests/ds9.linear.wcsd.reg b/tests/ds9.linear.wcsd.reg
index 8a6e7af..1242cdf 100644
--- a/tests/ds9.linear.wcsd.reg
+++ b/tests/ds9.linear.wcsd.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 wcsd;
 # tile 2
-circle(3917.6782,3892.3317,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(3975.5,3969.5,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 2
--ellipse(3753.6782,3858.3317,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(3811.5,3935.5,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 2
--box(3573.6782,3854.3317,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(3631.5,3931.5,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 2
-polygon(3435.1838,3876.3317,3359.6782,3951.8372,3284.1727,3876.3317,3359.6782,3800.8261) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(3493.0055,3953.5,3417.5,4029.0055,3341.9945,3953.5,3417.5,3877.9945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 2
--line(3231.6782,3826.3317,3111.6782,3928.3317) # line=1 1 color=cyan text={Line}
+-line(3289.5,3903.5,3169.5,4005.5) # line=1 1 color=cyan text={Line}
 # tile 2
-# vector(3043.6782,3870.3317,80,135) vector=1 color=red text={Vector}
+# vector(3101.5,3947.5,80,135) vector=1 color=red text={Vector}
 # tile 2
-# text(2933.6782,3842.3317) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(2991.5,3919.5) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 2
-# ruler(3475.6782,3604.3317,3347.6782,3722.3317) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(3533.5,3681.5,3405.5,3799.5) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 2
-annulus(3917.6782,3668.3317,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(3975.5,3745.5,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 2
-ellipse(3747.6782,3660.3317,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(3805.5,3737.5,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 2
-box(3573.6782,3658.3317,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
+box(3631.5,3735.5,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 2
-point(3931.6782,3482.3317) # point=circle text={Circle Point}
+point(3989.5,3559.5) # point=circle text={Circle Point}
 # tile 2
-point(3753.6782,3478.3317) # point=box color=red width=3 text={Box Point}
+point(3811.5,3555.5) # point=box color=red width=3 text={Box Point}
 # tile 2
-point(3591.6782,3482.3317) # point=diamond text={Diamond Point}
+point(3649.5,3559.5) # point=diamond text={Diamond Point}
 # tile 2
-point(3901.6782,3384.3317) # point=cross color=blue text={Cross Point}
+point(3959.5,3461.5) # point=cross color=blue text={Cross Point}
 # tile 2
-point(3749.6782,3386.3317) # point=x text={X Point}
+point(3807.5,3463.5) # point=x text={X Point}
 # tile 2
-point(3595.6782,3380.3317) # point=arrow color=magenta text={Arrow Point}
+point(3653.5,3457.5) # point=arrow color=magenta text={Arrow Point}
 # tile 2
-point(3745.6782,3282.3317) # point=boxcircle text={BoxCircle Point}
+point(3803.5,3359.5) # point=boxcircle text={BoxCircle Point}
 # tile 2
-# projection(3267.6782,3584.3317,3081.6782,3716.3317,40) text={Projection}
+# projection(3325.5,3661.5,3139.5,3793.5,40) text={Projection}
 # tile 2
-panda(3393.6782,3482.3317,180,270,3,0,60,2) # text={Panda}
+panda(3451.5,3559.5,180,270,3,0,60,2) # text={Panda}
 # tile 2
-panda(3389.6782,3300.3317,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
+panda(3447.5,3377.5,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
 # tile 2
-panda(3389.6782,3300.3317,128.4181,450,1,30,60,1) # panda=ignore
+panda(3447.5,3377.5,128.4181,450,1,30,60,1) # panda=ignore
 # tile 2
-panda(3389.6782,3300.3317,90,360,1,0,30,1) # panda=ignore
+panda(3447.5,3377.5,90,360,1,0,30,1) # panda=ignore
 # tile 2
-panda(3389.6782,3300.3317,90,360,1,30,60,1) # panda=ignore
+panda(3447.5,3377.5,90,360,1,30,60,1) # panda=ignore
 # tile 2
-panda(3389.6782,3300.3317,0,270,1,0,30,1) # panda=ignore
+panda(3447.5,3377.5,0,270,1,0,30,1) # panda=ignore
 # tile 2
-panda(3389.6782,3300.3317,0,270,1,30,60,1) # panda=ignore
+panda(3447.5,3377.5,0,270,1,30,60,1) # panda=ignore
 # tile 2
-# compass(3023.6782,3626.3317,80) compass=physical {N} {E} 1 1 text={Compass}
+# compass(3081.5,3703.5,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 2
-epanda(3229.6782,3466.3317,180,270,3,30,15,60,30,1,135) # text={Epanda}
+epanda(3287.5,3543.5,180,270,3,30,15,60,30,1,135) # text={Epanda}
 # tile 2
-epanda(3223.6782,3288.3317,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
+epanda(3281.5,3365.5,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
 # tile 2
-epanda(3223.6782,3288.3317,90,360,1,30,15,60,30,1,135) # epanda=ignore
+epanda(3281.5,3365.5,90,360,1,30,15,60,30,1,135) # epanda=ignore
 # tile 2
-epanda(3223.6782,3288.3317,0,270,1,30,15,60,30,1,135) # epanda=ignore
+epanda(3281.5,3365.5,0,270,1,30,15,60,30,1,135) # epanda=ignore
 # tile 2
-bpanda(3055.6782,3466.3317,180,270,3,80,40,120,60,1,135) # text={Bpanda}
+bpanda(3113.5,3543.5,180,270,3,80,40,120,60,1,135) # text={Bpanda}
 # tile 2
-bpanda(3063.6782,3290.3317,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
+bpanda(3121.5,3367.5,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
 # tile 2
-bpanda(3063.6782,3290.3317,90,360,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(3121.5,3367.5,90,360,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 2
-bpanda(3063.6782,3290.3317,0,270,1,80,40,120,60,1,135) # bpanda=ignore
-# tile 2
-# circle3d(2881.6782,3400.3317,20) text={Circle3d}
-# tile 7
-circle(5280.0545,4803.2228,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
-# tile 7
--ellipse(5116.0545,4769.2228,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+bpanda(3121.5,3367.5,0,270,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 7
--box(4936.0545,4765.2228,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
+circle(5027.5,4773.5,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 7
-polygon(4797.56,4787.2228,4722.0545,4862.7283,4646.5489,4787.2228,4722.0545,4711.7172) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-ellipse(4863.5,4739.5,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 7
--line(4594.0545,4737.2228,4474.0545,4839.2228) # line=1 1 color=cyan text={Line}
+-box(4683.5,4735.5,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 7
-# vector(4406.0545,4781.2228,80,135) vector=1 color=red text={Vector}
+polygon(4545.0055,4757.5,4469.5,4833.0055,4393.9945,4757.5,4469.5,4681.9945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 7
-# text(4296.0545,4753.2228) color=magenta font="helvetica 14 bold roman" text={Region}
+-line(4341.5,4707.5,4221.5,4809.5) # line=1 1 color=cyan text={Line}
 # tile 7
-# ruler(4838.0545,4515.2228,4710.0545,4633.2228) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# vector(4153.5,4751.5,80,135) vector=1 color=red text={Vector}
+# tile 6
+# text(4043.5,4723.5) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 7
-annulus(5280.0545,4579.2228,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(4585.5,4485.5,4457.5,4603.5) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 7
-ellipse(5110.0545,4571.2228,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(5027.5,4549.5,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 7
-box(4936.0545,4569.2228,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(4857.5,4541.5,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 7
-point(5294.0545,4393.2228) # point=circle text={Circle Point}
+box(4683.5,4539.5,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 7
-point(5116.0545,4389.2228) # point=box color=red width=3 text={Box Point}
+point(5041.5,4363.5) # point=circle text={Circle Point}
 # tile 7
-point(4954.0545,4393.2228) # point=diamond text={Diamond Point}
+point(4863.5,4359.5) # point=box color=red width=3 text={Box Point}
 # tile 7
-point(5264.0545,4295.2228) # point=cross color=blue text={Cross Point}
+point(4701.5,4363.5) # point=diamond text={Diamond Point}
 # tile 7
-point(5112.0545,4297.2228) # point=x text={X Point}
+point(5011.5,4265.5) # point=cross color=blue text={Cross Point}
 # tile 7
-point(4958.0545,4291.2228) # point=arrow color=magenta text={Arrow Point}
+point(4859.5,4267.5) # point=x text={X Point}
 # tile 7
-point(5108.0545,4193.2228) # point=boxcircle text={BoxCircle Point}
+point(4705.5,4261.5) # point=arrow color=magenta text={Arrow Point}
 # tile 7
-# projection(4630.0545,4495.2228,4444.0545,4627.2228,40) text={Projection}
+point(4855.5,4163.5) # point=boxcircle text={BoxCircle Point}
 # tile 7
-panda(4756.0545,4393.2228,180,270,3,0,60,2) # text={Panda}
+# projection(4377.5,4465.5,4191.5,4597.5,40) text={Projection}
 # tile 7
-panda(4752.0545,4211.2228,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
+panda(4503.5,4363.5,180,270,3,0,60,2) # text={Panda}
 # tile 7
-panda(4752.0545,4211.2228,128.4181,450,1,30,60,1) # panda=ignore
+panda(4499.5,4181.5,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
 # tile 7
-panda(4752.0545,4211.2228,90,360,1,0,30,1) # panda=ignore
+panda(4499.5,4181.5,128.4181,450,1,30,60,1) # panda=ignore
 # tile 7
-panda(4752.0545,4211.2228,90,360,1,30,60,1) # panda=ignore
+panda(4499.5,4181.5,90,360,1,0,30,1) # panda=ignore
 # tile 7
-panda(4752.0545,4211.2228,0,270,1,0,30,1) # panda=ignore
+panda(4499.5,4181.5,90,360,1,30,60,1) # panda=ignore
 # tile 7
-panda(4752.0545,4211.2228,0,270,1,30,60,1) # panda=ignore
+panda(4499.5,4181.5,0,270,1,0,30,1) # panda=ignore
 # tile 7
-# compass(4386.0545,4537.2228,80) compass=physical {N} {E} 1 1 text={Compass}
+panda(4499.5,4181.5,0,270,1,30,60,1) # panda=ignore
 # tile 7
-epanda(4592.0545,4377.2228,180,270,3,30,15,60,30,1,135) # text={Epanda}
+# compass(4133.5,4507.5,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 7
-epanda(4586.0545,4199.2228,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
+epanda(4339.5,4347.5,180,270,3,30,15,60,30,1,135) # text={Epanda}
 # tile 7
-epanda(4586.0545,4199.2228,90,360,1,30,15,60,30,1,135) # epanda=ignore
+epanda(4333.5,4169.5,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
 # tile 7
-epanda(4586.0545,4199.2228,0,270,1,30,15,60,30,1,135) # epanda=ignore
+epanda(4333.5,4169.5,90,360,1,30,15,60,30,1,135) # epanda=ignore
 # tile 7
-bpanda(4418.0545,4377.2228,180,270,3,80,40,120,60,1,135) # text={Bpanda}
+epanda(4333.5,4169.5,0,270,1,30,15,60,30,1,135) # epanda=ignore
 # tile 7
-bpanda(4426.0545,4201.2228,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
+bpanda(4165.5,4347.5,180,270,3,80,40,120,60,1,135) # text={Bpanda}
 # tile 7
-bpanda(4426.0545,4201.2228,90,360,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(4173.5,4171.5,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
 # tile 7
-bpanda(4426.0545,4201.2228,0,270,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(4173.5,4171.5,90,360,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 7
-# circle3d(4244.0545,4311.2228,20) text={Circle3d}
+bpanda(4173.5,4171.5,0,270,1,80,40,120,60,1,135) # bpanda=ignore
diff --git a/tests/ds9.linear.wcsi.reg b/tests/ds9.linear.wcsi.reg
index c076320..8ac4387 100644
--- a/tests/ds9.linear.wcsi.reg
+++ b/tests/ds9.linear.wcsi.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 wcsi;
 # tile 2
-circle(95.910891,1096.4158,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(67,1135,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 2
--ellipse(177.91089,1079.4158,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(149,1118,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 2
--box(267.91089,1077.4158,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(239,1116,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 2
-polygon(337.15812,1088.4158,374.91089,1126.1686,412.66366,1088.4158,374.91089,1050.6631) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(308.24725,1127,346,1164.7528,383.75275,1127,346,1089.2472) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 2
--line(438.91089,1063.4158,498.91089,1114.4158) # line=1 1 color=cyan text={Line}
+-line(410,1102,470,1153) # line=1 1 color=cyan text={Line}
 # tile 2
-# vector(532.91089,1085.4158,40,45) vector=1 color=red text={Vector}
+# vector(504,1124,40,45) vector=1 color=red text={Vector}
 # tile 2
-# text(587.91089,1071.4158) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(559,1110) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 2
-# ruler(316.91089,952.41584,380.91089,1011.4158) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(288,991,352,1050) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 2
-annulus(95.910891,984.41584,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(67,1023,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 2
-ellipse(180.91089,980.41584,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(152,1019,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 2
-box(267.91089,979.41584,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
+box(239,1018,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 2
-point(88.910891,891.41584) # point=circle text={Circle Point}
+point(60,930) # point=circle text={Circle Point}
 # tile 2
-point(177.91089,889.41584) # point=box color=red width=3 text={Box Point}
+point(149,928) # point=box color=red width=3 text={Box Point}
 # tile 2
-point(258.91089,891.41584) # point=diamond text={Diamond Point}
+point(230,930) # point=diamond text={Diamond Point}
 # tile 2
-point(103.91089,842.41584) # point=cross color=blue text={Cross Point}
+point(75,881) # point=cross color=blue text={Cross Point}
 # tile 2
-point(179.91089,843.41584) # point=x text={X Point}
+point(151,882) # point=x text={X Point}
 # tile 2
-point(256.91089,840.41584) # point=arrow color=magenta text={Arrow Point}
+point(228,879) # point=arrow color=magenta text={Arrow Point}
 # tile 2
-point(181.91089,791.41584) # point=boxcircle text={BoxCircle Point}
+point(153,830) # point=boxcircle text={BoxCircle Point}
 # tile 2
-# projection(420.91089,942.41584,513.91089,1008.4158,20) text={Projection}
+# projection(392,981,485,1047,20) text={Projection}
 # tile 2
-panda(357.91089,891.41584,0,270,3,0,30,2) # text={Panda}
+panda(329,930,0,270,3,0,30,2) # text={Panda}
 # tile 2
-panda(359.91089,800.41584,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
+panda(331,839,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
 # tile 2
-panda(359.91089,800.41584,51.5819,90,1,15,30,1) # panda=ignore
+panda(331,839,51.5819,90,1,15,30,1) # panda=ignore
 # tile 2
-panda(359.91089,800.41584,90,180,1,0,15,1) # panda=ignore
+panda(331,839,90,180,1,0,15,1) # panda=ignore
 # tile 2
-panda(359.91089,800.41584,90,180,1,15,30,1) # panda=ignore
+panda(331,839,90,180,1,15,30,1) # panda=ignore
 # tile 2
-panda(359.91089,800.41584,180,270,1,0,15,1) # panda=ignore
+panda(331,839,180,270,1,0,15,1) # panda=ignore
 # tile 2
-panda(359.91089,800.41584,180,270,1,15,30,1) # panda=ignore
+panda(331,839,180,270,1,15,30,1) # panda=ignore
 # tile 2
-# compass(542.91089,963.41584,40) compass=physical {N} {E} 1 1 text={Compass}
+# compass(514,1002,40) compass=physical {N} {E} 1 1 text={Compass}
 # tile 2
-epanda(439.91089,883.41584,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
+epanda(411,922,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
 # tile 2
-epanda(442.91089,794.41584,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
+epanda(414,833,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
 # tile 2
-epanda(442.91089,794.41584,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(414,833,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 2
-epanda(442.91089,794.41584,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(414,833,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 2
-bpanda(526.91089,883.41584,0,270,3,40,20,60,30,1,45) # text={Bpanda}
+bpanda(498,922,0,270,3,40,20,60,30,1,45) # text={Bpanda}
 # tile 2
-bpanda(522.91089,795.41584,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
+bpanda(494,834,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
 # tile 2
-bpanda(522.91089,795.41584,90,180,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(494,834,90,180,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 2
-bpanda(522.91089,795.41584,180,270,1,40,20,60,30,1,45) # bpanda=ignore
-# tile 2
-# circle3d(613.91089,850.41584,10) text={Circle3d}
-# tile 7
-circle(598.27723,845.13861,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
-# tile 7
--ellipse(516.27723,862.13861,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+bpanda(494,834,180,270,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 7
--box(426.27723,864.13861,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+circle(472,860,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 7
-polygon(357.03,853.13861,319.27723,815.38586,281.52446,853.13861,319.27723,890.89138) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-ellipse(390,877,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 7
--line(255.27723,878.13861,195.27723,827.13861) # line=1 1 color=cyan text={Line}
+-box(300,879,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 7
-# vector(161.27723,856.13861,40,45) vector=1 color=red text={Vector}
+polygon(230.75275,868,193,830.24725,155.24725,868,193,905.75275) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 7
-# text(106.27723,870.13861) color=magenta font="helvetica 14 bold roman" text={Region}
+-line(129,893,69,842) # line=1 1 color=cyan text={Line}
 # tile 7
-# ruler(377.27723,989.13861,313.27723,930.13861) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# vector(35,871,40,45) vector=1 color=red text={Vector}
+# tile 6
+# text(1004,885) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 7
-annulus(598.27723,957.13861,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(251,1004,187,945) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 7
-ellipse(513.27723,961.13861,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(472,972,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 7
-box(426.27723,962.13861,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(387,976,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 7
-point(605.27723,1050.1386) # point=circle text={Circle Point}
+box(300,977,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 7
-point(516.27723,1052.1386) # point=box color=red width=3 text={Box Point}
+point(479,1065) # point=circle text={Circle Point}
 # tile 7
-point(435.27723,1050.1386) # point=diamond text={Diamond Point}
+point(390,1067) # point=box color=red width=3 text={Box Point}
 # tile 7
-point(590.27723,1099.1386) # point=cross color=blue text={Cross Point}
+point(309,1065) # point=diamond text={Diamond Point}
 # tile 7
-point(514.27723,1098.1386) # point=x text={X Point}
+point(464,1114) # point=cross color=blue text={Cross Point}
 # tile 7
-point(437.27723,1101.1386) # point=arrow color=magenta text={Arrow Point}
+point(388,1113) # point=x text={X Point}
 # tile 7
-point(512.27723,1150.1386) # point=boxcircle text={BoxCircle Point}
+point(311,1116) # point=arrow color=magenta text={Arrow Point}
 # tile 7
-# projection(273.27723,999.13861,180.27723,933.13861,20) text={Projection}
+point(386,1165) # point=boxcircle text={BoxCircle Point}
 # tile 7
-panda(336.27723,1050.1386,0,270,3,0,30,2) # text={Panda}
+# projection(147,1014,54,948,20) text={Projection}
 # tile 7
-panda(334.27723,1141.1386,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
+panda(210,1065,0,270,3,0,30,2) # text={Panda}
 # tile 7
-panda(334.27723,1141.1386,51.5819,90,1,15,30,1) # panda=ignore
+panda(208,1156,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
 # tile 7
-panda(334.27723,1141.1386,90,180,1,0,15,1) # panda=ignore
+panda(208,1156,51.5819,90,1,15,30,1) # panda=ignore
 # tile 7
-panda(334.27723,1141.1386,90,180,1,15,30,1) # panda=ignore
+panda(208,1156,90,180,1,0,15,1) # panda=ignore
 # tile 7
-panda(334.27723,1141.1386,180,270,1,0,15,1) # panda=ignore
+panda(208,1156,90,180,1,15,30,1) # panda=ignore
 # tile 7
-panda(334.27723,1141.1386,180,270,1,15,30,1) # panda=ignore
+panda(208,1156,180,270,1,0,15,1) # panda=ignore
 # tile 7
-# compass(151.27723,978.13861,40) compass=physical {N} {E} 1 1 text={Compass}
+panda(208,1156,180,270,1,15,30,1) # panda=ignore
 # tile 7
-epanda(254.27723,1058.1386,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
+# compass(25,993,40) compass=physical {N} {E} 1 1 text={Compass}
 # tile 7
-epanda(251.27723,1147.1386,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
+epanda(128,1073,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
 # tile 7
-epanda(251.27723,1147.1386,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(125,1162,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
 # tile 7
-epanda(251.27723,1147.1386,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(125,1162,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 7
-bpanda(167.27723,1058.1386,0,270,3,40,20,60,30,1,45) # text={Bpanda}
+epanda(125,1162,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 7
-bpanda(171.27723,1146.1386,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
+bpanda(41,1073,0,270,3,40,20,60,30,1,45) # text={Bpanda}
 # tile 7
-bpanda(171.27723,1146.1386,90,180,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(45,1161,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
 # tile 7
-bpanda(171.27723,1146.1386,180,270,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(45,1161,90,180,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 7
-# circle3d(80.277228,1091.1386,10) text={Circle3d}
+bpanda(45,1161,180,270,1,40,20,60,30,1,45) # bpanda=ignore
diff --git a/tests/ds9.linear.wcsp.reg b/tests/ds9.linear.wcsp.reg
index 73187dc..d886aa6 100644
--- a/tests/ds9.linear.wcsp.reg
+++ b/tests/ds9.linear.wcsp.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 wcsp;
 # tile 2
-circle(3917.1782,3891.8317,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(3975,3969,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 2
--ellipse(3753.1782,3857.8317,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(3811,3935,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 2
--box(3573.1782,3853.8317,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(3631,3931,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 2
-polygon(3434.6838,3875.8317,3359.1782,3951.3372,3283.6727,3875.8317,3359.1782,3800.3261) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(3492.5055,3953,3417,4028.5055,3341.4945,3953,3417,3877.4945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 2
--line(3231.1782,3825.8317,3111.1782,3927.8317) # line=1 1 color=cyan text={Line}
+-line(3289,3903,3169,4005) # line=1 1 color=cyan text={Line}
 # tile 2
-# vector(3043.1782,3869.8317,80,135) vector=1 color=red text={Vector}
+# vector(3101,3947,80,135) vector=1 color=red text={Vector}
 # tile 2
-# text(2933.1782,3841.8317) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(2991,3919) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 2
-# ruler(3475.1782,3603.8317,3347.1782,3721.8317) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(3533,3681,3405,3799) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 2
-annulus(3917.1782,3667.8317,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(3975,3745,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 2
-ellipse(3747.1782,3659.8317,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(3805,3737,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 2
-box(3573.1782,3657.8317,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
+box(3631,3735,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 2
-point(3931.1782,3481.8317) # point=circle text={Circle Point}
+point(3989,3559) # point=circle text={Circle Point}
 # tile 2
-point(3753.1782,3477.8317) # point=box color=red width=3 text={Box Point}
+point(3811,3555) # point=box color=red width=3 text={Box Point}
 # tile 2
-point(3591.1782,3481.8317) # point=diamond text={Diamond Point}
+point(3649,3559) # point=diamond text={Diamond Point}
 # tile 2
-point(3901.1782,3383.8317) # point=cross color=blue text={Cross Point}
+point(3959,3461) # point=cross color=blue text={Cross Point}
 # tile 2
-point(3749.1782,3385.8317) # point=x text={X Point}
+point(3807,3463) # point=x text={X Point}
 # tile 2
-point(3595.1782,3379.8317) # point=arrow color=magenta text={Arrow Point}
+point(3653,3457) # point=arrow color=magenta text={Arrow Point}
 # tile 2
-point(3745.1782,3281.8317) # point=boxcircle text={BoxCircle Point}
+point(3803,3359) # point=boxcircle text={BoxCircle Point}
 # tile 2
-# projection(3267.1782,3583.8317,3081.1782,3715.8317,40) text={Projection}
+# projection(3325,3661,3139,3793,40) text={Projection}
 # tile 2
-panda(3393.1782,3481.8317,180,270,3,0,60,2) # text={Panda}
+panda(3451,3559,180,270,3,0,60,2) # text={Panda}
 # tile 2
-panda(3389.1782,3299.8317,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
+panda(3447,3377,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
 # tile 2
-panda(3389.1782,3299.8317,128.4181,450,1,30,60,1) # panda=ignore
+panda(3447,3377,128.4181,450,1,30,60,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,90,360,1,0,30,1) # panda=ignore
+panda(3447,3377,90,360,1,0,30,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,90,360,1,30,60,1) # panda=ignore
+panda(3447,3377,90,360,1,30,60,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,0,270,1,0,30,1) # panda=ignore
+panda(3447,3377,0,270,1,0,30,1) # panda=ignore
 # tile 2
-panda(3389.1782,3299.8317,0,270,1,30,60,1) # panda=ignore
+panda(3447,3377,0,270,1,30,60,1) # panda=ignore
 # tile 2
-# compass(3023.1782,3625.8317,80) compass=physical {N} {E} 1 1 text={Compass}
+# compass(3081,3703,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 2
-epanda(3229.1782,3465.8317,180,270,3,30,15,60,30,1,135) # text={Epanda}
+epanda(3287,3543,180,270,3,30,15,60,30,1,135) # text={Epanda}
 # tile 2
-epanda(3223.1782,3287.8317,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
+epanda(3281,3365,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
 # tile 2
-epanda(3223.1782,3287.8317,90,360,1,30,15,60,30,1,135) # epanda=ignore
+epanda(3281,3365,90,360,1,30,15,60,30,1,135) # epanda=ignore
 # tile 2
-epanda(3223.1782,3287.8317,0,270,1,30,15,60,30,1,135) # epanda=ignore
+epanda(3281,3365,0,270,1,30,15,60,30,1,135) # epanda=ignore
 # tile 2
-bpanda(3055.1782,3465.8317,180,270,3,80,40,120,60,1,135) # text={Bpanda}
+bpanda(3113,3543,180,270,3,80,40,120,60,1,135) # text={Bpanda}
 # tile 2
-bpanda(3063.1782,3289.8317,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
+bpanda(3121,3367,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
 # tile 2
-bpanda(3063.1782,3289.8317,90,360,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(3121,3367,90,360,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 2
-bpanda(3063.1782,3289.8317,0,270,1,80,40,120,60,1,135) # bpanda=ignore
-# tile 2
-# circle3d(2881.1782,3399.8317,20) text={Circle3d}
-# tile 7
-circle(5279.5545,4802.7228,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
-# tile 7
--ellipse(5115.5545,4768.7228,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+bpanda(3121,3367,0,270,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 7
--box(4935.5545,4764.7228,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
+circle(5027,4773,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 7
-polygon(4797.06,4786.7228,4721.5545,4862.2283,4646.0489,4786.7228,4721.5545,4711.2172) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-ellipse(4863,4739,80,40,135) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 7
--line(4593.5545,4736.7228,4473.5545,4838.7228) # line=1 1 color=cyan text={Line}
+-box(4683,4735,160,80,135) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 7
-# vector(4405.5545,4780.7228,80,135) vector=1 color=red text={Vector}
+polygon(4544.5055,4757,4469,4832.5055,4393.4945,4757,4469,4681.4945) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 7
-# text(4295.5545,4752.7228) color=magenta font="helvetica 14 bold roman" text={Region}
+-line(4341,4707,4221,4809) # line=1 1 color=cyan text={Line}
 # tile 7
-# ruler(4837.5545,4514.7228,4709.5545,4632.7228) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# vector(4153,4751,80,135) vector=1 color=red text={Vector}
+# tile 6
+# text(4043,4723) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 7
-annulus(5279.5545,4578.7228,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(4585,4485,4457,4603) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 7
-ellipse(5109.5545,4570.7228,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(5027,4549,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 7
-box(4935.5545,4568.7228,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(4857,4541,30,15,60,30,135) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 7
-point(5293.5545,4392.7228) # point=circle text={Circle Point}
+box(4683,4539,80,40,120,60,135) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 7
-point(5115.5545,4388.7228) # point=box color=red width=3 text={Box Point}
+point(5041,4363) # point=circle text={Circle Point}
 # tile 7
-point(4953.5545,4392.7228) # point=diamond text={Diamond Point}
+point(4863,4359) # point=box color=red width=3 text={Box Point}
 # tile 7
-point(5263.5545,4294.7228) # point=cross color=blue text={Cross Point}
+point(4701,4363) # point=diamond text={Diamond Point}
 # tile 7
-point(5111.5545,4296.7228) # point=x text={X Point}
+point(5011,4265) # point=cross color=blue text={Cross Point}
 # tile 7
-point(4957.5545,4290.7228) # point=arrow color=magenta text={Arrow Point}
+point(4859,4267) # point=x text={X Point}
 # tile 7
-point(5107.5545,4192.7228) # point=boxcircle text={BoxCircle Point}
+point(4705,4261) # point=arrow color=magenta text={Arrow Point}
 # tile 7
-# projection(4629.5545,4494.7228,4443.5545,4626.7228,40) text={Projection}
+point(4855,4163) # point=boxcircle text={BoxCircle Point}
 # tile 7
-panda(4755.5545,4392.7228,180,270,3,0,60,2) # text={Panda}
+# projection(4377,4465,4191,4597,40) text={Projection}
 # tile 7
-panda(4751.5545,4210.7228,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
+panda(4503,4363,180,270,3,0,60,2) # text={Panda}
 # tile 7
-panda(4751.5545,4210.7228,128.4181,450,1,30,60,1) # panda=ignore
+panda(4499,4181,128.4181,450,1,0,30,1) # panda=(128.4181 90 0 270)(0 30 60) text={Panda 2}
 # tile 7
-panda(4751.5545,4210.7228,90,360,1,0,30,1) # panda=ignore
+panda(4499,4181,128.4181,450,1,30,60,1) # panda=ignore
 # tile 7
-panda(4751.5545,4210.7228,90,360,1,30,60,1) # panda=ignore
+panda(4499,4181,90,360,1,0,30,1) # panda=ignore
 # tile 7
-panda(4751.5545,4210.7228,0,270,1,0,30,1) # panda=ignore
+panda(4499,4181,90,360,1,30,60,1) # panda=ignore
 # tile 7
-panda(4751.5545,4210.7228,0,270,1,30,60,1) # panda=ignore
+panda(4499,4181,0,270,1,0,30,1) # panda=ignore
 # tile 7
-# compass(4385.5545,4536.7228,80) compass=physical {N} {E} 1 1 text={Compass}
+panda(4499,4181,0,270,1,30,60,1) # panda=ignore
 # tile 7
-epanda(4591.5545,4376.7228,180,270,3,30,15,60,30,1,135) # text={Epanda}
+# compass(4133,4507,80) compass=physical {N} {E} 1 1 text={Compass}
 # tile 7
-epanda(4585.5545,4198.7228,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
+epanda(4339,4347,180,270,3,30,15,60,30,1,135) # text={Epanda}
 # tile 7
-epanda(4585.5545,4198.7228,90,360,1,30,15,60,30,1,135) # epanda=ignore
+epanda(4333,4169,135,450,1,30,15,60,30,1,135) # epanda=(135 90 0 270)(30 15 60 30)(135) text={Epanda 2}
 # tile 7
-epanda(4585.5545,4198.7228,0,270,1,30,15,60,30,1,135) # epanda=ignore
+epanda(4333,4169,90,360,1,30,15,60,30,1,135) # epanda=ignore
 # tile 7
-bpanda(4417.5545,4376.7228,180,270,3,80,40,120,60,1,135) # text={Bpanda}
+epanda(4333,4169,0,270,1,30,15,60,30,1,135) # epanda=ignore
 # tile 7
-bpanda(4425.5545,4200.7228,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
+bpanda(4165,4347,180,270,3,80,40,120,60,1,135) # text={Bpanda}
 # tile 7
-bpanda(4425.5545,4200.7228,90,360,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(4173,4171,135,450,1,80,40,120,60,1,135) # bpanda=(135 90 0 270)(80 40 120 60)(135) text={Bpanda 2}
 # tile 7
-bpanda(4425.5545,4200.7228,0,270,1,80,40,120,60,1,135) # bpanda=ignore
+bpanda(4173,4171,90,360,1,80,40,120,60,1,135) # bpanda=ignore
 # tile 7
-# circle3d(4243.5545,4310.7228,20) text={Circle3d}
+bpanda(4173,4171,0,270,1,80,40,120,60,1,135) # bpanda=ignore
diff --git a/tests/ds9.mosaic.ecliptic.hms.reg b/tests/ds9.mosaic.ecliptic.hms.reg
index c63f491..72db574 100644
--- a/tests/ds9.mosaic.ecliptic.hms.reg
+++ b/tests/ds9.mosaic.ecliptic.hms.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 ecliptic
-circle(+275:41:43.773,+54:45:57.589,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(+275:40:56.041,+54:45:53.192,13.32",6.66",47.5211) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(+275:40:04.095,+54:45:53.902,26.64",13.32",47.5211) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(+275:39:24.458,+54:45:58.616,+275:39:03.682,+54:46:11.747,+275:38:40.920,+54:45:59.761,+275:39:01.697,+54:45:46.630) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(+275:38:25.131,+54:45:51.841,+275:37:51.868,+54:46:09.713) # line=1 1 color=cyan text={Line}
-# vector(+275:37:31.505,+54:46:00.577,13.32",47.5211) vector=1 color=red text={Vector}
-# text(+275:36:59.426,+54:45:56.747) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(+275:39:32.548,+54:45:13.067,+275:38:57.206,+54:45:33.665) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(+275:41:40.788,+54:45:20.333,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(+275:40:51.684,+54:45:20.306,4.995",2.4975",9.99",4.995",47.5211) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(+275:40:01.506,+54:45:21.303,13.32",6.66",19.98",9.99",47.5211) # font="helvetica 10 bold roman" text={Box Annulus}
-point(+275:41:42.345,+54:44:49.289) # point=circle text={Circle Point}
-point(+275:40:50.999,+54:44:49.989) # point=box color=red width=3 text={Box Point}
-point(+275:40:04.369,+54:44:51.892) # point=diamond text={Diamond Point}
-point(+275:41:32.396,+54:44:33.220) # point=cross color=blue text={Cross Point}
-point(+275:40:48.627,+54:44:34.718) # point=x text={X Point}
-point(+275:40:04.174,+54:44:34.896) # point=arrow color=magenta text={Arrow Point}
-point(+275:40:46.096,+54:44:17.451) # point=boxcircle text={BoxCircle Point}
-# projection(+275:38:32.337,+54:45:11.318,+275:37:40.451,+54:45:34.677,6.66") text={Projection}
-panda(+275:39:07.311,+54:44:53.398,2.52109,272.521,3,0",9.99",2) # text={Panda}
-panda(+275:39:03.767,+54:44:23.157,54.103,92.5211,1,0",4.995",1) # panda=(54.103 92.5211 182.521 272.521)(0" 4.995" 9.99") text={Panda 2}
-panda(+275:39:03.767,+54:44:23.157,54.103,92.5211,1,4.995",9.99",1) # panda=ignore
-panda(+275:39:03.767,+54:44:23.157,92.5211,182.521,1,0",4.995",1) # panda=ignore
-panda(+275:39:03.767,+54:44:23.157,92.5211,182.521,1,4.995",9.99",1) # panda=ignore
-panda(+275:39:03.767,+54:44:23.157,182.521,272.521,1,0",4.995",1) # panda=ignore
-panda(+275:39:03.767,+54:44:23.157,182.521,272.521,1,4.995",9.99",1) # panda=ignore
-# compass(+275:37:22.559,+54:45:20.143,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(+275:38:19.840,+54:44:51.978,2.52109,272.521,3,4.995",2.4975",9.99",4.995",1,47.5211) # text={Epanda}
-epanda(+275:38:15.782,+54:44:22.417,47.5211,92.5211,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=(47.5211 92.5211 182.521 272.521)(4.995" 2.4975" 9.99" 4.995")(47.5211) text={Epanda 2}
-epanda(+275:38:15.782,+54:44:22.417,92.5211,182.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
-epanda(+275:38:15.782,+54:44:22.417,182.521,272.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
-bpanda(+275:37:29.697,+54:44:53.290,2.52109,272.521,3,13.32",6.66",19.98",9.99",1,47.5211) # text={Bpanda}
-bpanda(+275:37:29.709,+54:44:23.956,47.5211,92.5211,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=(47.5211 92.5211 182.521 272.521)(13.32" 6.66" 19.98" 9.99")(47.5211) text={Bpanda 2}
-bpanda(+275:37:29.709,+54:44:23.956,92.5211,182.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
-bpanda(+275:37:29.709,+54:44:23.956,182.521,272.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
-# circle3d(+275:36:38.697,+54:44:43.618,3.33") text={Circle3d}
-circle(+275:49:26.999,+54:48:27.679,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(+275:48:39.203,+54:48:23.333,13.32",6.66",47.5211) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(+275:47:47.207,+54:48:24.098,26.64",13.32",47.5211) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(+275:47:07.543,+54:48:28.854,+275:46:46.788,+54:48:42.007,+275:46:23.965,+54:48:30.045,+275:46:44.721,+54:48:16.892) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(+275:46:08.134,+54:48:22.142,+275:45:34.893,+54:48:40.049) # line=1 1 color=cyan text={Line}
-# vector(+275:45:14.480,+54:48:30.935,13.32",47.5211) vector=1 color=red text={Vector}
-# text(+275:44:42.356,+54:48:27.138) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(+275:47:15.497,+54:47:43.297,+275:46:40.184,+54:48:03.932) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(+275:49:23.892,+54:47:50.426,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(+275:48:34.737,+54:47:50.452,4.995",2.4975",9.99",4.995",47.5211) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(+275:47:44.511,+54:47:51.501,13.32",6.66",19.98",9.99",47.5211) # font="helvetica 10 bold roman" text={Box Annulus}
-point(+275:49:25.352,+54:47:19.381) # point=circle text={Circle Point}
-point(+275:48:33.956,+54:47:20.136) # point=box color=red width=3 text={Box Point}
-point(+275:47:47.284,+54:47:22.088) # point=diamond text={Diamond Point}
-point(+275:49:15.342,+54:47:03.323) # point=cross color=blue text={Cross Point}
-point(+275:48:31.532,+54:47:04.867) # point=x text={X Point}
-point(+275:47:47.035,+54:47:05.093) # point=arrow color=magenta text={Arrow Point}
-point(+275:48:28.944,+54:46:47.603) # point=boxcircle text={BoxCircle Point}
-# projection(+275:46:15.218,+54:47:41.611,+275:45:23.353,+54:48:05.025,6.66") text={Projection}
-panda(+275:46:50.171,+54:47:23.654,2.52109,272.521,3,0",9.99",2) # text={Panda}
-panda(+275:46:46.527,+54:46:53.417,54.103,92.5211,1,0",4.995",1) # panda=(54.103 92.5211 182.521 272.521)(0" 4.995" 9.99") text={Panda 2}
-panda(+275:46:46.527,+54:46:53.417,54.103,92.5211,1,4.995",9.99",1) # panda=ignore
-panda(+275:46:46.527,+54:46:53.417,92.5211,182.521,1,0",4.995",1) # panda=ignore
-panda(+275:46:46.527,+54:46:53.417,92.5211,182.521,1,4.995",9.99",1) # panda=ignore
-panda(+275:46:46.527,+54:46:53.417,182.521,272.521,1,0",4.995",1) # panda=ignore
-panda(+275:46:46.527,+54:46:53.417,182.521,272.521,1,4.995",9.99",1) # panda=ignore
-# compass(+275:45:05.397,+54:47:50.510,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(+275:46:02.647,+54:47:22.285,2.52109,272.521,3,4.995",2.4975",9.99",4.995",1,47.5211) # text={Epanda}
-epanda(+275:45:58.491,+54:46:52.728,47.5211,92.5211,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=(47.5211 92.5211 182.521 272.521)(4.995" 2.4975" 9.99" 4.995")(47.5211) text={Epanda 2}
-epanda(+275:45:58.491,+54:46:52.728,92.5211,182.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
-epanda(+275:45:58.491,+54:46:52.728,182.521,272.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
-bpanda(+275:45:12.456,+54:47:23.649,2.52109,272.521,3,13.32",6.66",19.98",9.99",1,47.5211) # text={Bpanda}
-bpanda(+275:45:12.375,+54:46:54.315,47.5211,92.5211,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=(47.5211 92.5211 182.521 272.521)(13.32" 6.66" 19.98" 9.99")(47.5211) text={Bpanda 2}
-bpanda(+275:45:12.375,+54:46:54.315,92.5211,182.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
-bpanda(+275:45:12.375,+54:46:54.315,182.521,272.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
-# circle3d(+275:44:21.373,+54:47:14.031,3.33") text={Circle3d}
+circle(+275:41:56.645,+54:45:59.579,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(+275:41:08.911,+54:45:55.184,13.32",6.66",47.5211) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(+275:40:16.965,+54:45:55.895,26.64",13.32",47.5211) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(+275:39:37.328,+54:46:00.610,+275:39:16.553,+54:46:13.742,+275:38:53.790,+54:46:01.756,+275:39:14.565,+54:45:48.625) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(+275:38:37.999,+54:45:53.837,+275:38:04.737,+54:46:11.709) # line=1 1 color=cyan text={Line}
+# vector(+275:37:44.373,+54:46:02.575,13.32",47.5211) vector=1 color=red text={Vector}
+# text(+275:37:12.294,+54:45:58.745) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(+275:39:45.414,+54:45:15.061,+275:39:10.074,+54:45:35.660) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(+275:41:53.657,+54:45:22.323,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(+275:41:04.552,+54:45:22.298,4.995",2.4975",9.99",4.995",47.5211) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(+275:40:14.373,+54:45:23.296,13.32",6.66",19.98",9.99",47.5211) # font="helvetica 10 bold roman" text={Box Annulus}
+point(+275:41:55.211,+54:44:51.279) # point=circle text={Circle Point}
+point(+275:41:03.864,+54:44:51.981) # point=box color=red width=3 text={Box Point}
+point(+275:40:17.234,+54:44:53.885) # point=diamond text={Diamond Point}
+point(+275:41:45.260,+54:44:35.210) # point=cross color=blue text={Cross Point}
+point(+275:41:01.490,+54:44:36.710) # point=x text={X Point}
+point(+275:40:17.038,+54:44:36.889) # point=arrow color=magenta text={Arrow Point}
+point(+275:40:58.958,+54:44:19.443) # point=boxcircle text={BoxCircle Point}
+# projection(+275:38:45.202,+54:45:13.313,+275:37:53.317,+54:45:36.674,6.66") text={Projection}
+panda(+275:39:20.175,+54:44:55.392,2.52109,272.521,3,0",9.99",2) # text={Panda}
+panda(+275:39:16.628,+54:44:25.151,54.103,92.5211,1,0",4.995",1) # panda=(54.103 92.5211 182.521 272.521)(0" 4.995" 9.99") text={Panda 2}
+panda(+275:39:16.628,+54:44:25.151,54.103,92.5211,1,4.995",9.99",1) # panda=ignore
+panda(+275:39:16.628,+54:44:25.151,92.5211,182.521,1,0",4.995",1) # panda=ignore
+panda(+275:39:16.628,+54:44:25.151,92.5211,182.521,1,4.995",9.99",1) # panda=ignore
+panda(+275:39:16.628,+54:44:25.151,182.521,272.521,1,0",4.995",1) # panda=ignore
+panda(+275:39:16.628,+54:44:25.151,182.521,272.521,1,4.995",9.99",1) # panda=ignore
+# compass(+275:37:35.424,+54:45:22.141,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(+275:38:32.703,+54:44:53.974,2.52109,272.521,3,4.995",2.4975",9.99",4.995",1,47.5211) # text={Epanda}
+epanda(+275:38:28.642,+54:44:24.413,47.5211,92.5211,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=(47.5211 92.5211 182.521 272.521)(4.995" 2.4975" 9.99" 4.995")(47.5211) text={Epanda 2}
+epanda(+275:38:28.642,+54:44:24.413,92.5211,182.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
+epanda(+275:38:28.642,+54:44:24.413,182.521,272.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
+bpanda(+275:37:42.560,+54:44:55.287,2.52109,272.521,3,13.32",6.66",19.98",9.99",1,47.5211) # text={Bpanda}
+bpanda(+275:37:42.569,+54:44:25.953,47.5211,92.5211,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=(47.5211 92.5211 182.521 272.521)(13.32" 6.66" 19.98" 9.99")(47.5211) text={Bpanda 2}
+bpanda(+275:37:42.569,+54:44:25.953,92.5211,182.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
+bpanda(+275:37:42.569,+54:44:25.953,182.521,272.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
+circle(+275:49:30.767,+54:48:31.242,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(+275:48:42.970,+54:48:26.897,13.32",6.66",47.5211) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(+275:47:50.972,+54:48:27.662,26.64",13.32",47.5211) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(+275:47:11.308,+54:48:32.418,+275:46:50.552,+54:48:45.571,+275:46:27.728,+54:48:33.609,+275:46:48.485,+54:48:20.456) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(+275:46:11.897,+54:48:25.707,+275:45:38.656,+54:48:43.613) # line=1 1 color=cyan text={Line}
+# vector(+275:45:18.242,+54:48:34.500,13.32",47.5211) vector=1 color=red text={Vector}
+# text(+275:44:46.117,+54:48:30.703) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(+275:47:19.261,+54:47:46.861,+275:46:43.948,+54:48:07.496) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(+275:49:27.659,+54:47:53.989,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(+275:48:38.503,+54:47:54.015,4.995",2.4975",9.99",4.995",47.5211) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(+275:47:48.276,+54:47:55.065,13.32",6.66",19.98",9.99",47.5211) # font="helvetica 10 bold roman" text={Box Annulus}
+point(+275:49:29.118,+54:47:22.944) # point=circle text={Circle Point}
+point(+275:48:37.721,+54:47:23.699) # point=box color=red width=3 text={Box Point}
+point(+275:47:51.047,+54:47:25.652) # point=diamond text={Diamond Point}
+point(+275:49:19.107,+54:47:06.886) # point=cross color=blue text={Cross Point}
+point(+275:48:35.297,+54:47:08.431) # point=x text={X Point}
+point(+275:47:50.798,+54:47:08.656) # point=arrow color=magenta text={Arrow Point}
+point(+275:48:32.708,+54:46:51.166) # point=boxcircle text={BoxCircle Point}
+# projection(+275:46:18.980,+54:47:45.175,+275:45:27.114,+54:48:08.590,6.66") text={Projection}
+panda(+275:46:53.934,+54:47:27.218,2.52109,272.521,3,0",9.99",2) # text={Panda}
+panda(+275:46:50.289,+54:46:56.981,54.103,92.5211,1,0",4.995",1) # panda=(54.103 92.5211 182.521 272.521)(0" 4.995" 9.99") text={Panda 2}
+panda(+275:46:50.289,+54:46:56.981,54.103,92.5211,1,4.995",9.99",1) # panda=ignore
+panda(+275:46:50.289,+54:46:56.981,92.5211,182.521,1,0",4.995",1) # panda=ignore
+panda(+275:46:50.289,+54:46:56.981,92.5211,182.521,1,4.995",9.99",1) # panda=ignore
+panda(+275:46:50.289,+54:46:56.981,182.521,272.521,1,0",4.995",1) # panda=ignore
+panda(+275:46:50.289,+54:46:56.981,182.521,272.521,1,4.995",9.99",1) # panda=ignore
+# compass(+275:45:09.157,+54:47:54.075,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(+275:46:06.408,+54:47:25.849,2.52109,272.521,3,4.995",2.4975",9.99",4.995",1,47.5211) # text={Epanda}
+epanda(+275:46:02.251,+54:46:56.293,47.5211,92.5211,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=(47.5211 92.5211 182.521 272.521)(4.995" 2.4975" 9.99" 4.995")(47.5211) text={Epanda 2}
+epanda(+275:46:02.251,+54:46:56.293,92.5211,182.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
+epanda(+275:46:02.251,+54:46:56.293,182.521,272.521,1,4.995",2.4975",9.99",4.995",1,47.5211) # epanda=ignore
+bpanda(+275:45:16.217,+54:47:27.214,2.52109,272.521,3,13.32",6.66",19.98",9.99",1,47.5211) # text={Bpanda}
+bpanda(+275:45:16.134,+54:46:57.880,47.5211,92.5211,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=(47.5211 92.5211 182.521 272.521)(13.32" 6.66" 19.98" 9.99")(47.5211) text={Bpanda 2}
+bpanda(+275:45:16.134,+54:46:57.880,92.5211,182.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
+bpanda(+275:45:16.134,+54:46:57.880,182.521,272.521,1,13.32",6.66",19.98",9.99",1,47.5211) # bpanda=ignore
diff --git a/tests/ds9.mosaic.ecliptic.reg b/tests/ds9.mosaic.ecliptic.reg
index 7c6223c..07d66c4 100644
--- a/tests/ds9.mosaic.ecliptic.reg
+++ b/tests/ds9.mosaic.ecliptic.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 ecliptic
-circle(275.69549,54.765997,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(275.68223,54.764776,13.32",6.66",47.521086) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(275.6678,54.764973,26.64",13.32",47.521086) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(275.65679,54.766282,275.65102,54.76993,275.6447,54.7666,275.65047,54.762953) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(275.64031,54.7644,275.63107,54.769365) # line=1 1 color=cyan text={Line}
-# vector(275.62542,54.766827,13.32",47.521086) vector=1 color=red text={Vector}
-# text(275.61651,54.765763) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(275.65904,54.75363,275.64922,54.759351) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(275.69466,54.755648,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(275.68102,54.755641,4.995",2.4975",9.99",4.995",47.521086) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(275.66709,54.755917,13.32",6.66",19.98",9.99",47.521086) # font="helvetica 10 bold roman" text={Box Annulus}
-point(275.6951,54.747025) # point=circle text={Circle Point}
-point(275.68083,54.747219) # point=box color=red width=3 text={Box Point}
-point(275.66788,54.747748) # point=diamond text={Diamond Point}
-point(275.69233,54.742561) # point=cross color=blue text={Cross Point}
-point(275.68017,54.742977) # point=x text={X Point}
-point(275.66783,54.743027) # point=arrow color=magenta text={Arrow Point}
-point(275.67947,54.738181) # point=boxcircle text={BoxCircle Point}
-# projection(275.64232,54.753144,275.6279,54.759632,6.66") text={Projection}
-panda(275.65203,54.748166,2.5210862,272.52109,3,0",9.99",2) # text={Panda}
-panda(275.65105,54.739766,54.102986,92.521086,1,0",4.995",1) # panda=(54.102986 92.521086 182.52109 272.52109)(0" 4.995" 9.99") text={Panda 2}
-panda(275.65105,54.739766,54.102986,92.521086,1,4.995",9.99",1) # panda=ignore
-panda(275.65105,54.739766,92.521086,182.52109,1,0",4.995",1) # panda=ignore
-panda(275.65105,54.739766,92.521086,182.52109,1,4.995",9.99",1) # panda=ignore
-panda(275.65105,54.739766,182.52109,272.52109,1,0",4.995",1) # panda=ignore
-panda(275.65105,54.739766,182.52109,272.52109,1,4.995",9.99",1) # panda=ignore
-# compass(275.62293,54.755595,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(275.63884,54.747772,2.5210862,272.52109,3,4.995",2.4975",9.99",4.995",1,47.521086) # text={Epanda}
-epanda(275.63772,54.73956,47.521086,92.521086,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=(47.521086 92.521086 182.52109 272.52109)(4.995" 2.4975" 9.99" 4.995")(47.521086) text={Epanda 2}
-epanda(275.63772,54.73956,92.521086,182.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
-epanda(275.63772,54.73956,182.52109,272.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
-bpanda(275.62492,54.748136,2.5210862,272.52109,3,13.32",6.66",19.98",9.99",1,47.521086) # text={Bpanda}
-bpanda(275.62492,54.739988,47.521086,92.521086,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=(47.521086 92.521086 182.52109 272.52109)(13.32" 6.66" 19.98" 9.99")(47.521086) text={Bpanda 2}
-bpanda(275.62492,54.739988,92.521086,182.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
-bpanda(275.62492,54.739988,182.52109,272.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
-# circle3d(275.61075,54.745449,3.33") text={Circle3d}
-circle(275.82417,54.807689,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(275.81089,54.806482,13.32",6.66",47.521086) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(275.79645,54.806694,26.64",13.32",47.521086) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(275.78543,54.808015,275.77966,54.811669,275.77332,54.808346,275.77909,54.804692) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(275.76893,54.806151,275.75969,54.811125) # line=1 1 color=cyan text={Line}
-# vector(275.75402,54.808593,13.32",47.521086) vector=1 color=red text={Vector}
-# text(275.7451,54.807538) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(275.78764,54.79536,275.77783,54.801092) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(275.8233,54.797341,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(275.80965,54.797348,4.995",2.4975",9.99",4.995",47.521086) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(275.7957,54.797639,13.32",6.66",19.98",9.99",47.521086) # font="helvetica 10 bold roman" text={Box Annulus}
-point(275.82371,54.788717) # point=circle text={Circle Point}
-point(275.80943,54.788927) # point=box color=red width=3 text={Box Point}
-point(275.79647,54.789469) # point=diamond text={Diamond Point}
-point(275.82093,54.784256) # point=cross color=blue text={Cross Point}
-point(275.80876,54.784685) # point=x text={X Point}
-point(275.7964,54.784748) # point=arrow color=magenta text={Arrow Point}
-point(275.80804,54.77989) # point=boxcircle text={BoxCircle Point}
-# projection(275.77089,54.794892,275.75649,54.801396,6.66") text={Projection}
-panda(275.7806,54.789904,2.5210862,272.52109,3,0",9.99",2) # text={Panda}
-panda(275.77959,54.781505,54.102986,92.521086,1,0",4.995",1) # panda=(54.102986 92.521086 182.52109 272.52109)(0" 4.995" 9.99") text={Panda 2}
-panda(275.77959,54.781505,54.102986,92.521086,1,4.995",9.99",1) # panda=ignore
-panda(275.77959,54.781505,92.521086,182.52109,1,0",4.995",1) # panda=ignore
-panda(275.77959,54.781505,92.521086,182.52109,1,4.995",9.99",1) # panda=ignore
-panda(275.77959,54.781505,182.52109,272.52109,1,0",4.995",1) # panda=ignore
-panda(275.77959,54.781505,182.52109,272.52109,1,4.995",9.99",1) # panda=ignore
-# compass(275.7515,54.797364,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(275.7674,54.789524,2.5210862,272.52109,3,4.995",2.4975",9.99",4.995",1,47.521086) # text={Epanda}
-epanda(275.76625,54.781313,47.521086,92.521086,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=(47.521086 92.521086 182.52109 272.52109)(4.995" 2.4975" 9.99" 4.995")(47.521086) text={Epanda 2}
-epanda(275.76625,54.781313,92.521086,182.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
-epanda(275.76625,54.781313,182.52109,272.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
-bpanda(275.75346,54.789903,2.5210862,272.52109,3,13.32",6.66",19.98",9.99",1,47.521086) # text={Bpanda}
-bpanda(275.75344,54.781754,47.521086,92.521086,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=(47.521086 92.521086 182.52109 272.52109)(13.32" 6.66" 19.98" 9.99")(47.521086) text={Bpanda 2}
-bpanda(275.75344,54.781754,92.521086,182.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
-bpanda(275.75344,54.781754,182.52109,272.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
-# circle3d(275.73927,54.787231,3.33") text={Circle3d}
+circle(275.69907,54.76655,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(275.68581,54.765329,13.32",6.66",47.521086) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(275.67138,54.765526,26.64",13.32",47.521086) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(275.66037,54.766836,275.6546,54.770484,275.64827,54.767154,275.65405,54.763507) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(275.64389,54.764955,275.63465,54.769919) # line=1 1 color=cyan text={Line}
+# vector(275.62899,54.767382,13.32",47.521086) vector=1 color=red text={Vector}
+# text(275.62008,54.766318) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(275.66262,54.754184,275.6528,54.759906) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(275.69824,54.756201,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(275.6846,54.756194,4.995",2.4975",9.99",4.995",47.521086) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(275.67066,54.756471,13.32",6.66",19.98",9.99",47.521086) # font="helvetica 10 bold roman" text={Box Annulus}
+point(275.69867,54.747578) # point=circle text={Circle Point}
+point(275.68441,54.747772) # point=box color=red width=3 text={Box Point}
+point(275.67145,54.748301) # point=diamond text={Diamond Point}
+point(275.69591,54.743114) # point=cross color=blue text={Cross Point}
+point(275.68375,54.74353) # point=x text={X Point}
+point(275.6714,54.74358) # point=arrow color=magenta text={Arrow Point}
+point(275.68304,54.738734) # point=boxcircle text={BoxCircle Point}
+# projection(275.64589,54.753698,275.63148,54.760187,6.66") text={Projection}
+panda(275.6556,54.74872,2.5210862,272.52109,3,0",9.99",2) # text={Panda}
+panda(275.65462,54.74032,54.102986,92.521086,1,0",4.995",1) # panda=(54.102986 92.521086 182.52109 272.52109)(0" 4.995" 9.99") text={Panda 2}
+panda(275.65462,54.74032,54.102986,92.521086,1,4.995",9.99",1) # panda=ignore
+panda(275.65462,54.74032,92.521086,182.52109,1,0",4.995",1) # panda=ignore
+panda(275.65462,54.74032,92.521086,182.52109,1,4.995",9.99",1) # panda=ignore
+panda(275.65462,54.74032,182.52109,272.52109,1,0",4.995",1) # panda=ignore
+panda(275.65462,54.74032,182.52109,272.52109,1,4.995",9.99",1) # panda=ignore
+# compass(275.62651,54.75615,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(275.64242,54.748326,2.5210862,272.52109,3,4.995",2.4975",9.99",4.995",1,47.521086) # text={Epanda}
+epanda(275.64129,54.740115,47.521086,92.521086,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=(47.521086 92.521086 182.52109 272.52109)(4.995" 2.4975" 9.99" 4.995")(47.521086) text={Epanda 2}
+epanda(275.64129,54.740115,92.521086,182.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
+epanda(275.64129,54.740115,182.52109,272.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
+bpanda(275.62849,54.748691,2.5210862,272.52109,3,13.32",6.66",19.98",9.99",1,47.521086) # text={Bpanda}
+bpanda(275.62849,54.740543,47.521086,92.521086,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=(47.521086 92.521086 182.52109 272.52109)(13.32" 6.66" 19.98" 9.99")(47.521086) text={Bpanda 2}
+bpanda(275.62849,54.740543,92.521086,182.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
+bpanda(275.62849,54.740543,182.52109,272.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
+circle(275.82521,54.808678,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(275.81194,54.807471,13.32",6.66",47.521086) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(275.79749,54.807684,26.64",13.32",47.521086) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(275.78647,54.809005,275.78071,54.812659,275.77437,54.809336,275.78013,54.805682) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(275.76997,54.807141,275.76074,54.812115) # line=1 1 color=cyan text={Line}
+# vector(275.75507,54.809583,13.32",47.521086) vector=1 color=red text={Vector}
+# text(275.74614,54.808529) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(275.78868,54.79635,275.77887,54.802082) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(275.82435,54.79833,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(275.8107,54.798338,4.995",2.4975",9.99",4.995",47.521086) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(275.79674,54.798629,13.32",6.66",19.98",9.99",47.521086) # font="helvetica 10 bold roman" text={Box Annulus}
+point(275.82476,54.789707) # point=circle text={Circle Point}
+point(275.81048,54.789916) # point=box color=red width=3 text={Box Point}
+point(275.79751,54.790459) # point=diamond text={Diamond Point}
+point(275.82197,54.785246) # point=cross color=blue text={Cross Point}
+point(275.8098,54.785675) # point=x text={X Point}
+point(275.79744,54.785738) # point=arrow color=magenta text={Arrow Point}
+point(275.80909,54.780879) # point=boxcircle text={BoxCircle Point}
+# projection(275.77194,54.795882,275.75753,54.802386,6.66") text={Projection}
+panda(275.78165,54.790894,2.5210862,272.52109,3,0",9.99",2) # text={Panda}
+panda(275.78064,54.782495,54.102986,92.521086,1,0",4.995",1) # panda=(54.102986 92.521086 182.52109 272.52109)(0" 4.995" 9.99") text={Panda 2}
+panda(275.78064,54.782495,54.102986,92.521086,1,4.995",9.99",1) # panda=ignore
+panda(275.78064,54.782495,92.521086,182.52109,1,0",4.995",1) # panda=ignore
+panda(275.78064,54.782495,92.521086,182.52109,1,4.995",9.99",1) # panda=ignore
+panda(275.78064,54.782495,182.52109,272.52109,1,0",4.995",1) # panda=ignore
+panda(275.78064,54.782495,182.52109,272.52109,1,4.995",9.99",1) # panda=ignore
+# compass(275.75254,54.798354,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(275.76845,54.790514,2.5210862,272.52109,3,4.995",2.4975",9.99",4.995",1,47.521086) # text={Epanda}
+epanda(275.76729,54.782303,47.521086,92.521086,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=(47.521086 92.521086 182.52109 272.52109)(4.995" 2.4975" 9.99" 4.995")(47.521086) text={Epanda 2}
+epanda(275.76729,54.782303,92.521086,182.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
+epanda(275.76729,54.782303,182.52109,272.52109,1,4.995",2.4975",9.99",4.995",1,47.521086) # epanda=ignore
+bpanda(275.7545,54.790893,2.5210862,272.52109,3,13.32",6.66",19.98",9.99",1,47.521086) # text={Bpanda}
+bpanda(275.75448,54.782745,47.521086,92.521086,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=(47.521086 92.521086 182.52109 272.52109)(13.32" 6.66" 19.98" 9.99")(47.521086) text={Bpanda 2}
+bpanda(275.75448,54.782745,92.521086,182.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
+bpanda(275.75448,54.782745,182.52109,272.52109,1,13.32",6.66",19.98",9.99",1,47.521086) # bpanda=ignore
diff --git a/tests/ds9.mosaic.fk4.hms.reg b/tests/ds9.mosaic.fk4.hms.reg
index 9942b5c..cb33850 100644
--- a/tests/ds9.mosaic.fk4.hms.reg
+++ b/tests/ds9.mosaic.fk4.hms.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk4
-circle(18:13:31.474,+31:23:07.12,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(18:13:29.339,+31:23:01.61,13.32",6.66",45.2623) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(18:13:26.999,+31:23:01.10,26.64",13.32",45.2623) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(18:13:25.199,+31:23:04.89,18:13:24.223,+31:23:17.53,18:13:23.236,+31:23:05.02,18:13:24.212,+31:22:52.39) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(18:13:22.550,+31:22:56.74,18:13:20.997,+31:23:13.83) # line=1 1 color=cyan text={Line}
-# vector(18:13:20.109,+31:23:04.23,13.32",45.2623) vector=1 color=red text={Vector}
-# text(18:13:18.676,+31:22:59.66) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(18:13:25.707,+31:22:19.57,18:13:24.051,+31:22:39.33) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(18:13:31.458,+31:22:29.82,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(18:13:29.247,+31:22:28.65,4.995",2.4975",9.99",4.995",45.2623) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(18:13:26.985,+31:22:28.47,13.32",6.66",19.98",9.99",45.2623) # font="helvetica 10 bold roman" text={Box Annulus}
-point(18:13:31.627,+31:21:58.84) # point=circle text={Circle Point}
-point(18:13:29.312,+31:21:58.34) # point=box color=red width=3 text={Box Point}
-point(18:13:27.207,+31:21:59.15) # point=diamond text={Diamond Point}
-point(18:13:31.229,+31:21:42.55) # point=cross color=blue text={Cross Point}
-point(18:13:29.254,+31:21:43.03) # point=x text={X Point}
-point(18:13:27.252,+31:21:42.17) # point=arrow color=magenta text={Arrow Point}
-point(18:13:29.194,+31:21:25.71) # point=boxcircle text={BoxCircle Point}
-# projection(18:13:23.002,+31:22:16.42,18:13:20.592,+31:22:38.56,6.66") text={Projection}
-panda(18:13:24.633,+31:21:59.33,0.262262,270.262,3,0",9.99",2) # text={Panda}
-panda(18:13:24.568,+31:21:29.03,51.8442,90.2623,1,0",4.995",1) # panda=(51.8442 90.2623 180.262 270.262)(0" 4.995" 9.99") text={Panda 2}
-panda(18:13:24.568,+31:21:29.03,51.8442,90.2623,1,4.995",9.99",1) # panda=ignore
-panda(18:13:24.568,+31:21:29.03,90.2623,180.262,1,0",4.995",1) # panda=ignore
-panda(18:13:24.568,+31:21:29.03,90.2623,180.262,1,4.995",9.99",1) # panda=ignore
-panda(18:13:24.568,+31:21:29.03,180.262,270.262,1,0",4.995",1) # panda=ignore
-panda(18:13:24.568,+31:21:29.03,180.262,270.262,1,4.995",9.99",1) # panda=ignore
-# compass(18:13:19.832,+31:22:23.62,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(18:13:22.500,+31:21:56.81,0.262262,270.262,3,4.995",2.4975",9.99",4.995",1,45.2623) # text={Epanda}
-epanda(18:13:22.410,+31:21:27.17,45.2623,90.2623,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=(45.2623 90.2623 180.262 270.262)(4.995" 2.4975" 9.99" 4.995")(45.2623) text={Epanda 2}
-epanda(18:13:22.410,+31:21:27.17,90.2623,180.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
-epanda(18:13:22.410,+31:21:27.17,180.262,270.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
-bpanda(18:13:20.238,+31:21:56.96,0.262262,270.262,3,13.32",6.66",19.98",9.99",1,45.2623) # text={Bpanda}
-bpanda(18:13:20.330,+31:21:27.65,45.2623,90.2623,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=(45.2623 90.2623 180.262 270.262)(13.32" 6.66" 19.98" 9.99")(45.2623) text={Bpanda 2}
-bpanda(18:13:20.330,+31:21:27.65,90.2623,180.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
-bpanda(18:13:20.330,+31:21:27.65,180.262,270.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
-# circle3d(18:13:17.972,+31:21:46.11,3.33") text={Circle3d}
-circle(18:13:51.837,+31:25:48.08,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(18:13:49.701,+31:25:42.59,13.32",6.66",45.2623) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(18:13:47.360,+31:25:42.11,26.64",13.32",45.2623) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(18:13:45.560,+31:25:45.92,18:13:44.583,+31:25:58.56,18:13:43.595,+31:25:46.07,18:13:44.572,+31:25:33.42) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(18:13:42.909,+31:25:37.80,18:13:41.355,+31:25:54.90) # line=1 1 color=cyan text={Line}
-# vector(18:13:40.466,+31:25:45.31,13.32",45.2623) vector=1 color=red text={Vector}
-# text(18:13:39.033,+31:25:40.75) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(18:13:46.065,+31:25:00.59,18:13:44.409,+31:25:20.36) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(18:13:51.819,+31:25:10.79,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(18:13:49.607,+31:25:09.63,4.995",2.4975",9.99",4.995",45.2623) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(18:13:47.344,+31:25:09.48,13.32",6.66",19.98",9.99",45.2623) # font="helvetica 10 bold roman" text={Box Annulus}
-point(18:13:51.986,+31:24:39.80) # point=circle text={Circle Point}
-point(18:13:49.671,+31:24:39.32) # point=box color=red width=3 text={Box Point}
-point(18:13:47.564,+31:24:40.16) # point=diamond text={Diamond Point}
-point(18:13:51.588,+31:24:23.52) # point=cross color=blue text={Cross Point}
-point(18:13:49.611,+31:24:24.01) # point=x text={X Point}
-point(18:13:47.608,+31:24:23.17) # point=arrow color=magenta text={Arrow Point}
-point(18:13:49.551,+31:24:06.70) # point=boxcircle text={BoxCircle Point}
-# projection(18:13:43.358,+31:24:57.47,18:13:40.949,+31:25:19.63,6.66") text={Projection}
-panda(18:13:44.989,+31:24:40.36,0.262262,270.262,3,0",9.99",2) # text={Panda}
-panda(18:13:44.923,+31:24:10.06,51.8442,90.2623,1,0",4.995",1) # panda=(51.8442 90.2623 180.262 270.262)(0" 4.995" 9.99") text={Panda 2}
-panda(18:13:44.923,+31:24:10.06,51.8442,90.2623,1,4.995",9.99",1) # panda=ignore
-panda(18:13:44.923,+31:24:10.06,90.2623,180.262,1,0",4.995",1) # panda=ignore
-panda(18:13:44.923,+31:24:10.06,90.2623,180.262,1,4.995",9.99",1) # panda=ignore
-panda(18:13:44.923,+31:24:10.06,180.262,270.262,1,0",4.995",1) # panda=ignore
-panda(18:13:44.923,+31:24:10.06,180.262,270.262,1,4.995",9.99",1) # panda=ignore
-# compass(18:13:40.188,+31:25:04.70,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(18:13:42.855,+31:24:37.86,0.262262,270.262,3,4.995",2.4975",9.99",4.995",1,45.2623) # text={Epanda}
-epanda(18:13:42.763,+31:24:08.23,45.2623,90.2623,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=(45.2623 90.2623 180.262 270.262)(4.995" 2.4975" 9.99" 4.995")(45.2623) text={Epanda 2}
-epanda(18:13:42.763,+31:24:08.23,90.2623,180.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
-epanda(18:13:42.763,+31:24:08.23,180.262,270.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
-bpanda(18:13:40.592,+31:24:38.03,0.262262,270.262,3,13.32",6.66",19.98",9.99",1,45.2623) # text={Bpanda}
-bpanda(18:13:40.682,+31:24:08.72,45.2623,90.2623,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=(45.2623 90.2623 180.262 270.262)(13.32" 6.66" 19.98" 9.99")(45.2623) text={Bpanda 2}
-bpanda(18:13:40.682,+31:24:08.72,90.2623,180.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
-bpanda(18:13:40.682,+31:24:08.72,180.262,270.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
-# circle3d(18:13:38.324,+31:24:27.21,3.33") text={Circle3d}
+circle(18:13:32.047,+31:23:09.41,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(18:13:29.912,+31:23:03.90,13.32",6.66",45.2623) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(18:13:27.572,+31:23:03.40,26.64",13.32",45.2623) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(18:13:25.772,+31:23:07.18,18:13:24.796,+31:23:19.82,18:13:23.809,+31:23:07.32,18:13:24.786,+31:22:54.68) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(18:13:23.123,+31:22:59.04,18:13:21.570,+31:23:16.12) # line=1 1 color=cyan text={Line}
+# vector(18:13:20.682,+31:23:06.52,13.32",45.2623) vector=1 color=red text={Vector}
+# text(18:13:19.250,+31:23:01.96) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(18:13:26.280,+31:22:21.86,18:13:24.624,+31:22:41.62) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(18:13:32.031,+31:22:32.11,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(18:13:29.820,+31:22:30.94,4.995",2.4975",9.99",4.995",45.2623) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(18:13:27.558,+31:22:30.76,13.32",6.66",19.98",9.99",45.2623) # font="helvetica 10 bold roman" text={Box Annulus}
+point(18:13:32.200,+31:22:01.13) # point=circle text={Circle Point}
+point(18:13:29.885,+31:22:00.63) # point=box color=red width=3 text={Box Point}
+point(18:13:27.780,+31:22:01.44) # point=diamond text={Diamond Point}
+point(18:13:31.802,+31:21:44.84) # point=cross color=blue text={Cross Point}
+point(18:13:29.827,+31:21:45.32) # point=x text={X Point}
+point(18:13:27.824,+31:21:44.46) # point=arrow color=magenta text={Arrow Point}
+point(18:13:29.767,+31:21:28.00) # point=boxcircle text={BoxCircle Point}
+# projection(18:13:23.575,+31:22:18.71,18:13:21.165,+31:22:40.85,6.66") text={Projection}
+panda(18:13:25.206,+31:22:01.62,0.262262,270.262,3,0",9.99",2) # text={Panda}
+panda(18:13:25.141,+31:21:31.32,51.8442,90.2623,1,0",4.995",1) # panda=(51.8442 90.2623 180.262 270.262)(0" 4.995" 9.99") text={Panda 2}
+panda(18:13:25.141,+31:21:31.32,51.8442,90.2623,1,4.995",9.99",1) # panda=ignore
+panda(18:13:25.141,+31:21:31.32,90.2623,180.262,1,0",4.995",1) # panda=ignore
+panda(18:13:25.141,+31:21:31.32,90.2623,180.262,1,4.995",9.99",1) # panda=ignore
+panda(18:13:25.141,+31:21:31.32,180.262,270.262,1,0",4.995",1) # panda=ignore
+panda(18:13:25.141,+31:21:31.32,180.262,270.262,1,4.995",9.99",1) # panda=ignore
+# compass(18:13:20.405,+31:22:25.92,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(18:13:23.073,+31:21:59.10,0.262262,270.262,3,4.995",2.4975",9.99",4.995",1,45.2623) # text={Epanda}
+epanda(18:13:22.983,+31:21:29.47,45.2623,90.2623,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=(45.2623 90.2623 180.262 270.262)(4.995" 2.4975" 9.99" 4.995")(45.2623) text={Epanda 2}
+epanda(18:13:22.983,+31:21:29.47,90.2623,180.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
+epanda(18:13:22.983,+31:21:29.47,180.262,270.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
+bpanda(18:13:20.811,+31:21:59.25,0.262262,270.262,3,13.32",6.66",19.98",9.99",1,45.2623) # text={Bpanda}
+bpanda(18:13:20.903,+31:21:29.94,45.2623,90.2623,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=(45.2623 90.2623 180.262 270.262)(13.32" 6.66" 19.98" 9.99")(45.2623) text={Bpanda 2}
+bpanda(18:13:20.903,+31:21:29.94,90.2623,180.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
+bpanda(18:13:20.903,+31:21:29.94,180.262,270.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
+circle(18:13:51.995,+31:25:51.73,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(18:13:49.859,+31:25:46.24,13.32",6.66",45.2623) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(18:13:47.517,+31:25:45.76,26.64",13.32",45.2623) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(18:13:45.718,+31:25:49.57,18:13:44.741,+31:26:02.21,18:13:43.753,+31:25:49.72,18:13:44.729,+31:25:37.07) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(18:13:43.066,+31:25:41.45,18:13:41.513,+31:25:58.55) # line=1 1 color=cyan text={Line}
+# vector(18:13:40.624,+31:25:48.96,13.32",45.2623) vector=1 color=red text={Vector}
+# text(18:13:39.191,+31:25:44.40) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(18:13:46.223,+31:25:04.24,18:13:44.567,+31:25:24.01) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(18:13:51.977,+31:25:14.44,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(18:13:49.765,+31:25:13.28,4.995",2.4975",9.99",4.995",45.2623) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(18:13:47.502,+31:25:13.13,13.32",6.66",19.98",9.99",45.2623) # font="helvetica 10 bold roman" text={Box Annulus}
+point(18:13:52.144,+31:24:43.45) # point=circle text={Circle Point}
+point(18:13:49.828,+31:24:42.97) # point=box color=red width=3 text={Box Point}
+point(18:13:47.722,+31:24:43.81) # point=diamond text={Diamond Point}
+point(18:13:51.746,+31:24:27.17) # point=cross color=blue text={Cross Point}
+point(18:13:49.769,+31:24:27.66) # point=x text={X Point}
+point(18:13:47.766,+31:24:26.82) # point=arrow color=magenta text={Arrow Point}
+point(18:13:49.709,+31:24:10.35) # point=boxcircle text={BoxCircle Point}
+# projection(18:13:43.516,+31:25:01.12,18:13:41.107,+31:25:23.28,6.66") text={Projection}
+panda(18:13:45.147,+31:24:44.01,0.262262,270.262,3,0",9.99",2) # text={Panda}
+panda(18:13:45.080,+31:24:13.71,51.8442,90.2623,1,0",4.995",1) # panda=(51.8442 90.2623 180.262 270.262)(0" 4.995" 9.99") text={Panda 2}
+panda(18:13:45.080,+31:24:13.71,51.8442,90.2623,1,4.995",9.99",1) # panda=ignore
+panda(18:13:45.080,+31:24:13.71,90.2623,180.262,1,0",4.995",1) # panda=ignore
+panda(18:13:45.080,+31:24:13.71,90.2623,180.262,1,4.995",9.99",1) # panda=ignore
+panda(18:13:45.080,+31:24:13.71,180.262,270.262,1,0",4.995",1) # panda=ignore
+panda(18:13:45.080,+31:24:13.71,180.262,270.262,1,4.995",9.99",1) # panda=ignore
+# compass(18:13:40.345,+31:25:08.35,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(18:13:43.012,+31:24:41.51,0.262262,270.262,3,4.995",2.4975",9.99",4.995",1,45.2623) # text={Epanda}
+epanda(18:13:42.921,+31:24:11.88,45.2623,90.2623,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=(45.2623 90.2623 180.262 270.262)(4.995" 2.4975" 9.99" 4.995")(45.2623) text={Epanda 2}
+epanda(18:13:42.921,+31:24:11.88,90.2623,180.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
+epanda(18:13:42.921,+31:24:11.88,180.262,270.262,1,4.995",2.4975",9.99",4.995",1,45.2623) # epanda=ignore
+bpanda(18:13:40.749,+31:24:41.68,0.262262,270.262,3,13.32",6.66",19.98",9.99",1,45.2623) # text={Bpanda}
+bpanda(18:13:40.840,+31:24:12.37,45.2623,90.2623,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=(45.2623 90.2623 180.262 270.262)(13.32" 6.66" 19.98" 9.99")(45.2623) text={Bpanda 2}
+bpanda(18:13:40.840,+31:24:12.37,90.2623,180.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
+bpanda(18:13:40.840,+31:24:12.37,180.262,270.262,1,13.32",6.66",19.98",9.99",1,45.2623) # bpanda=ignore
diff --git a/tests/ds9.mosaic.fk4.reg b/tests/ds9.mosaic.fk4.reg
index 77d5bf4..dec9a60 100644
--- a/tests/ds9.mosaic.fk4.reg
+++ b/tests/ds9.mosaic.fk4.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk4
-circle(273.38114,31.385311,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(273.37225,31.38378,13.32",6.66",45.262262) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(273.36249,31.38364,26.64",13.32",45.262262) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(273.355,31.384692,273.35093,31.388202,273.34682,31.384729,273.35089,31.381218) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(273.34396,31.382429,273.33749,31.387175) # line=1 1 color=cyan text={Line}
-# vector(273.33379,31.384509,13.32",45.262262) vector=1 color=red text={Vector}
-# text(273.32782,31.383239) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(273.35711,31.372102,273.35021,31.377591) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(273.38107,31.374951,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(273.37186,31.374624,4.995",2.4975",9.99",4.995",45.262262) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(273.36244,31.374575,13.32",6.66",19.98",9.99",45.262262) # font="helvetica 10 bold roman" text={Box Annulus}
-point(273.38178,31.366345) # point=circle text={Circle Point}
-point(273.37213,31.366205) # point=box color=red width=3 text={Box Point}
-point(273.36336,31.366431) # point=diamond text={Diamond Point}
-point(273.38012,31.36182) # point=cross color=blue text={Cross Point}
-point(273.37189,31.361952) # point=x text={X Point}
-point(273.36355,31.361713) # point=arrow color=magenta text={Arrow Point}
-point(273.37164,31.357143) # point=boxcircle text={BoxCircle Point}
-# projection(273.34584,31.371228,273.3358,31.377377,6.66") text={Projection}
-panda(273.35264,31.36648,0.26226242,270.26226,3,0",9.99",2) # text={Panda}
-panda(273.35237,31.358063,51.844162,90.262262,1,0",4.995",1) # panda=(51.844162 90.262262 180.26226 270.26226)(0" 4.995" 9.99") text={Panda 2}
-panda(273.35237,31.358063,51.844162,90.262262,1,4.995",9.99",1) # panda=ignore
-panda(273.35237,31.358063,90.262262,180.26226,1,0",4.995",1) # panda=ignore
-panda(273.35237,31.358063,90.262262,180.26226,1,4.995",9.99",1) # panda=ignore
-panda(273.35237,31.358063,180.26226,270.26226,1,0",4.995",1) # panda=ignore
-panda(273.35237,31.358063,180.26226,270.26226,1,4.995",9.99",1) # panda=ignore
-# compass(273.33263,31.373228,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(273.34375,31.36578,0.26226242,270.26226,3,4.995",2.4975",9.99",4.995",1,45.262262) # text={Epanda}
-epanda(273.34337,31.357549,45.262262,90.262262,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=(45.262262 90.262262 180.26226 270.26226)(4.995" 2.4975" 9.99" 4.995")(45.262262) text={Epanda 2}
-epanda(273.34337,31.357549,90.262262,180.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
-epanda(273.34337,31.357549,180.26226,270.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
-bpanda(273.33432,31.365821,0.26226242,270.26226,3,13.32",6.66",19.98",9.99",1,45.262262) # text={Bpanda}
-bpanda(273.33471,31.357679,45.262262,90.262262,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=(45.262262 90.262262 180.26226 270.26226)(13.32" 6.66" 19.98" 9.99")(45.262262) text={Bpanda 2}
-bpanda(273.33471,31.357679,90.262262,180.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
-bpanda(273.33471,31.357679,180.26226,270.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
-# circle3d(273.32488,31.362809,3.33") text={Circle3d}
-circle(273.46599,31.430023,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(273.45709,31.428498,13.32",6.66",45.262262) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(273.44733,31.428365,26.64",13.32",45.262262) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(273.43983,31.429421,273.43576,31.432934,273.43165,31.429463,273.43572,31.42595) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(273.42879,31.427165,273.42231,31.431916) # line=1 1 color=cyan text={Line}
-# vector(273.41861,31.429252,13.32",45.262262) vector=1 color=red text={Vector}
-# text(273.41264,31.427987) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(273.44194,31.41683,273.43504,31.422323) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(273.46591,31.419663,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(273.4567,31.419343,4.995",2.4975",9.99",4.995",45.262262) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(273.44727,31.4193,13.32",6.66",19.98",9.99",45.262262) # font="helvetica 10 bold roman" text={Box Annulus}
-point(273.46661,31.411057) # point=circle text={Circle Point}
-point(273.45696,31.410923) # point=box color=red width=3 text={Box Point}
-point(273.44818,31.411155) # point=diamond text={Diamond Point}
-point(273.46495,31.406533) # point=cross color=blue text={Cross Point}
-point(273.45671,31.40667) # point=x text={X Point}
-point(273.44837,31.406436) # point=arrow color=magenta text={Arrow Point}
-point(273.45646,31.401861) # point=boxcircle text={BoxCircle Point}
-# projection(273.43066,31.415963,273.42062,31.422119,6.66") text={Projection}
-panda(273.43745,31.411211,0.26226242,270.26226,3,0",9.99",2) # text={Panda}
-panda(273.43718,31.402794,51.844162,90.262262,1,0",4.995",1) # panda=(51.844162 90.262262 180.26226 270.26226)(0" 4.995" 9.99") text={Panda 2}
-panda(273.43718,31.402794,51.844162,90.262262,1,4.995",9.99",1) # panda=ignore
-panda(273.43718,31.402794,90.262262,180.26226,1,0",4.995",1) # panda=ignore
-panda(273.43718,31.402794,90.262262,180.26226,1,4.995",9.99",1) # panda=ignore
-panda(273.43718,31.402794,180.26226,270.26226,1,0",4.995",1) # panda=ignore
-panda(273.43718,31.402794,180.26226,270.26226,1,4.995",9.99",1) # panda=ignore
-# compass(273.41745,31.417972,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(273.42856,31.410516,0.26226242,270.26226,3,4.995",2.4975",9.99",4.995",1,45.262262) # text={Epanda}
-epanda(273.42818,31.402285,45.262262,90.262262,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=(45.262262 90.262262 180.26226 270.26226)(4.995" 2.4975" 9.99" 4.995")(45.262262) text={Epanda 2}
-epanda(273.42818,31.402285,90.262262,180.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
-epanda(273.42818,31.402285,180.26226,270.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
-bpanda(273.41913,31.410564,0.26226242,270.26226,3,13.32",6.66",19.98",9.99",1,45.262262) # text={Bpanda}
-bpanda(273.41951,31.402422,45.262262,90.262262,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=(45.262262 90.262262 180.26226 270.26226)(13.32" 6.66" 19.98" 9.99")(45.262262) text={Bpanda 2}
-bpanda(273.41951,31.402422,90.262262,180.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
-bpanda(273.41951,31.402422,180.26226,270.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
-# circle3d(273.40968,31.407558,3.33") text={Circle3d}
+circle(273.38353,31.385947,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(273.37463,31.384417,13.32",6.66",45.262262) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(273.36488,31.384277,26.64",13.32",45.262262) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(273.35739,31.385329,273.35332,31.388839,273.3492,31.385365,273.35327,31.381855) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(273.34635,31.383066,273.33987,31.387812) # line=1 1 color=cyan text={Line}
+# vector(273.33617,31.385146,13.32",45.262262) vector=1 color=red text={Vector}
+# text(273.33021,31.383877) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(273.3595,31.372739,273.3526,31.378228) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(273.38346,31.375587,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(273.37425,31.375261,4.995",2.4975",9.99",4.995",45.262262) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(273.36482,31.375212,13.32",6.66",19.98",9.99",45.262262) # font="helvetica 10 bold roman" text={Box Annulus}
+point(273.38416,31.366981) # point=circle text={Circle Point}
+point(273.37452,31.366842) # point=box color=red width=3 text={Box Point}
+point(273.36575,31.367068) # point=diamond text={Diamond Point}
+point(273.38251,31.362457) # point=cross color=blue text={Cross Point}
+point(273.37428,31.362588) # point=x text={X Point}
+point(273.36594,31.362349) # point=arrow color=magenta text={Arrow Point}
+point(273.37403,31.357779) # point=boxcircle text={BoxCircle Point}
+# projection(273.34823,31.371865,273.33819,31.378014,6.66") text={Projection}
+panda(273.35502,31.367117,0.26226242,270.26226,3,0",9.99",2) # text={Panda}
+panda(273.35475,31.3587,51.844162,90.262262,1,0",4.995",1) # panda=(51.844162 90.262262 180.26226 270.26226)(0" 4.995" 9.99") text={Panda 2}
+panda(273.35475,31.3587,51.844162,90.262262,1,4.995",9.99",1) # panda=ignore
+panda(273.35475,31.3587,90.262262,180.26226,1,0",4.995",1) # panda=ignore
+panda(273.35475,31.3587,90.262262,180.26226,1,4.995",9.99",1) # panda=ignore
+panda(273.35475,31.3587,180.26226,270.26226,1,0",4.995",1) # panda=ignore
+panda(273.35475,31.3587,180.26226,270.26226,1,4.995",9.99",1) # panda=ignore
+# compass(273.33502,31.373866,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(273.34614,31.366416,0.26226242,270.26226,3,4.995",2.4975",9.99",4.995",1,45.262262) # text={Epanda}
+epanda(273.34576,31.358185,45.262262,90.262262,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=(45.262262 90.262262 180.26226 270.26226)(4.995" 2.4975" 9.99" 4.995")(45.262262) text={Epanda 2}
+epanda(273.34576,31.358185,90.262262,180.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
+epanda(273.34576,31.358185,180.26226,270.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
+bpanda(273.33671,31.366458,0.26226242,270.26226,3,13.32",6.66",19.98",9.99",1,45.262262) # text={Bpanda}
+bpanda(273.3371,31.358316,45.262262,90.262262,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=(45.262262 90.262262 180.26226 270.26226)(13.32" 6.66" 19.98" 9.99")(45.262262) text={Bpanda 2}
+bpanda(273.3371,31.358316,90.262262,180.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
+bpanda(273.3371,31.358316,180.26226,270.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
+circle(273.46665,31.431037,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(273.45775,31.429512,13.32",6.66",45.262262) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(273.44799,31.429379,26.64",13.32",45.262262) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(273.44049,31.430435,273.43642,31.433948,273.4323,31.430477,273.43637,31.426964) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(273.42944,31.428179,273.42297,31.43293) # line=1 1 color=cyan text={Line}
+# vector(273.41927,31.430266,13.32",45.262262) vector=1 color=red text={Vector}
+# text(273.4133,31.429001) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(273.44259,31.417844,273.4357,31.423337) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(273.46657,31.420677,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(273.45735,31.420357,4.995",2.4975",9.99",4.995",45.262262) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(273.44792,31.420314,13.32",6.66",19.98",9.99",45.262262) # font="helvetica 10 bold roman" text={Box Annulus}
+point(273.46727,31.412071) # point=circle text={Circle Point}
+point(273.45762,31.411937) # point=box color=red width=3 text={Box Point}
+point(273.44884,31.412169) # point=diamond text={Diamond Point}
+point(273.46561,31.407547) # point=cross color=blue text={Cross Point}
+point(273.45737,31.407684) # point=x text={X Point}
+point(273.44902,31.40745) # point=arrow color=magenta text={Arrow Point}
+point(273.45712,31.402875) # point=boxcircle text={BoxCircle Point}
+# projection(273.43132,31.416977,273.42128,31.423133,6.66") text={Projection}
+panda(273.43811,31.412225,0.26226242,270.26226,3,0",9.99",2) # text={Panda}
+panda(273.43783,31.403809,51.844162,90.262262,1,0",4.995",1) # panda=(51.844162 90.262262 180.26226 270.26226)(0" 4.995" 9.99") text={Panda 2}
+panda(273.43783,31.403809,51.844162,90.262262,1,4.995",9.99",1) # panda=ignore
+panda(273.43783,31.403809,90.262262,180.26226,1,0",4.995",1) # panda=ignore
+panda(273.43783,31.403809,90.262262,180.26226,1,4.995",9.99",1) # panda=ignore
+panda(273.43783,31.403809,180.26226,270.26226,1,0",4.995",1) # panda=ignore
+panda(273.43783,31.403809,180.26226,270.26226,1,4.995",9.99",1) # panda=ignore
+# compass(273.41811,31.418987,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(273.42922,31.41153,0.26226242,270.26226,3,4.995",2.4975",9.99",4.995",1,45.262262) # text={Epanda}
+epanda(273.42884,31.4033,45.262262,90.262262,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=(45.262262 90.262262 180.26226 270.26226)(4.995" 2.4975" 9.99" 4.995")(45.262262) text={Epanda 2}
+epanda(273.42884,31.4033,90.262262,180.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
+epanda(273.42884,31.4033,180.26226,270.26226,1,4.995",2.4975",9.99",4.995",1,45.262262) # epanda=ignore
+bpanda(273.41979,31.411578,0.26226242,270.26226,3,13.32",6.66",19.98",9.99",1,45.262262) # text={Bpanda}
+bpanda(273.42017,31.403436,45.262262,90.262262,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=(45.262262 90.262262 180.26226 270.26226)(13.32" 6.66" 19.98" 9.99")(45.262262) text={Bpanda 2}
+bpanda(273.42017,31.403436,90.262262,180.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
+bpanda(273.42017,31.403436,180.26226,270.26226,1,13.32",6.66",19.98",9.99",1,45.262262) # bpanda=ignore
diff --git a/tests/ds9.mosaic.fk5.hms.reg b/tests/ds9.mosaic.fk5.hms.reg
index 4731c1c..b8ae7b6 100644
--- a/tests/ds9.mosaic.fk5.hms.reg
+++ b/tests/ds9.mosaic.fk5.hms.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk5
-circle(18:15:24.583,+31:24:10.38,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(18:15:22.450,+31:24:04.71,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(18:15:20.109,+31:24:04.04,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(18:15:18.308,+31:24:07.69,18:15:17.326,+31:24:20.26,18:15:16.344,+31:24:07.68,18:15:17.326,+31:23:55.12) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(18:15:15.662,+31:23:59.35,18:15:14.100,+31:24:16.33) # line=1 1 color=cyan text={Line}
-# vector(18:15:13.216,+31:24:06.66,13.32",44.9398) vector=1 color=red text={Vector}
-# text(18:15:11.786,+31:24:01.99) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(18:15:18.836,+31:23:22.41,18:15:17.171,+31:23:42.05) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(18:15:24.583,+31:23:33.08,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(18:15:22.372,+31:23:31.75,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(18:15:20.110,+31:23:31.40,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
-point(18:15:24.765,+31:23:02.11) # point=circle text={Circle Point}
-point(18:15:22.451,+31:23:01.44) # point=box color=red width=3 text={Box Point}
-point(18:15:20.345,+31:23:02.10) # point=diamond text={Diamond Point}
-point(18:15:24.375,+31:22:45.80) # point=cross color=blue text={Cross Point}
-point(18:15:22.399,+31:22:46.12) # point=x text={X Point}
-point(18:15:20.397,+31:22:45.12) # point=arrow color=magenta text={Arrow Point}
-point(18:15:22.348,+31:22:28.81) # point=boxcircle text={BoxCircle Point}
-# projection(18:15:16.131,+31:23:19.06,18:15:13.712,+31:23:41.03,6.66") text={Projection}
-panda(18:15:17.770,+31:23:02.09,359.94,629.94,3,0",9.99",2) # text={Panda}
-panda(18:15:17.719,+31:22:31.79,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
-panda(18:15:17.719,+31:22:31.79,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
-panda(18:15:17.719,+31:22:31.79,89.9398,179.94,1,0",4.995",1) # panda=ignore
-panda(18:15:17.719,+31:22:31.79,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
-panda(18:15:17.719,+31:22:31.79,179.94,269.94,1,0",4.995",1) # panda=ignore
-panda(18:15:17.719,+31:22:31.79,179.94,269.94,1,4.995",9.99",1) # panda=ignore
-# compass(18:15:12.958,+31:23:26.04,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(18:15:15.638,+31:22:59.41,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
-epanda(18:15:15.561,+31:22:29.78,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
-epanda(18:15:15.561,+31:22:29.78,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-epanda(18:15:15.561,+31:22:29.78,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-bpanda(18:15:13.376,+31:22:59.40,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
-bpanda(18:15:13.481,+31:22:30.10,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
-bpanda(18:15:13.481,+31:22:30.10,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-bpanda(18:15:13.481,+31:22:30.10,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-# circle3d(18:15:11.114,+31:22:48.39,3.33") text={Circle3d}
-circle(18:15:44.878,+31:26:52.82,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(18:15:42.744,+31:26:47.18,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(18:15:40.402,+31:26:46.52,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(18:15:38.600,+31:26:50.20,18:15:37.618,+31:27:02.77,18:15:36.635,+31:26:50.21,18:15:37.618,+31:26:37.63) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(18:15:35.952,+31:26:41.88,18:15:34.391,+31:26:58.87) # line=1 1 color=cyan text={Line}
-# vector(18:15:33.506,+31:26:49.22,13.32",44.9398) vector=1 color=red text={Vector}
-# text(18:15:32.075,+31:26:44.56) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(18:15:39.126,+31:26:04.91,18:15:37.461,+31:26:24.56) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(18:15:44.876,+31:26:15.52,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(18:15:42.665,+31:26:14.21,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(18:15:40.401,+31:26:13.89,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
-point(18:15:45.057,+31:25:44.55) # point=circle text={Circle Point}
-point(18:15:42.741,+31:25:43.91) # point=box color=red width=3 text={Box Point}
-point(18:15:40.634,+31:25:44.58) # point=diamond text={Diamond Point}
-point(18:15:44.666,+31:25:28.24) # point=cross color=blue text={Cross Point}
-point(18:15:42.689,+31:25:28.59) # point=x text={X Point}
-point(18:15:40.685,+31:25:27.60) # point=arrow color=magenta text={Arrow Point}
-point(18:15:42.636,+31:25:11.27) # point=boxcircle text={BoxCircle Point}
-# projection(18:15:36.420,+31:26:01.59,18:15:34.000,+31:26:23.57,6.66") text={Projection}
-panda(18:15:38.058,+31:25:44.60,359.94,629.94,3,0",9.99",2) # text={Panda}
-panda(18:15:38.005,+31:25:14.30,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
-panda(18:15:38.005,+31:25:14.30,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
-panda(18:15:38.005,+31:25:14.30,89.9398,179.94,1,0",4.995",1) # panda=ignore
-panda(18:15:38.005,+31:25:14.30,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
-panda(18:15:38.005,+31:25:14.30,179.94,269.94,1,0",4.995",1) # panda=ignore
-panda(18:15:38.005,+31:25:14.30,179.94,269.94,1,4.995",9.99",1) # panda=ignore
-# compass(18:15:33.246,+31:26:08.59,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(18:15:35.925,+31:25:41.94,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
-epanda(18:15:35.846,+31:25:12.31,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
-epanda(18:15:35.846,+31:25:12.31,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-epanda(18:15:35.846,+31:25:12.31,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-bpanda(18:15:33.661,+31:25:41.95,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
-bpanda(18:15:33.765,+31:25:12.65,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
-bpanda(18:15:33.765,+31:25:12.65,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-bpanda(18:15:33.765,+31:25:12.65,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-# circle3d(18:15:31.398,+31:25:30.97,3.33") text={Circle3d}
+circle(18:15:25.155,+31:24:12.71,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(18:15:23.022,+31:24:07.05,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(18:15:20.681,+31:24:06.37,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(18:15:18.880,+31:24:10.03,18:15:17.898,+31:24:22.59,18:15:16.916,+31:24:10.02,18:15:17.898,+31:23:57.45) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(18:15:16.234,+31:24:01.69,18:15:14.673,+31:24:18.66) # line=1 1 color=cyan text={Line}
+# vector(18:15:13.789,+31:24:09.00,13.32",44.9398) vector=1 color=red text={Vector}
+# text(18:15:12.358,+31:24:04.33) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(18:15:19.408,+31:23:24.74,18:15:17.743,+31:23:44.38) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(18:15:25.155,+31:23:35.41,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(18:15:22.945,+31:23:34.08,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(18:15:20.682,+31:23:33.74,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
+point(18:15:25.337,+31:23:04.45) # point=circle text={Circle Point}
+point(18:15:23.023,+31:23:03.78) # point=box color=red width=3 text={Box Point}
+point(18:15:20.917,+31:23:04.43) # point=diamond text={Diamond Point}
+point(18:15:24.948,+31:22:48.13) # point=cross color=blue text={Cross Point}
+point(18:15:22.971,+31:22:48.46) # point=x text={X Point}
+point(18:15:20.969,+31:22:47.45) # point=arrow color=magenta text={Arrow Point}
+point(18:15:22.920,+31:22:31.14) # point=boxcircle text={BoxCircle Point}
+# projection(18:15:16.703,+31:23:21.40,18:15:14.284,+31:23:43.36,6.66") text={Projection}
+panda(18:15:18.342,+31:23:04.42,359.94,629.94,3,0",9.99",2) # text={Panda}
+panda(18:15:18.291,+31:22:34.12,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
+panda(18:15:18.291,+31:22:34.12,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
+panda(18:15:18.291,+31:22:34.12,89.9398,179.94,1,0",4.995",1) # panda=ignore
+panda(18:15:18.291,+31:22:34.12,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
+panda(18:15:18.291,+31:22:34.12,179.94,269.94,1,0",4.995",1) # panda=ignore
+panda(18:15:18.291,+31:22:34.12,179.94,269.94,1,4.995",9.99",1) # panda=ignore
+# compass(18:15:13.530,+31:23:28.37,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(18:15:16.210,+31:23:01.75,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
+epanda(18:15:16.133,+31:22:32.11,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
+epanda(18:15:16.133,+31:22:32.11,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+epanda(18:15:16.133,+31:22:32.11,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+bpanda(18:15:13.947,+31:23:01.73,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
+bpanda(18:15:14.053,+31:22:32.43,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
+bpanda(18:15:14.053,+31:22:32.43,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
+bpanda(18:15:14.053,+31:22:32.43,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
+circle(18:15:45.034,+31:26:56.48,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(18:15:42.900,+31:26:50.84,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(18:15:40.558,+31:26:50.19,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(18:15:38.756,+31:26:53.86,18:15:37.774,+31:27:06.44,18:15:36.792,+31:26:53.87,18:15:37.774,+31:26:41.29) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(18:15:36.108,+31:26:45.55,18:15:34.547,+31:27:02.53) # line=1 1 color=cyan text={Line}
+# vector(18:15:33.663,+31:26:52.88,13.32",44.9398) vector=1 color=red text={Vector}
+# text(18:15:32.231,+31:26:48.22) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(18:15:39.282,+31:26:08.57,18:15:37.617,+31:26:28.22) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(18:15:45.033,+31:26:19.19,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(18:15:42.821,+31:26:17.87,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(18:15:40.557,+31:26:17.55,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
+point(18:15:45.213,+31:25:48.22) # point=circle text={Circle Point}
+point(18:15:42.898,+31:25:47.57) # point=box color=red width=3 text={Box Point}
+point(18:15:40.790,+31:25:48.25) # point=diamond text={Diamond Point}
+point(18:15:44.822,+31:25:31.90) # point=cross color=blue text={Cross Point}
+point(18:15:42.845,+31:25:32.25) # point=x text={X Point}
+point(18:15:40.842,+31:25:31.26) # point=arrow color=magenta text={Arrow Point}
+point(18:15:42.792,+31:25:14.93) # point=boxcircle text={BoxCircle Point}
+# projection(18:15:36.576,+31:26:05.25,18:15:34.157,+31:26:27.24,6.66") text={Projection}
+panda(18:15:38.215,+31:25:48.26,359.94,629.94,3,0",9.99",2) # text={Panda}
+panda(18:15:38.162,+31:25:17.96,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
+panda(18:15:38.162,+31:25:17.96,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
+panda(18:15:38.162,+31:25:17.96,89.9398,179.94,1,0",4.995",1) # panda=ignore
+panda(18:15:38.162,+31:25:17.96,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
+panda(18:15:38.162,+31:25:17.96,179.94,269.94,1,0",4.995",1) # panda=ignore
+panda(18:15:38.162,+31:25:17.96,179.94,269.94,1,4.995",9.99",1) # panda=ignore
+# compass(18:15:33.402,+31:26:12.25,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(18:15:36.081,+31:25:45.61,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
+epanda(18:15:36.002,+31:25:15.97,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
+epanda(18:15:36.002,+31:25:15.97,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+epanda(18:15:36.002,+31:25:15.97,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+bpanda(18:15:33.818,+31:25:45.61,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
+bpanda(18:15:33.921,+31:25:16.31,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
+bpanda(18:15:33.921,+31:25:16.31,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
+bpanda(18:15:33.921,+31:25:16.31,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
diff --git a/tests/ds9.mosaic.fk5.reg b/tests/ds9.mosaic.fk5.reg
index 237b250..3bab4c8 100644
--- a/tests/ds9.mosaic.fk5.reg
+++ b/tests/ds9.mosaic.fk5.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 fk5
-circle(273.85243,31.402883,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(273.84354,31.401309,13.32",6.66",44.939783) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(273.83379,31.401122,26.64",13.32",44.939783) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(273.82628,31.402137,273.82219,31.405628,273.8181,31.402134,273.82219,31.398644) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(273.81526,31.399821,273.80875,31.404535) # line=1 1 color=cyan text={Line}
-# vector(273.80507,31.401851,13.32",44.939783) vector=1 color=red text={Vector}
-# text(273.79911,31.400553) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(273.82848,31.389558,273.82154,31.395013) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(273.85243,31.392523,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(273.84322,31.392152,4.995",2.4975",9.99",4.995",44.939783) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(273.83379,31.392057,13.32",6.66",19.98",9.99",44.939783) # font="helvetica 10 bold roman" text={Box Annulus}
-point(273.85319,31.383921) # point=circle text={Circle Point}
-point(273.84355,31.383734) # point=box color=red width=3 text={Box Point}
-point(273.83477,31.383917) # point=diamond text={Diamond Point}
-point(273.85156,31.379388) # point=cross color=blue text={Cross Point}
-point(273.84333,31.379479) # point=x text={X Point}
-point(273.83499,31.3792) # point=arrow color=magenta text={Arrow Point}
-point(273.84311,31.374669) # point=boxcircle text={BoxCircle Point}
-# projection(273.81721,31.388629,273.80713,31.39473,6.66") text={Projection}
-panda(273.82404,31.383914,359.93978,629.93978,3,0",9.99",2) # text={Panda}
-panda(273.82383,31.375496,51.521683,89.939783,1,0",4.995",1) # panda=(51.521683 89.939783 179.93978 269.93978)(0" 4.995" 9.99") text={Panda 2}
-panda(273.82383,31.375496,51.521683,89.939783,1,4.995",9.99",1) # panda=ignore
-panda(273.82383,31.375496,89.939783,179.93978,1,0",4.995",1) # panda=ignore
-panda(273.82383,31.375496,89.939783,179.93978,1,4.995",9.99",1) # panda=ignore
-panda(273.82383,31.375496,179.93978,269.93978,1,0",4.995",1) # panda=ignore
-panda(273.82383,31.375496,179.93978,269.93978,1,4.995",9.99",1) # panda=ignore
-# compass(273.80399,31.390565,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(273.81516,31.383171,359.93978,629.93978,3,4.995",2.4975",9.99",4.995",1,44.939783) # text={Epanda}
-epanda(273.81484,31.374938,44.939783,89.939783,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=(44.939783 89.939783 179.93978 269.93978)(4.995" 2.4975" 9.99" 4.995")(44.939783) text={Epanda 2}
-epanda(273.81484,31.374938,89.939783,179.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
-epanda(273.81484,31.374938,179.93978,269.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
-bpanda(273.80573,31.383166,359.93978,629.93978,3,13.32",6.66",19.98",9.99",1,44.939783) # text={Bpanda}
-bpanda(273.80617,31.375027,44.939783,89.939783,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=(44.939783 89.939783 179.93978 269.93978)(13.32" 6.66" 19.98" 9.99")(44.939783) text={Bpanda 2}
-bpanda(273.80617,31.375027,89.939783,179.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
-bpanda(273.80617,31.375027,179.93978,269.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
-# circle3d(273.79631,31.380109,3.33") text={Circle3d}
-circle(273.93699,31.448006,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(273.9281,31.446438,13.32",6.66",44.939783) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(273.91834,31.446257,26.64",13.32",44.939783) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(273.91083,31.447277,273.90674,31.45077,273.90265,31.447279,273.90674,31.443786) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(273.8998,31.444968,273.8933,31.449687) # line=1 1 color=cyan text={Line}
-# vector(273.88961,31.447005,13.32",44.939783) vector=1 color=red text={Vector}
-# text(273.88365,31.445711) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(273.91302,31.434696,273.90609,31.440156) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(273.93698,31.437646,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(273.92777,31.43728,4.995",2.4975",9.99",4.995",44.939783) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(273.91834,31.437192,13.32",6.66",19.98",9.99",44.939783) # font="helvetica 10 bold roman" text={Box Annulus}
-point(273.93774,31.429043) # point=circle text={Circle Point}
-point(273.92809,31.428863) # point=box color=red width=3 text={Box Point}
-point(273.91931,31.429051) # point=diamond text={Diamond Point}
-point(273.93611,31.424511) # point=cross color=blue text={Cross Point}
-point(273.92787,31.424608) # point=x text={X Point}
-point(273.91952,31.424334) # point=arrow color=magenta text={Arrow Point}
-point(273.92765,31.419798) # point=boxcircle text={BoxCircle Point}
-# projection(273.90175,31.433775,273.89167,31.439882,6.66") text={Projection}
-panda(273.90858,31.429055,359.93978,629.93978,3,0",9.99",2) # text={Panda}
-panda(273.90836,31.420638,51.521683,89.939783,1,0",4.995",1) # panda=(51.521683 89.939783 179.93978 269.93978)(0" 4.995" 9.99") text={Panda 2}
-panda(273.90836,31.420638,51.521683,89.939783,1,4.995",9.99",1) # panda=ignore
-panda(273.90836,31.420638,89.939783,179.93978,1,0",4.995",1) # panda=ignore
-panda(273.90836,31.420638,89.939783,179.93978,1,4.995",9.99",1) # panda=ignore
-panda(273.90836,31.420638,179.93978,269.93978,1,0",4.995",1) # panda=ignore
-panda(273.90836,31.420638,179.93978,269.93978,1,4.995",9.99",1) # panda=ignore
-# compass(273.88852,31.43572,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(273.89969,31.428318,359.93978,629.93978,3,4.995",2.4975",9.99",4.995",1,44.939783) # text={Epanda}
-epanda(273.89936,31.420085,44.939783,89.939783,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=(44.939783 89.939783 179.93978 269.93978)(4.995" 2.4975" 9.99" 4.995")(44.939783) text={Epanda 2}
-epanda(273.89936,31.420085,89.939783,179.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
-epanda(273.89936,31.420085,179.93978,269.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
-bpanda(273.89026,31.42832,359.93978,629.93978,3,13.32",6.66",19.98",9.99",1,44.939783) # text={Bpanda}
-bpanda(273.89069,31.42018,44.939783,89.939783,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=(44.939783 89.939783 179.93978 269.93978)(13.32" 6.66" 19.98" 9.99")(44.939783) text={Bpanda 2}
-bpanda(273.89069,31.42018,89.939783,179.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
-bpanda(273.89069,31.42018,179.93978,269.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
-# circle3d(273.88082,31.425268,3.33") text={Circle3d}
+circle(273.85481,31.403531,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(273.84593,31.401957,13.32",6.66",44.939783) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(273.83617,31.40177,26.64",13.32",44.939783) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(273.82867,31.402785,273.82457,31.406276,273.82048,31.402783,273.82458,31.399292) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(273.81764,31.400469,273.81114,31.405184) # line=1 1 color=cyan text={Line}
+# vector(273.80745,31.4025,13.32",44.939783) vector=1 color=red text={Vector}
+# text(273.80149,31.401202) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(273.83087,31.390206,273.82393,31.395661) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(273.85481,31.393171,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(273.8456,31.3928,4.995",2.4975",9.99",4.995",44.939783) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(273.83617,31.392705,13.32",6.66",19.98",9.99",44.939783) # font="helvetica 10 bold roman" text={Box Annulus}
+point(273.85557,31.384568) # point=circle text={Circle Point}
+point(273.84593,31.384382) # point=box color=red width=3 text={Box Point}
+point(273.83715,31.384565) # point=diamond text={Diamond Point}
+point(273.85395,31.380036) # point=cross color=blue text={Cross Point}
+point(273.84571,31.380127) # point=x text={X Point}
+point(273.83737,31.379848) # point=arrow color=magenta text={Arrow Point}
+point(273.8455,31.375317) # point=boxcircle text={BoxCircle Point}
+# projection(273.8196,31.389277,273.80952,31.395378,6.66") text={Projection}
+panda(273.82643,31.384562,359.93978,629.93978,3,0",9.99",2) # text={Panda}
+panda(273.82621,31.376145,51.521683,89.939783,1,0",4.995",1) # panda=(51.521683 89.939783 179.93978 269.93978)(0" 4.995" 9.99") text={Panda 2}
+panda(273.82621,31.376145,51.521683,89.939783,1,4.995",9.99",1) # panda=ignore
+panda(273.82621,31.376145,89.939783,179.93978,1,0",4.995",1) # panda=ignore
+panda(273.82621,31.376145,89.939783,179.93978,1,4.995",9.99",1) # panda=ignore
+panda(273.82621,31.376145,179.93978,269.93978,1,0",4.995",1) # panda=ignore
+panda(273.82621,31.376145,179.93978,269.93978,1,4.995",9.99",1) # panda=ignore
+# compass(273.80638,31.391214,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(273.81754,31.383819,359.93978,629.93978,3,4.995",2.4975",9.99",4.995",1,44.939783) # text={Epanda}
+epanda(273.81722,31.375586,44.939783,89.939783,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=(44.939783 89.939783 179.93978 269.93978)(4.995" 2.4975" 9.99" 4.995")(44.939783) text={Epanda 2}
+epanda(273.81722,31.375586,89.939783,179.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
+epanda(273.81722,31.375586,179.93978,269.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
+bpanda(273.80811,31.383815,359.93978,629.93978,3,13.32",6.66",19.98",9.99",1,44.939783) # text={Bpanda}
+bpanda(273.80855,31.375675,44.939783,89.939783,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=(44.939783 89.939783 179.93978 269.93978)(13.32" 6.66" 19.98" 9.99")(44.939783) text={Bpanda 2}
+bpanda(273.80855,31.375675,89.939783,179.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
+bpanda(273.80855,31.375675,179.93978,269.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
+circle(273.93764,31.449023,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(273.92875,31.447455,13.32",6.66",44.939783) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(273.91899,31.447274,26.64",13.32",44.939783) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(273.91149,31.448294,273.90739,31.451788,273.9033,31.448297,273.90739,31.444803) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(273.90045,31.445985,273.89395,31.450704) # line=1 1 color=cyan text={Line}
+# vector(273.89026,31.448022,13.32",44.939783) vector=1 color=red text={Vector}
+# text(273.8843,31.446728) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(273.91367,31.435713,273.90674,31.441173) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(273.93764,31.438663,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(273.92842,31.438297,4.995",2.4975",9.99",4.995",44.939783) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(273.91899,31.438209,13.32",6.66",19.98",9.99",44.939783) # font="helvetica 10 bold roman" text={Box Annulus}
+point(273.93839,31.43006) # point=circle text={Circle Point}
+point(273.92874,31.42988) # point=box color=red width=3 text={Box Point}
+point(273.91996,31.430069) # point=diamond text={Diamond Point}
+point(273.93676,31.425528) # point=cross color=blue text={Cross Point}
+point(273.92852,31.425625) # point=x text={X Point}
+point(273.92017,31.425351) # point=arrow color=magenta text={Arrow Point}
+point(273.9283,31.420815) # point=boxcircle text={BoxCircle Point}
+# projection(273.9024,31.434792,273.89232,31.440899,6.66") text={Projection}
+panda(273.90923,31.430072,359.93978,629.93978,3,0",9.99",2) # text={Panda}
+panda(273.90901,31.421655,51.521683,89.939783,1,0",4.995",1) # panda=(51.521683 89.939783 179.93978 269.93978)(0" 4.995" 9.99") text={Panda 2}
+panda(273.90901,31.421655,51.521683,89.939783,1,4.995",9.99",1) # panda=ignore
+panda(273.90901,31.421655,89.939783,179.93978,1,0",4.995",1) # panda=ignore
+panda(273.90901,31.421655,89.939783,179.93978,1,4.995",9.99",1) # panda=ignore
+panda(273.90901,31.421655,179.93978,269.93978,1,0",4.995",1) # panda=ignore
+panda(273.90901,31.421655,179.93978,269.93978,1,4.995",9.99",1) # panda=ignore
+# compass(273.88917,31.436737,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(273.90034,31.429335,359.93978,629.93978,3,4.995",2.4975",9.99",4.995",1,44.939783) # text={Epanda}
+epanda(273.90001,31.421103,44.939783,89.939783,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=(44.939783 89.939783 179.93978 269.93978)(4.995" 2.4975" 9.99" 4.995")(44.939783) text={Epanda 2}
+epanda(273.90001,31.421103,89.939783,179.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
+epanda(273.90001,31.421103,179.93978,269.93978,1,4.995",2.4975",9.99",4.995",1,44.939783) # epanda=ignore
+bpanda(273.89091,31.429337,359.93978,629.93978,3,13.32",6.66",19.98",9.99",1,44.939783) # text={Bpanda}
+bpanda(273.89134,31.421197,44.939783,89.939783,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=(44.939783 89.939783 179.93978 269.93978)(13.32" 6.66" 19.98" 9.99")(44.939783) text={Bpanda 2}
+bpanda(273.89134,31.421197,89.939783,179.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
+bpanda(273.89134,31.421197,179.93978,269.93978,1,13.32",6.66",19.98",9.99",1,44.939783) # bpanda=ignore
diff --git a/tests/ds9.mosaic.galactic.hms.reg b/tests/ds9.mosaic.galactic.hms.reg
index dd5c421..2e4047c 100644
--- a/tests/ds9.mosaic.galactic.hms.reg
+++ b/tests/ds9.mosaic.galactic.hms.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 galactic
-circle(+58:28:16.326,+20:53:10.919,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(+58:28:00.717,+20:53:34.689,13.32",6.66",115.143) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(+58:27:49.170,+20:54:02.658,26.64",13.32",115.143) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(+58:27:44.490,+20:54:25.594,+58:27:52.588,+20:54:41.683,+58:27:35.364,+20:54:49.248,+58:27:27.267,+20:54:33.158) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(+58:27:23.807,+20:54:54.647,+58:27:33.659,+20:55:19.202) # line=1 1 color=cyan text={Line}
-# vector(+58:27:19.823,+20:55:26.579,13.32",115.143) vector=1 color=red text={Vector}
-# text(+58:27:08.478,+20:55:42.228) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(+58:27:01.331,+20:54:03.894,+58:27:13.380,+20:54:30.606) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(+58:27:38.771,+20:52:58.275,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(+58:27:27.158,+20:53:24.451,4.995",2.4975",9.99",4.995",115.143) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(+58:27:16.308,+20:53:51.593,13.32",6.66",19.98",9.99",115.143) # font="helvetica 10 bold roman" text={Box Annulus}
-point(+58:27:08.435,+20:52:45.581) # point=circle text={Circle Point}
-point(+58:26:57.008,+20:53:13.236) # point=box color=red width=3 text={Box Point}
-point(+58:26:47.887,+20:53:38.836) # point=diamond text={Diamond Point}
-point(+58:26:50.193,+20:52:44.746) # point=cross color=blue text={Cross Point}
-point(+58:26:41.342,+20:53:08.667) # point=x text={X Point}
-point(+58:26:31.028,+20:53:32.450) # point=arrow color=magenta text={Arrow Point}
-point(+58:26:23.665,+20:53:03.421) # point=boxcircle text={BoxCircle Point}
-# projection(+58:26:45.405,+20:54:35.345,+58:26:56.295,+20:55:11.932,6.66") text={Projection}
-panda(+58:26:35.919,+20:54:09.849,70.1434,340.143,3,0",9.99",2) # text={Panda}
-panda(+58:26:05.163,+20:54:00.198,121.725,160.143,1,0",4.995",1) # panda=(121.725 160.143 250.143 340.143)(0" 4.995" 9.99") text={Panda 2}
-panda(+58:26:05.163,+20:54:00.198,121.725,160.143,1,4.995",9.99",1) # panda=ignore
-panda(+58:26:05.163,+20:54:00.198,160.143,250.143,1,0",4.995",1) # panda=ignore
-panda(+58:26:05.163,+20:54:00.198,160.143,250.143,1,4.995",9.99",1) # panda=ignore
-panda(+58:26:05.163,+20:54:00.198,250.143,340.143,1,0",4.995",1) # panda=ignore
-panda(+58:26:05.163,+20:54:00.198,250.143,340.143,1,4.995",9.99",1) # panda=ignore
-# compass(+58:26:37.697,+20:55:15.935,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(+58:26:23.322,+20:54:34.633,70.1434,340.143,3,4.995",2.4975",9.99",4.995",1,115.143) # text={Epanda}
-epanda(+58:25:53.114,+20:54:25.520,115.143,160.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=(115.143 160.143 250.143 340.143)(4.995" 2.4975" 9.99" 4.995")(115.143) text={Epanda 2}
-epanda(+58:25:53.114,+20:54:25.520,160.143,250.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
-epanda(+58:25:53.114,+20:54:25.520,250.143,340.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
-bpanda(+58:26:12.803,+20:55:01.887,70.1434,340.143,3,13.32",6.66",19.98",9.99",1,115.143) # text={Bpanda}
-bpanda(+58:25:43.775,+20:54:50.693,115.143,160.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=(115.143 160.143 250.143 340.143)(13.32" 6.66" 19.98" 9.99")(115.143) text={Bpanda 2}
-bpanda(+58:25:43.775,+20:54:50.693,160.143,250.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
-bpanda(+58:25:43.775,+20:54:50.693,250.143,340.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
-# circle3d(+58:25:51.215,+20:55:25.412,3.33") text={Circle3d}
-circle(+58:32:34.114,+20:50:01.593,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(+58:32:18.522,+20:50:25.370,13.32",6.66",115.143) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(+58:32:06.992,+20:50:53.344,26.64",13.32",115.143) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(+58:32:02.325,+20:51:16.281,+58:32:10.427,+20:51:32.367,+58:31:53.213,+20:51:39.939,+58:31:45.111,+20:51:23.853) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(+58:31:41.663,+20:51:45.344,+58:31:51.523,+20:52:09.894) # line=1 1 color=cyan text={Line}
-# vector(+58:31:37.695,+20:52:17.277,13.32",115.143) vector=1 color=red text={Vector}
-# text(+58:31:26.362,+20:52:32.931) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(+58:31:19.170,+20:50:54.600,+58:31:31.227,+20:51:21.307) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(+58:31:56.566,+20:49:48.965,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(+58:31:44.969,+20:50:15.146,4.995",2.4975",9.99",4.995",115.143) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(+58:31:34.136,+20:50:42.292,13.32",6.66",19.98",9.99",115.143) # font="helvetica 10 bold roman" text={Box Annulus}
-point(+58:31:26.234,+20:49:36.283) # point=circle text={Circle Point}
-point(+58:31:14.824,+20:50:03.943) # point=box color=red width=3 text={Box Point}
-point(+58:31:05.719,+20:50:29.547) # point=diamond text={Diamond Point}
-point(+58:31:07.998,+20:49:35.457) # point=cross color=blue text={Cross Point}
-point(+58:30:59.162,+20:49:59.381) # point=x text={X Point}
-point(+58:30:48.863,+20:50:23.168) # point=arrow color=magenta text={Arrow Point}
-point(+58:30:41.489,+20:49:54.142) # point=boxcircle text={BoxCircle Point}
-# projection(+58:31:03.265,+20:51:26.057,+58:31:14.169,+20:52:02.640,6.66") text={Projection}
-panda(+58:30:53.770,+20:51:00.565,70.1434,340.143,3,0",9.99",2) # text={Panda}
-panda(+58:30:23.020,+20:50:50.926,121.725,160.143,1,0",4.995",1) # panda=(121.725 160.143 250.143 340.143)(0" 4.995" 9.99") text={Panda 2}
-panda(+58:30:23.020,+20:50:50.926,121.725,160.143,1,4.995",9.99",1) # panda=ignore
-panda(+58:30:23.020,+20:50:50.926,160.143,250.143,1,0",4.995",1) # panda=ignore
-panda(+58:30:23.020,+20:50:50.926,160.143,250.143,1,4.995",9.99",1) # panda=ignore
-panda(+58:30:23.020,+20:50:50.926,250.143,340.143,1,0",4.995",1) # panda=ignore
-panda(+58:30:23.020,+20:50:50.926,250.143,340.143,1,4.995",9.99",1) # panda=ignore
-# compass(+58:30:55.579,+20:52:06.650,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(+58:30:41.189,+20:51:25.355,70.1434,340.143,3,4.995",2.4975",9.99",4.995",1,115.143) # text={Epanda}
-epanda(+58:30:10.988,+20:51:16.254,115.143,160.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=(115.143 160.143 250.143 340.143)(4.995" 2.4975" 9.99" 4.995")(115.143) text={Epanda 2}
-epanda(+58:30:10.988,+20:51:16.254,160.143,250.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
-epanda(+58:30:10.988,+20:51:16.254,250.143,340.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
-bpanda(+58:30:30.686,+20:51:52.612,70.1434,340.143,3,13.32",6.66",19.98",9.99",1,115.143) # text={Bpanda}
-bpanda(+58:30:01.664,+20:51:41.431,115.143,160.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=(115.143 160.143 250.143 340.143)(13.32" 6.66" 19.98" 9.99")(115.143) text={Bpanda 2}
-bpanda(+58:30:01.664,+20:51:41.431,160.143,250.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
-bpanda(+58:30:01.664,+20:51:41.431,250.143,340.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
-# circle3d(+58:30:09.117,+20:52:16.147,3.33") text={Circle3d}
+circle(+58:28:21.331,+20:53:04.817,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(+58:28:05.723,+20:53:28.587,13.32",6.66",115.143) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(+58:27:54.177,+20:53:56.556,26.64",13.32",115.143) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(+58:27:49.497,+20:54:19.492,+58:27:57.595,+20:54:35.581,+58:27:40.371,+20:54:43.146,+58:27:32.273,+20:54:27.056) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(+58:27:28.814,+20:54:48.546,+58:27:38.666,+20:55:13.101) # line=1 1 color=cyan text={Line}
+# vector(+58:27:24.830,+20:55:20.478,13.32",115.143) vector=1 color=red text={Vector}
+# text(+58:27:13.486,+20:55:36.127) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(+58:27:06.337,+20:53:57.793,+58:27:18.386,+20:54:24.505) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(+58:27:43.777,+20:52:52.173,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(+58:27:32.164,+20:53:18.350,4.995",2.4975",9.99",4.995",115.143) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(+58:27:21.314,+20:53:45.492,13.32",6.66",19.98",9.99",115.143) # font="helvetica 10 bold roman" text={Box Annulus}
+point(+58:27:13.441,+20:52:39.479) # point=circle text={Circle Point}
+point(+58:27:02.014,+20:53:07.134) # point=box color=red width=3 text={Box Point}
+point(+58:26:52.894,+20:53:32.735) # point=diamond text={Diamond Point}
+point(+58:26:55.199,+20:52:38.645) # point=cross color=blue text={Cross Point}
+point(+58:26:46.348,+20:53:02.566) # point=x text={X Point}
+point(+58:26:36.035,+20:53:26.349) # point=arrow color=magenta text={Arrow Point}
+point(+58:26:28.672,+20:52:57.320) # point=boxcircle text={BoxCircle Point}
+# projection(+58:26:50.412,+20:54:29.243,+58:27:01.303,+20:55:05.831,6.66") text={Projection}
+panda(+58:26:40.926,+20:54:03.748,70.1434,340.143,3,0",9.99",2) # text={Panda}
+panda(+58:26:10.170,+20:53:54.097,121.725,160.143,1,0",4.995",1) # panda=(121.725 160.143 250.143 340.143)(0" 4.995" 9.99") text={Panda 2}
+panda(+58:26:10.170,+20:53:54.097,121.725,160.143,1,4.995",9.99",1) # panda=ignore
+panda(+58:26:10.170,+20:53:54.097,160.143,250.143,1,0",4.995",1) # panda=ignore
+panda(+58:26:10.170,+20:53:54.097,160.143,250.143,1,4.995",9.99",1) # panda=ignore
+panda(+58:26:10.170,+20:53:54.097,250.143,340.143,1,0",4.995",1) # panda=ignore
+panda(+58:26:10.170,+20:53:54.097,250.143,340.143,1,4.995",9.99",1) # panda=ignore
+# compass(+58:26:42.705,+20:55:09.833,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(+58:26:28.330,+20:54:28.532,70.1434,340.143,3,4.995",2.4975",9.99",4.995",1,115.143) # text={Epanda}
+epanda(+58:25:58.122,+20:54:19.419,115.143,160.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=(115.143 160.143 250.143 340.143)(4.995" 2.4975" 9.99" 4.995")(115.143) text={Epanda 2}
+epanda(+58:25:58.122,+20:54:19.419,160.143,250.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
+epanda(+58:25:58.122,+20:54:19.419,250.143,340.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
+bpanda(+58:26:17.810,+20:54:55.786,70.1434,340.143,3,13.32",6.66",19.98",9.99",1,115.143) # text={Bpanda}
+bpanda(+58:25:48.783,+20:54:44.592,115.143,160.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=(115.143 160.143 250.143 340.143)(13.32" 6.66" 19.98" 9.99")(115.143) text={Bpanda 2}
+bpanda(+58:25:48.783,+20:54:44.592,160.143,250.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
+bpanda(+58:25:48.783,+20:54:44.592,250.143,340.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
+circle(+58:32:38.525,+20:50:00.954,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(+58:32:22.933,+20:50:24.730,13.32",6.66",115.143) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(+58:32:11.404,+20:50:52.704,26.64",13.32",115.143) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(+58:32:06.737,+20:51:15.642,+58:32:14.840,+20:51:31.728,+58:31:57.626,+20:51:39.299,+58:31:49.523,+20:51:23.213) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(+58:31:46.075,+20:51:44.704,+58:31:55.935,+20:52:09.255) # line=1 1 color=cyan text={Line}
+# vector(+58:31:42.108,+20:52:16.637,13.32",115.143) vector=1 color=red text={Vector}
+# text(+58:31:30.774,+20:52:32.291) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(+58:31:23.582,+20:50:53.961,+58:31:35.640,+20:51:20.667) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(+58:32:00.978,+20:49:48.325,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(+58:31:49.381,+20:50:14.507,4.995",2.4975",9.99",4.995",115.143) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(+58:31:38.547,+20:50:41.653,13.32",6.66",19.98",9.99",115.143) # font="helvetica 10 bold roman" text={Box Annulus}
+point(+58:31:30.646,+20:49:35.644) # point=circle text={Circle Point}
+point(+58:31:19.236,+20:50:03.304) # point=box color=red width=3 text={Box Point}
+point(+58:31:10.131,+20:50:28.908) # point=diamond text={Diamond Point}
+point(+58:31:12.410,+20:49:34.817) # point=cross color=blue text={Cross Point}
+point(+58:31:03.573,+20:49:58.742) # point=x text={X Point}
+point(+58:30:53.275,+20:50:22.529) # point=arrow color=magenta text={Arrow Point}
+point(+58:30:45.900,+20:49:53.503) # point=boxcircle text={BoxCircle Point}
+# projection(+58:31:07.677,+20:51:25.418,+58:31:18.581,+20:52:02.000,6.66") text={Projection}
+panda(+58:30:58.182,+20:50:59.926,70.1434,340.143,3,0",9.99",2) # text={Panda}
+panda(+58:30:27.432,+20:50:50.288,121.725,160.143,1,0",4.995",1) # panda=(121.725 160.143 250.143 340.143)(0" 4.995" 9.99") text={Panda 2}
+panda(+58:30:27.432,+20:50:50.288,121.725,160.143,1,4.995",9.99",1) # panda=ignore
+panda(+58:30:27.432,+20:50:50.288,160.143,250.143,1,0",4.995",1) # panda=ignore
+panda(+58:30:27.432,+20:50:50.288,160.143,250.143,1,4.995",9.99",1) # panda=ignore
+panda(+58:30:27.432,+20:50:50.288,250.143,340.143,1,0",4.995",1) # panda=ignore
+panda(+58:30:27.432,+20:50:50.288,250.143,340.143,1,4.995",9.99",1) # panda=ignore
+# compass(+58:30:59.992,+20:52:06.011,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(+58:30:45.602,+20:51:24.716,70.1434,340.143,3,4.995",2.4975",9.99",4.995",1,115.143) # text={Epanda}
+epanda(+58:30:15.400,+20:51:15.615,115.143,160.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=(115.143 160.143 250.143 340.143)(4.995" 2.4975" 9.99" 4.995")(115.143) text={Epanda 2}
+epanda(+58:30:15.400,+20:51:15.615,160.143,250.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
+epanda(+58:30:15.400,+20:51:15.615,250.143,340.143,1,4.995",2.4975",9.99",4.995",1,115.143) # epanda=ignore
+bpanda(+58:30:35.099,+20:51:51.974,70.1434,340.143,3,13.32",6.66",19.98",9.99",1,115.143) # text={Bpanda}
+bpanda(+58:30:06.076,+20:51:40.792,115.143,160.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=(115.143 160.143 250.143 340.143)(13.32" 6.66" 19.98" 9.99")(115.143) text={Bpanda 2}
+bpanda(+58:30:06.076,+20:51:40.792,160.143,250.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
+bpanda(+58:30:06.076,+20:51:40.792,250.143,340.143,1,13.32",6.66",19.98",9.99",1,115.143) # bpanda=ignore
diff --git a/tests/ds9.mosaic.galactic.reg b/tests/ds9.mosaic.galactic.reg
index 2977778..194abff 100644
--- a/tests/ds9.mosaic.galactic.reg
+++ b/tests/ds9.mosaic.galactic.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 galactic
-circle(58.471202,20.886366,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(58.466866,20.892969,13.32",6.66",115.14338) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(58.463658,20.900738,26.64",13.32",115.14338) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(58.462358,20.907109,58.464608,20.911579,58.459823,20.91368,58.457574,20.909211) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(58.456613,20.91518,58.45935,20.922001) # line=1 1 color=cyan text={Line}
-# vector(58.455506,20.92405,13.32",115.14338) vector=1 color=red text={Vector}
-# text(58.452355,20.928397) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(58.45037,20.901082,58.453717,20.908502) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(58.46077,20.882854,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(58.457544,20.890125,4.995",2.4975",9.99",4.995",115.14338) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(58.45453,20.897665,13.32",6.66",19.98",9.99",115.14338) # font="helvetica 10 bold roman" text={Box Annulus}
-point(58.452343,20.879328) # point=circle text={Circle Point}
-point(58.449169,20.88701) # point=box color=red width=3 text={Box Point}
-point(58.446635,20.894121) # point=diamond text={Diamond Point}
-point(58.447276,20.879096) # point=cross color=blue text={Cross Point}
-point(58.444817,20.885741) # point=x text={X Point}
-point(58.441952,20.892347) # point=arrow color=magenta text={Arrow Point}
-point(58.439907,20.884284) # point=boxcircle text={BoxCircle Point}
-# projection(58.445946,20.909818,58.448971,20.919981,6.66") text={Projection}
-panda(58.443311,20.902736,70.143383,340.14338,3,0",9.99",2) # text={Panda}
-panda(58.434767,20.900055,121.72528,160.14338,1,0",4.995",1) # panda=(121.72528 160.14338 250.14338 340.14338)(0" 4.995" 9.99") text={Panda 2}
-panda(58.434767,20.900055,121.72528,160.14338,1,4.995",9.99",1) # panda=ignore
-panda(58.434767,20.900055,160.14338,250.14338,1,0",4.995",1) # panda=ignore
-panda(58.434767,20.900055,160.14338,250.14338,1,4.995",9.99",1) # panda=ignore
-panda(58.434767,20.900055,250.14338,340.14338,1,0",4.995",1) # panda=ignore
-panda(58.434767,20.900055,250.14338,340.14338,1,4.995",9.99",1) # panda=ignore
-# compass(58.443805,20.921093,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(58.439812,20.90962,70.143383,340.14338,3,4.995",2.4975",9.99",4.995",1,115.14338) # text={Epanda}
-epanda(58.431421,20.907089,115.14338,160.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=(115.14338 160.14338 250.14338 340.14338)(4.995" 2.4975" 9.99" 4.995")(115.14338) text={Epanda 2}
-epanda(58.431421,20.907089,160.14338,250.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
-epanda(58.431421,20.907089,250.14338,340.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
-bpanda(58.43689,20.917191,70.143383,340.14338,3,13.32",6.66",19.98",9.99",1,115.14338) # text={Bpanda}
-bpanda(58.428826,20.914081,115.14338,160.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=(115.14338 160.14338 250.14338 340.14338)(13.32" 6.66" 19.98" 9.99")(115.14338) text={Bpanda 2}
-bpanda(58.428826,20.914081,160.14338,250.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
-bpanda(58.428826,20.914081,250.14338,340.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
-# circle3d(58.430893,20.923726,3.33") text={Circle3d}
-circle(58.542809,20.833776,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(58.538478,20.84038,13.32",6.66",115.14338) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(58.535276,20.848151,26.64",13.32",115.14338) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(58.533979,20.854523,58.53623,20.858991,58.531448,20.861094,58.529197,20.856626) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(58.52824,20.862595,58.530979,20.869415) # line=1 1 color=cyan text={Line}
-# vector(58.527137,20.871466,13.32",115.14338) vector=1 color=red text={Vector}
-# text(58.523989,20.875814) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(58.521992,20.8485,58.525341,20.855918) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(58.532379,20.830268,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(58.529158,20.837541,4.995",2.4975",9.99",4.995",115.14338) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(58.526149,20.845081,13.32",6.66",19.98",9.99",115.14338) # font="helvetica 10 bold roman" text={Box Annulus}
-point(58.523954,20.826745) # point=circle text={Circle Point}
-point(58.520784,20.834429) # point=box color=red width=3 text={Box Point}
-point(58.518255,20.841541) # point=diamond text={Diamond Point}
-point(58.518888,20.826516) # point=cross color=blue text={Cross Point}
-point(58.516434,20.833161) # point=x text={X Point}
-point(58.513573,20.839769) # point=arrow color=magenta text={Arrow Point}
-point(58.511525,20.831706) # point=boxcircle text={BoxCircle Point}
-# projection(58.517573,20.857238,58.520602,20.8674,6.66") text={Projection}
-panda(58.514936,20.850157,70.143383,340.14338,3,0",9.99",2) # text={Panda}
-panda(58.506394,20.84748,121.72528,160.14338,1,0",4.995",1) # panda=(121.72528 160.14338 250.14338 340.14338)(0" 4.995" 9.99") text={Panda 2}
-panda(58.506394,20.84748,121.72528,160.14338,1,4.995",9.99",1) # panda=ignore
-panda(58.506394,20.84748,160.14338,250.14338,1,0",4.995",1) # panda=ignore
-panda(58.506394,20.84748,160.14338,250.14338,1,4.995",9.99",1) # panda=ignore
-panda(58.506394,20.84748,250.14338,340.14338,1,0",4.995",1) # panda=ignore
-panda(58.506394,20.84748,250.14338,340.14338,1,4.995",9.99",1) # panda=ignore
-# compass(58.515439,20.868514,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(58.511441,20.857043,70.143383,340.14338,3,4.995",2.4975",9.99",4.995",1,115.14338) # text={Epanda}
-epanda(58.503052,20.854515,115.14338,160.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=(115.14338 160.14338 250.14338 340.14338)(4.995" 2.4975" 9.99" 4.995")(115.14338) text={Epanda 2}
-epanda(58.503052,20.854515,160.14338,250.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
-epanda(58.503052,20.854515,250.14338,340.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
-bpanda(58.508524,20.864615,70.143383,340.14338,3,13.32",6.66",19.98",9.99",1,115.14338) # text={Bpanda}
-bpanda(58.500462,20.861509,115.14338,160.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=(115.14338 160.14338 250.14338 340.14338)(13.32" 6.66" 19.98" 9.99")(115.14338) text={Bpanda 2}
-bpanda(58.500462,20.861509,160.14338,250.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
-bpanda(58.500462,20.861509,250.14338,340.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
-# circle3d(58.502533,20.871152,3.33") text={Circle3d}
+circle(58.472592,20.884671,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(58.468256,20.891274,13.32",6.66",115.14338) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(58.465049,20.899043,26.64",13.32",115.14338) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(58.463749,20.905414,58.465999,20.909884,58.461214,20.911985,58.458965,20.907516) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(58.458004,20.913485,58.460741,20.920306) # line=1 1 color=cyan text={Line}
+# vector(58.456897,20.922355,13.32",115.14338) vector=1 color=red text={Vector}
+# text(58.453746,20.926702) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(58.45176,20.899387,58.455107,20.906807) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(58.46216,20.881159,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(58.458934,20.88843,4.995",2.4975",9.99",4.995",115.14338) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(58.455921,20.89597,13.32",6.66",19.98",9.99",115.14338) # font="helvetica 10 bold roman" text={Box Annulus}
+point(58.453734,20.877633) # point=circle text={Circle Point}
+point(58.450559,20.885315) # point=box color=red width=3 text={Box Point}
+point(58.448026,20.892426) # point=diamond text={Diamond Point}
+point(58.448666,20.877401) # point=cross color=blue text={Cross Point}
+point(58.446208,20.884046) # point=x text={X Point}
+point(58.443343,20.890652) # point=arrow color=magenta text={Arrow Point}
+point(58.441298,20.882589) # point=boxcircle text={BoxCircle Point}
+# projection(58.447337,20.908123,58.450362,20.918286,6.66") text={Projection}
+panda(58.444702,20.901041,70.143383,340.14338,3,0",9.99",2) # text={Panda}
+panda(58.436158,20.89836,121.72528,160.14338,1,0",4.995",1) # panda=(121.72528 160.14338 250.14338 340.14338)(0" 4.995" 9.99") text={Panda 2}
+panda(58.436158,20.89836,121.72528,160.14338,1,4.995",9.99",1) # panda=ignore
+panda(58.436158,20.89836,160.14338,250.14338,1,0",4.995",1) # panda=ignore
+panda(58.436158,20.89836,160.14338,250.14338,1,4.995",9.99",1) # panda=ignore
+panda(58.436158,20.89836,250.14338,340.14338,1,0",4.995",1) # panda=ignore
+panda(58.436158,20.89836,250.14338,340.14338,1,4.995",9.99",1) # panda=ignore
+# compass(58.445196,20.919398,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(58.441203,20.907926,70.143383,340.14338,3,4.995",2.4975",9.99",4.995",1,115.14338) # text={Epanda}
+epanda(58.432812,20.905394,115.14338,160.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=(115.14338 160.14338 250.14338 340.14338)(4.995" 2.4975" 9.99" 4.995")(115.14338) text={Epanda 2}
+epanda(58.432812,20.905394,160.14338,250.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
+epanda(58.432812,20.905394,250.14338,340.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
+bpanda(58.438281,20.915496,70.143383,340.14338,3,13.32",6.66",19.98",9.99",1,115.14338) # text={Bpanda}
+bpanda(58.430218,20.912387,115.14338,160.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=(115.14338 160.14338 250.14338 340.14338)(13.32" 6.66" 19.98" 9.99")(115.14338) text={Bpanda 2}
+bpanda(58.430218,20.912387,160.14338,250.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
+bpanda(58.430218,20.912387,250.14338,340.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
+circle(58.544035,20.833598,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(58.539704,20.840203,13.32",6.66",115.14338) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(58.536501,20.847973,26.64",13.32",115.14338) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(58.535205,20.854345,58.537456,20.858813,58.532674,20.860917,58.530423,20.856448) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(58.529465,20.862418,58.532204,20.869237) # line=1 1 color=cyan text={Line}
+# vector(58.528363,20.871288,13.32",115.14338) vector=1 color=red text={Vector}
+# text(58.525215,20.875636) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(58.523217,20.848322,58.526567,20.855741) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(58.533605,20.83009,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(58.530384,20.837363,4.995",2.4975",9.99",4.995",115.14338) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(58.527374,20.844904,13.32",6.66",19.98",9.99",115.14338) # font="helvetica 10 bold roman" text={Box Annulus}
+point(58.525179,20.826568) # point=circle text={Circle Point}
+point(58.52201,20.834251) # point=box color=red width=3 text={Box Point}
+point(58.519481,20.841363) # point=diamond text={Diamond Point}
+point(58.520114,20.826338) # point=cross color=blue text={Cross Point}
+point(58.517659,20.832984) # point=x text={X Point}
+point(58.514798,20.839591) # point=arrow color=magenta text={Arrow Point}
+point(58.51275,20.831529) # point=boxcircle text={BoxCircle Point}
+# projection(58.518799,20.85706,58.521828,20.867222,6.66") text={Projection}
+panda(58.516162,20.84998,70.143383,340.14338,3,0",9.99",2) # text={Panda}
+panda(58.50762,20.847302,121.72528,160.14338,1,0",4.995",1) # panda=(121.72528 160.14338 250.14338 340.14338)(0" 4.995" 9.99") text={Panda 2}
+panda(58.50762,20.847302,121.72528,160.14338,1,4.995",9.99",1) # panda=ignore
+panda(58.50762,20.847302,160.14338,250.14338,1,0",4.995",1) # panda=ignore
+panda(58.50762,20.847302,160.14338,250.14338,1,4.995",9.99",1) # panda=ignore
+panda(58.50762,20.847302,250.14338,340.14338,1,0",4.995",1) # panda=ignore
+panda(58.50762,20.847302,250.14338,340.14338,1,4.995",9.99",1) # panda=ignore
+# compass(58.516664,20.868336,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(58.512667,20.856865,70.143383,340.14338,3,4.995",2.4975",9.99",4.995",1,115.14338) # text={Epanda}
+epanda(58.504278,20.854338,115.14338,160.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=(115.14338 160.14338 250.14338 340.14338)(4.995" 2.4975" 9.99" 4.995")(115.14338) text={Epanda 2}
+epanda(58.504278,20.854338,160.14338,250.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
+epanda(58.504278,20.854338,250.14338,340.14338,1,4.995",2.4975",9.99",4.995",1,115.14338) # epanda=ignore
+bpanda(58.50975,20.864437,70.143383,340.14338,3,13.32",6.66",19.98",9.99",1,115.14338) # text={Bpanda}
+bpanda(58.501688,20.861331,115.14338,160.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=(115.14338 160.14338 250.14338 340.14338)(13.32" 6.66" 19.98" 9.99")(115.14338) text={Bpanda 2}
+bpanda(58.501688,20.861331,160.14338,250.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
+bpanda(58.501688,20.861331,250.14338,340.14338,1,13.32",6.66",19.98",9.99",1,115.14338) # bpanda=ignore
diff --git a/tests/ds9.mosaic.icrs.hms.reg b/tests/ds9.mosaic.icrs.hms.reg
index 6b4171c..f00e314 100644
--- a/tests/ds9.mosaic.icrs.hms.reg
+++ b/tests/ds9.mosaic.icrs.hms.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 icrs
-circle(18:15:24.581,+31:24:10.36,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(18:15:22.449,+31:24:04.69,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(18:15:20.108,+31:24:04.02,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(18:15:18.307,+31:24:07.67,18:15:17.324,+31:24:20.24,18:15:16.343,+31:24:07.66,18:15:17.325,+31:23:55.10) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(18:15:15.660,+31:23:59.33,18:15:14.099,+31:24:16.31) # line=1 1 color=cyan text={Line}
-# vector(18:15:13.215,+31:24:06.64,13.32",44.9398) vector=1 color=red text={Vector}
-# text(18:15:11.785,+31:24:01.97) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(18:15:18.835,+31:23:22.39,18:15:17.170,+31:23:42.03) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(18:15:24.582,+31:23:33.06,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(18:15:22.371,+31:23:31.73,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(18:15:20.109,+31:23:31.38,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
-point(18:15:24.764,+31:23:02.09) # point=circle text={Circle Point}
-point(18:15:22.450,+31:23:01.42) # point=box color=red width=3 text={Box Point}
-point(18:15:20.343,+31:23:02.08) # point=diamond text={Diamond Point}
-point(18:15:24.374,+31:22:45.78) # point=cross color=blue text={Cross Point}
-point(18:15:22.398,+31:22:46.10) # point=x text={X Point}
-point(18:15:20.396,+31:22:45.10) # point=arrow color=magenta text={Arrow Point}
-point(18:15:22.346,+31:22:28.79) # point=boxcircle text={BoxCircle Point}
-# projection(18:15:16.130,+31:23:19.04,18:15:13.711,+31:23:41.01,6.66") text={Projection}
-panda(18:15:17.769,+31:23:02.07,359.94,629.94,3,0",9.99",2) # text={Panda}
-panda(18:15:17.718,+31:22:31.77,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
-panda(18:15:17.718,+31:22:31.77,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
-panda(18:15:17.718,+31:22:31.77,89.9398,179.94,1,0",4.995",1) # panda=ignore
-panda(18:15:17.718,+31:22:31.77,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
-panda(18:15:17.718,+31:22:31.77,179.94,269.94,1,0",4.995",1) # panda=ignore
-panda(18:15:17.718,+31:22:31.77,179.94,269.94,1,4.995",9.99",1) # panda=ignore
-# compass(18:15:12.957,+31:23:26.02,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(18:15:15.637,+31:22:59.39,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
-epanda(18:15:15.560,+31:22:29.76,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
-epanda(18:15:15.560,+31:22:29.76,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-epanda(18:15:15.560,+31:22:29.76,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-bpanda(18:15:13.374,+31:22:59.38,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
-bpanda(18:15:13.480,+31:22:30.08,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
-bpanda(18:15:13.480,+31:22:30.08,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-bpanda(18:15:13.480,+31:22:30.08,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-# circle3d(18:15:11.113,+31:22:48.37,3.33") text={Circle3d}
-circle(18:15:44.877,+31:26:52.80,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(18:15:42.743,+31:26:47.15,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(18:15:40.401,+31:26:46.50,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(18:15:38.599,+31:26:50.18,18:15:37.617,+31:27:02.75,18:15:36.634,+31:26:50.19,18:15:37.616,+31:26:37.61) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(18:15:35.951,+31:26:41.86,18:15:34.390,+31:26:58.85) # line=1 1 color=cyan text={Line}
-# vector(18:15:33.505,+31:26:49.20,13.32",44.9398) vector=1 color=red text={Vector}
-# text(18:15:32.074,+31:26:44.54) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(18:15:39.125,+31:26:04.89,18:15:37.460,+31:26:24.54) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(18:15:44.875,+31:26:15.50,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(18:15:42.663,+31:26:14.19,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(18:15:40.400,+31:26:13.87,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
-point(18:15:45.056,+31:25:44.53) # point=circle text={Circle Point}
-point(18:15:42.740,+31:25:43.89) # point=box color=red width=3 text={Box Point}
-point(18:15:40.633,+31:25:44.56) # point=diamond text={Diamond Point}
-point(18:15:44.665,+31:25:28.22) # point=cross color=blue text={Cross Point}
-point(18:15:42.688,+31:25:28.57) # point=x text={X Point}
-point(18:15:40.684,+31:25:27.58) # point=arrow color=magenta text={Arrow Point}
-point(18:15:42.635,+31:25:11.25) # point=boxcircle text={BoxCircle Point}
-# projection(18:15:36.419,+31:26:01.57,18:15:33.999,+31:26:23.55,6.66") text={Projection}
-panda(18:15:38.057,+31:25:44.58,359.94,629.94,3,0",9.99",2) # text={Panda}
-panda(18:15:38.004,+31:25:14.28,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
-panda(18:15:38.004,+31:25:14.28,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
-panda(18:15:38.004,+31:25:14.28,89.9398,179.94,1,0",4.995",1) # panda=ignore
-panda(18:15:38.004,+31:25:14.28,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
-panda(18:15:38.004,+31:25:14.28,179.94,269.94,1,0",4.995",1) # panda=ignore
-panda(18:15:38.004,+31:25:14.28,179.94,269.94,1,4.995",9.99",1) # panda=ignore
-# compass(18:15:33.244,+31:26:08.57,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(18:15:35.924,+31:25:41.92,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
-epanda(18:15:35.845,+31:25:12.29,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
-epanda(18:15:35.845,+31:25:12.29,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-epanda(18:15:35.845,+31:25:12.29,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
-bpanda(18:15:33.660,+31:25:41.93,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
-bpanda(18:15:33.764,+31:25:12.63,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
-bpanda(18:15:33.764,+31:25:12.63,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-bpanda(18:15:33.764,+31:25:12.63,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
-# circle3d(18:15:31.397,+31:25:30.95,3.33") text={Circle3d}
+circle(18:15:25.154,+31:24:12.69,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(18:15:23.021,+31:24:07.03,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(18:15:20.680,+31:24:06.35,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(18:15:18.879,+31:24:10.01,18:15:17.897,+31:24:22.57,18:15:16.915,+31:24:10.00,18:15:17.897,+31:23:57.43) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(18:15:16.233,+31:24:01.67,18:15:14.671,+31:24:18.64) # line=1 1 color=cyan text={Line}
+# vector(18:15:13.787,+31:24:08.98,13.32",44.9398) vector=1 color=red text={Vector}
+# text(18:15:12.357,+31:24:04.31) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(18:15:19.407,+31:23:24.72,18:15:17.742,+31:23:44.36) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(18:15:25.154,+31:23:35.39,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(18:15:22.943,+31:23:34.06,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(18:15:20.681,+31:23:33.72,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
+point(18:15:25.336,+31:23:04.43) # point=circle text={Circle Point}
+point(18:15:23.022,+31:23:03.76) # point=box color=red width=3 text={Box Point}
+point(18:15:20.915,+31:23:04.41) # point=diamond text={Diamond Point}
+point(18:15:24.946,+31:22:48.11) # point=cross color=blue text={Cross Point}
+point(18:15:22.970,+31:22:48.44) # point=x text={X Point}
+point(18:15:20.968,+31:22:47.43) # point=arrow color=magenta text={Arrow Point}
+point(18:15:22.918,+31:22:31.12) # point=boxcircle text={BoxCircle Point}
+# projection(18:15:16.702,+31:23:21.38,18:15:14.283,+31:23:43.34,6.66") text={Projection}
+panda(18:15:18.341,+31:23:04.40,359.94,629.94,3,0",9.99",2) # text={Panda}
+panda(18:15:18.290,+31:22:34.10,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
+panda(18:15:18.290,+31:22:34.10,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
+panda(18:15:18.290,+31:22:34.10,89.9398,179.94,1,0",4.995",1) # panda=ignore
+panda(18:15:18.290,+31:22:34.10,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
+panda(18:15:18.290,+31:22:34.10,179.94,269.94,1,0",4.995",1) # panda=ignore
+panda(18:15:18.290,+31:22:34.10,179.94,269.94,1,4.995",9.99",1) # panda=ignore
+# compass(18:15:13.529,+31:23:28.35,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(18:15:16.209,+31:23:01.73,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
+epanda(18:15:16.132,+31:22:32.09,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
+epanda(18:15:16.132,+31:22:32.09,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+epanda(18:15:16.132,+31:22:32.09,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+bpanda(18:15:13.946,+31:23:01.71,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
+bpanda(18:15:14.052,+31:22:32.41,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
+bpanda(18:15:14.052,+31:22:32.41,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
+bpanda(18:15:14.052,+31:22:32.41,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
+circle(18:15:45.033,+31:26:56.46,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(18:15:42.899,+31:26:50.82,13.32",6.66",44.9398) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(18:15:40.557,+31:26:50.17,26.64",13.32",44.9398) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(18:15:38.755,+31:26:53.84,18:15:37.773,+31:27:06.42,18:15:36.790,+31:26:53.85,18:15:37.773,+31:26:41.27) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(18:15:36.107,+31:26:45.53,18:15:34.546,+31:27:02.51) # line=1 1 color=cyan text={Line}
+# vector(18:15:33.661,+31:26:52.86,13.32",44.9398) vector=1 color=red text={Vector}
+# text(18:15:32.230,+31:26:48.20) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(18:15:39.281,+31:26:08.55,18:15:37.616,+31:26:28.20) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(18:15:45.031,+31:26:19.17,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(18:15:42.820,+31:26:17.85,4.995",2.4975",9.99",4.995",44.9398) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(18:15:40.556,+31:26:17.53,13.32",6.66",19.98",9.99",44.9398) # font="helvetica 10 bold roman" text={Box Annulus}
+point(18:15:45.212,+31:25:48.20) # point=circle text={Circle Point}
+point(18:15:42.896,+31:25:47.55) # point=box color=red width=3 text={Box Point}
+point(18:15:40.789,+31:25:48.23) # point=diamond text={Diamond Point}
+point(18:15:44.821,+31:25:31.88) # point=cross color=blue text={Cross Point}
+point(18:15:42.844,+31:25:32.23) # point=x text={X Point}
+point(18:15:40.841,+31:25:31.24) # point=arrow color=magenta text={Arrow Point}
+point(18:15:42.791,+31:25:14.91) # point=boxcircle text={BoxCircle Point}
+# projection(18:15:36.575,+31:26:05.23,18:15:34.155,+31:26:27.22,6.66") text={Projection}
+panda(18:15:38.213,+31:25:48.24,359.94,629.94,3,0",9.99",2) # text={Panda}
+panda(18:15:38.160,+31:25:17.94,51.5217,89.9398,1,0",4.995",1) # panda=(51.5217 89.9398 179.94 269.94)(0" 4.995" 9.99") text={Panda 2}
+panda(18:15:38.160,+31:25:17.94,51.5217,89.9398,1,4.995",9.99",1) # panda=ignore
+panda(18:15:38.160,+31:25:17.94,89.9398,179.94,1,0",4.995",1) # panda=ignore
+panda(18:15:38.160,+31:25:17.94,89.9398,179.94,1,4.995",9.99",1) # panda=ignore
+panda(18:15:38.160,+31:25:17.94,179.94,269.94,1,0",4.995",1) # panda=ignore
+panda(18:15:38.160,+31:25:17.94,179.94,269.94,1,4.995",9.99",1) # panda=ignore
+# compass(18:15:33.401,+31:26:12.23,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(18:15:36.080,+31:25:45.59,359.94,629.94,3,4.995",2.4975",9.99",4.995",1,44.9398) # text={Epanda}
+epanda(18:15:36.001,+31:25:15.95,44.9398,89.9398,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=(44.9398 89.9398 179.94 269.94)(4.995" 2.4975" 9.99" 4.995")(44.9398) text={Epanda 2}
+epanda(18:15:36.001,+31:25:15.95,89.9398,179.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+epanda(18:15:36.001,+31:25:15.95,179.94,269.94,1,4.995",2.4975",9.99",4.995",1,44.9398) # epanda=ignore
+bpanda(18:15:33.816,+31:25:45.59,359.94,629.94,3,13.32",6.66",19.98",9.99",1,44.9398) # text={Bpanda}
+bpanda(18:15:33.920,+31:25:16.29,44.9398,89.9398,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=(44.9398 89.9398 179.94 269.94)(13.32" 6.66" 19.98" 9.99")(44.9398) text={Bpanda 2}
+bpanda(18:15:33.920,+31:25:16.29,89.9398,179.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
+bpanda(18:15:33.920,+31:25:16.29,179.94,269.94,1,13.32",6.66",19.98",9.99",1,44.9398) # bpanda=ignore
diff --git a/tests/ds9.mosaic.icrs.reg b/tests/ds9.mosaic.icrs.reg
index eb8d1c0..b778f20 100644
--- a/tests/ds9.mosaic.icrs.reg
+++ b/tests/ds9.mosaic.icrs.reg
@@ -2,75 +2,73 @@
 # Filename: mosaicimage.fits[IM1]
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 icrs
-circle(273.85242,31.402877,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(273.84354,31.401303,13.32",6.66",44.939786) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(273.83378,31.401116,26.64",13.32",44.939786) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(273.82628,31.402132,273.82218,31.405622,273.8181,31.402129,273.82219,31.398638) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(273.81525,31.399815,273.80875,31.40453) # line=1 1 color=cyan text={Line}
-# vector(273.80506,31.401845,13.32",44.939786) vector=1 color=red text={Vector}
-# text(273.7991,31.400547) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(273.82848,31.389552,273.82154,31.395007) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(273.85242,31.392517,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(273.84321,31.392146,4.995",2.4975",9.99",4.995",44.939786) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(273.83379,31.392051,13.32",6.66",19.98",9.99",44.939786) # font="helvetica 10 bold roman" text={Box Annulus}
-point(273.85318,31.383915) # point=circle text={Circle Point}
-point(273.84354,31.383728) # point=box color=red width=3 text={Box Point}
-point(273.83476,31.383912) # point=diamond text={Diamond Point}
-point(273.85156,31.379382) # point=cross color=blue text={Cross Point}
-point(273.84333,31.379473) # point=x text={X Point}
-point(273.83498,31.379194) # point=arrow color=magenta text={Arrow Point}
-point(273.84311,31.374663) # point=boxcircle text={BoxCircle Point}
-# projection(273.81721,31.388623,273.80713,31.394724,6.66") text={Projection}
-panda(273.82404,31.383908,359.93979,629.93979,3,0",9.99",2) # text={Panda}
-panda(273.82382,31.375491,51.521686,89.939786,1,0",4.995",1) # panda=(51.521686 89.939786 179.93979 269.93979)(0" 4.995" 9.99") text={Panda 2}
-panda(273.82382,31.375491,51.521686,89.939786,1,4.995",9.99",1) # panda=ignore
-panda(273.82382,31.375491,89.939786,179.93979,1,0",4.995",1) # panda=ignore
-panda(273.82382,31.375491,89.939786,179.93979,1,4.995",9.99",1) # panda=ignore
-panda(273.82382,31.375491,179.93979,269.93979,1,0",4.995",1) # panda=ignore
-panda(273.82382,31.375491,179.93979,269.93979,1,4.995",9.99",1) # panda=ignore
-# compass(273.80399,31.39056,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(273.81515,31.383165,359.93979,629.93979,3,4.995",2.4975",9.99",4.995",1,44.939786) # text={Epanda}
-epanda(273.81483,31.374932,44.939786,89.939786,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=(44.939786 89.939786 179.93979 269.93979)(4.995" 2.4975" 9.99" 4.995")(44.939786) text={Epanda 2}
-epanda(273.81483,31.374932,89.939786,179.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
-epanda(273.81483,31.374932,179.93979,269.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
-bpanda(273.80573,31.383161,359.93979,629.93979,3,13.32",6.66",19.98",9.99",1,44.939786) # text={Bpanda}
-bpanda(273.80617,31.375021,44.939786,89.939786,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=(44.939786 89.939786 179.93979 269.93979)(13.32" 6.66" 19.98" 9.99")(44.939786) text={Bpanda 2}
-bpanda(273.80617,31.375021,89.939786,179.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
-bpanda(273.80617,31.375021,179.93979,269.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
-# circle3d(273.7963,31.380103,3.33") text={Circle3d}
-circle(273.93699,31.448,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(273.9281,31.446432,13.32",6.66",44.939786) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(273.91834,31.446251,26.64",13.32",44.939786) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(273.91083,31.447271,273.90674,31.450765,273.90264,31.447274,273.90673,31.44378) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(273.8998,31.444962,273.89329,31.449681) # line=1 1 color=cyan text={Line}
-# vector(273.8896,31.446999,13.32",44.939786) vector=1 color=red text={Vector}
-# text(273.88364,31.445705) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(273.91302,31.434691,273.90608,31.44015) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(273.93698,31.43764,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(273.92776,31.437275,4.995",2.4975",9.99",4.995",44.939786) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(273.91833,31.437186,13.32",6.66",19.98",9.99",44.939786) # font="helvetica 10 bold roman" text={Box Annulus}
-point(273.93773,31.429037) # point=circle text={Circle Point}
-point(273.92808,31.428857) # point=box color=red width=3 text={Box Point}
-point(273.9193,31.429046) # point=diamond text={Diamond Point}
-point(273.9361,31.424505) # point=cross color=blue text={Cross Point}
-point(273.92786,31.424602) # point=x text={X Point}
-point(273.91952,31.424328) # point=arrow color=magenta text={Arrow Point}
-point(273.92764,31.419792) # point=boxcircle text={BoxCircle Point}
-# projection(273.90174,31.433769,273.89166,31.439876,6.66") text={Projection}
-panda(273.90857,31.42905,359.93979,629.93979,3,0",9.99",2) # text={Panda}
-panda(273.90835,31.420632,51.521686,89.939786,1,0",4.995",1) # panda=(51.521686 89.939786 179.93979 269.93979)(0" 4.995" 9.99") text={Panda 2}
-panda(273.90835,31.420632,51.521686,89.939786,1,4.995",9.99",1) # panda=ignore
-panda(273.90835,31.420632,89.939786,179.93979,1,0",4.995",1) # panda=ignore
-panda(273.90835,31.420632,89.939786,179.93979,1,4.995",9.99",1) # panda=ignore
-panda(273.90835,31.420632,179.93979,269.93979,1,0",4.995",1) # panda=ignore
-panda(273.90835,31.420632,179.93979,269.93979,1,4.995",9.99",1) # panda=ignore
-# compass(273.88852,31.435714,13.32") compass=physical {N} {E} 1 1 text={Compass}
-epanda(273.89968,31.428312,359.93979,629.93979,3,4.995",2.4975",9.99",4.995",1,44.939786) # text={Epanda}
-epanda(273.89935,31.42008,44.939786,89.939786,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=(44.939786 89.939786 179.93979 269.93979)(4.995" 2.4975" 9.99" 4.995")(44.939786) text={Epanda 2}
-epanda(273.89935,31.42008,89.939786,179.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
-epanda(273.89935,31.42008,179.93979,269.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
-bpanda(273.89025,31.428314,359.93979,629.93979,3,13.32",6.66",19.98",9.99",1,44.939786) # text={Bpanda}
-bpanda(273.89068,31.420174,44.939786,89.939786,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=(44.939786 89.939786 179.93979 269.93979)(13.32" 6.66" 19.98" 9.99")(44.939786) text={Bpanda 2}
-bpanda(273.89068,31.420174,89.939786,179.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
-bpanda(273.89068,31.420174,179.93979,269.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
-# circle3d(273.88082,31.425263,3.33") text={Circle3d}
+circle(273.85481,31.403525,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(273.84592,31.401951,13.32",6.66",44.939786) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(273.83617,31.401764,26.64",13.32",44.939786) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(273.82866,31.40278,273.82457,31.406271,273.82048,31.402777,273.82457,31.399286) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(273.81764,31.400463,273.81113,31.405178) # line=1 1 color=cyan text={Line}
+# vector(273.80745,31.402494,13.32",44.939786) vector=1 color=red text={Vector}
+# text(273.80149,31.401196) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(273.83086,31.3902,273.82392,31.395656) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(273.85481,31.393165,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(273.8456,31.392794,4.995",2.4975",9.99",4.995",44.939786) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(273.83617,31.392699,13.32",6.66",19.98",9.99",44.939786) # font="helvetica 10 bold roman" text={Box Annulus}
+point(273.85557,31.384563) # point=circle text={Circle Point}
+point(273.84592,31.384376) # point=box color=red width=3 text={Box Point}
+point(273.83715,31.38456) # point=diamond text={Diamond Point}
+point(273.85394,31.38003) # point=cross color=blue text={Cross Point}
+point(273.84571,31.380121) # point=x text={X Point}
+point(273.83737,31.379842) # point=arrow color=magenta text={Arrow Point}
+point(273.84549,31.375311) # point=boxcircle text={BoxCircle Point}
+# projection(273.81959,31.389272,273.80951,31.395372,6.66") text={Projection}
+panda(273.82642,31.384557,359.93979,629.93979,3,0",9.99",2) # text={Panda}
+panda(273.82621,31.376139,51.521686,89.939786,1,0",4.995",1) # panda=(51.521686 89.939786 179.93979 269.93979)(0" 4.995" 9.99") text={Panda 2}
+panda(273.82621,31.376139,51.521686,89.939786,1,4.995",9.99",1) # panda=ignore
+panda(273.82621,31.376139,89.939786,179.93979,1,0",4.995",1) # panda=ignore
+panda(273.82621,31.376139,89.939786,179.93979,1,4.995",9.99",1) # panda=ignore
+panda(273.82621,31.376139,179.93979,269.93979,1,0",4.995",1) # panda=ignore
+panda(273.82621,31.376139,179.93979,269.93979,1,4.995",9.99",1) # panda=ignore
+# compass(273.80637,31.391209,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(273.81754,31.383813,359.93979,629.93979,3,4.995",2.4975",9.99",4.995",1,44.939786) # text={Epanda}
+epanda(273.81722,31.375581,44.939786,89.939786,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=(44.939786 89.939786 179.93979 269.93979)(4.995" 2.4975" 9.99" 4.995")(44.939786) text={Epanda 2}
+epanda(273.81722,31.375581,89.939786,179.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
+epanda(273.81722,31.375581,179.93979,269.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
+bpanda(273.80811,31.383809,359.93979,629.93979,3,13.32",6.66",19.98",9.99",1,44.939786) # text={Bpanda}
+bpanda(273.80855,31.37567,44.939786,89.939786,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=(44.939786 89.939786 179.93979 269.93979)(13.32" 6.66" 19.98" 9.99")(44.939786) text={Bpanda 2}
+bpanda(273.80855,31.37567,89.939786,179.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
+bpanda(273.80855,31.37567,179.93979,269.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
+circle(273.93764,31.449017,6.66") # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(273.92875,31.447449,13.32",6.66",44.939786) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(273.91899,31.447268,26.64",13.32",44.939786) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(273.91148,31.448289,273.90739,31.451782,273.90329,31.448291,273.90739,31.444798) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(273.90045,31.445979,273.89394,31.450698) # line=1 1 color=cyan text={Line}
+# vector(273.89026,31.448016,13.32",44.939786) vector=1 color=red text={Vector}
+# text(273.88429,31.446722) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(273.91367,31.435708,273.90673,31.441168) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(273.93763,31.438657,3.33",6.66",9.99") # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(273.92842,31.438292,4.995",2.4975",9.99",4.995",44.939786) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(273.91898,31.438203,13.32",6.66",19.98",9.99",44.939786) # font="helvetica 10 bold roman" text={Box Annulus}
+point(273.93838,31.430054) # point=circle text={Circle Point}
+point(273.92874,31.429874) # point=box color=red width=3 text={Box Point}
+point(273.91995,31.430063) # point=diamond text={Diamond Point}
+point(273.93675,31.425523) # point=cross color=blue text={Cross Point}
+point(273.92852,31.425619) # point=x text={X Point}
+point(273.92017,31.425345) # point=arrow color=magenta text={Arrow Point}
+point(273.9283,31.420809) # point=boxcircle text={BoxCircle Point}
+# projection(273.90239,31.434786,273.89231,31.440894,6.66") text={Projection}
+panda(273.90922,31.430067,359.93979,629.93979,3,0",9.99",2) # text={Panda}
+panda(273.909,31.421649,51.521686,89.939786,1,0",4.995",1) # panda=(51.521686 89.939786 179.93979 269.93979)(0" 4.995" 9.99") text={Panda 2}
+panda(273.909,31.421649,51.521686,89.939786,1,4.995",9.99",1) # panda=ignore
+panda(273.909,31.421649,89.939786,179.93979,1,0",4.995",1) # panda=ignore
+panda(273.909,31.421649,89.939786,179.93979,1,4.995",9.99",1) # panda=ignore
+panda(273.909,31.421649,179.93979,269.93979,1,0",4.995",1) # panda=ignore
+panda(273.909,31.421649,179.93979,269.93979,1,4.995",9.99",1) # panda=ignore
+# compass(273.88917,31.436732,13.32") compass=physical {N} {E} 1 1 text={Compass}
+epanda(273.90033,31.429329,359.93979,629.93979,3,4.995",2.4975",9.99",4.995",1,44.939786) # text={Epanda}
+epanda(273.9,31.421097,44.939786,89.939786,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=(44.939786 89.939786 179.93979 269.93979)(4.995" 2.4975" 9.99" 4.995")(44.939786) text={Epanda 2}
+epanda(273.9,31.421097,89.939786,179.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
+epanda(273.9,31.421097,179.93979,269.93979,1,4.995",2.4975",9.99",4.995",1,44.939786) # epanda=ignore
+bpanda(273.8909,31.429331,359.93979,629.93979,3,13.32",6.66",19.98",9.99",1,44.939786) # text={Bpanda}
+bpanda(273.89133,31.421191,44.939786,89.939786,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=(44.939786 89.939786 179.93979 269.93979)(13.32" 6.66" 19.98" 9.99")(44.939786) text={Bpanda 2}
+bpanda(273.89133,31.421191,89.939786,179.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
+bpanda(273.89133,31.421191,179.93979,269.93979,1,13.32",6.66",19.98",9.99",1,44.939786) # bpanda=ignore
diff --git a/tests/ds9.mosaic.image.reg b/tests/ds9.mosaic.image.reg
index f6e1053..1ffe35d 100644
--- a/tests/ds9.mosaic.image.reg
+++ b/tests/ds9.mosaic.image.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 image
 # tile 1
-circle(119,1956,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(97,1963,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 1
--ellipse(201,1939,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(179,1946,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 1
--box(291,1937,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(269,1944,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 1
-polygon(360.24723,1948,398,1985.7528,435.75277,1948,398,1910.2472) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(338.24723,1955,376,1992.7528,413.75277,1955,376,1917.2472) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 1
--line(462,1923,522,1974) # line=1 1 color=cyan text={Line}
+-line(440,1930,500,1981) # line=1 1 color=cyan text={Line}
 # tile 1
-# vector(556,1945,40,45) vector=1 color=red text={Vector}
+# vector(534,1952,40,45) vector=1 color=red text={Vector}
 # tile 1
-# text(611,1931) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(589,1938) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 1
-# ruler(340,1812,404,1871) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(318,1819,382,1878) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 1
-annulus(119,1844,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(97,1851,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 1
-ellipse(204,1840,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(182,1847,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 1
-box(291,1839,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
+box(269,1846,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 1
-point(112,1751) # point=circle text={Circle Point}
+point(90,1758) # point=circle text={Circle Point}
 # tile 1
-point(201,1749) # point=box color=red width=3 text={Box Point}
+point(179,1756) # point=box color=red width=3 text={Box Point}
 # tile 1
-point(282,1751) # point=diamond text={Diamond Point}
+point(260,1758) # point=diamond text={Diamond Point}
 # tile 1
-point(127,1702) # point=cross color=blue text={Cross Point}
+point(105,1709) # point=cross color=blue text={Cross Point}
 # tile 1
-point(203,1703) # point=x text={X Point}
+point(181,1710) # point=x text={X Point}
 # tile 1
-point(280,1700) # point=arrow color=magenta text={Arrow Point}
+point(258,1707) # point=arrow color=magenta text={Arrow Point}
 # tile 1
-point(205,1651) # point=boxcircle text={BoxCircle Point}
+point(183,1658) # point=boxcircle text={BoxCircle Point}
 # tile 1
-# projection(444,1802,537,1868,20) text={Projection}
+# projection(422,1809,515,1875,20) text={Projection}
 # tile 1
-panda(381,1751,0,270,3,0,30,2) # text={Panda}
+panda(359,1758,0,270,3,0,30,2) # text={Panda}
 # tile 1
-panda(383,1660,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
+panda(361,1667,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
 # tile 1
-panda(383,1660,51.5819,90,1,15,30,1) # panda=ignore
+panda(361,1667,51.5819,90,1,15,30,1) # panda=ignore
 # tile 1
-panda(383,1660,90,180,1,0,15,1) # panda=ignore
+panda(361,1667,90,180,1,0,15,1) # panda=ignore
 # tile 1
-panda(383,1660,90,180,1,15,30,1) # panda=ignore
+panda(361,1667,90,180,1,15,30,1) # panda=ignore
 # tile 1
-panda(383,1660,180,270,1,0,15,1) # panda=ignore
+panda(361,1667,180,270,1,0,15,1) # panda=ignore
 # tile 1
-panda(383,1660,180,270,1,15,30,1) # panda=ignore
+panda(361,1667,180,270,1,15,30,1) # panda=ignore
 # tile 1
-# compass(566,1823,40) compass=physical {N} {E} 1 1 text={Compass}
+# compass(544,1830,40) compass=physical {N} {E} 1 1 text={Compass}
 # tile 1
-epanda(463,1743,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
+epanda(441,1750,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
 # tile 1
-epanda(466,1654,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
+epanda(444,1661,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
 # tile 1
-epanda(466,1654,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(444,1661,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 1
-epanda(466,1654,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(444,1661,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 1
-bpanda(550,1743,0,270,3,40,20,60,30,1,45) # text={Bpanda}
+bpanda(528,1750,0,270,3,40,20,60,30,1,45) # text={Bpanda}
 # tile 1
-bpanda(546,1655,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
+bpanda(524,1662,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
 # tile 1
-bpanda(546,1655,90,180,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(524,1662,90,180,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 1
-bpanda(546,1655,180,270,1,40,20,60,30,1,45) # bpanda=ignore
-# tile 1
-# circle3d(637,1710,10) text={Circle3d}
-# tile 3
-circle(1471,352,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+bpanda(524,1662,180,270,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 3
--ellipse(1553,335,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+circle(1465,363,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 3
--box(1643,333,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+-ellipse(1547,346,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 3
-polygon(1712.2472,344,1750,381.75275,1787.7528,344,1750,306.24723) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-box(1637,344,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 3
--line(1814,319,1874,370) # line=1 1 color=cyan text={Line}
+polygon(1706.2472,355,1744,392.75275,1781.7528,355,1744,317.24723) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 3
-# vector(1908,341,40,45) vector=1 color=red text={Vector}
+-line(1808,330,1868,381) # line=1 1 color=cyan text={Line}
 # tile 3
-# text(1963,327) color=magenta font="helvetica 14 bold roman" text={Region}
+# vector(1902,352,40,45) vector=1 color=red text={Vector}
 # tile 3
-# ruler(1692,208,1756,267) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# text(1957,338) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 3
-annulus(1471,240,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(1686,219,1750,278) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 3
-ellipse(1556,236,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(1465,251,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 3
-box(1643,235,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(1550,247,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 3
-point(1464,147) # point=circle text={Circle Point}
+box(1637,246,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 3
-point(1553,145) # point=box color=red width=3 text={Box Point}
+point(1458,158) # point=circle text={Circle Point}
 # tile 3
-point(1634,147) # point=diamond text={Diamond Point}
+point(1547,156) # point=box color=red width=3 text={Box Point}
 # tile 3
-point(1479,98) # point=cross color=blue text={Cross Point}
+point(1628,158) # point=diamond text={Diamond Point}
 # tile 3
-point(1555,99) # point=x text={X Point}
+point(1473,109) # point=cross color=blue text={Cross Point}
 # tile 3
-point(1632,96) # point=arrow color=magenta text={Arrow Point}
+point(1549,110) # point=x text={X Point}
 # tile 3
-point(1557,47) # point=boxcircle text={BoxCircle Point}
+point(1626,107) # point=arrow color=magenta text={Arrow Point}
 # tile 3
-# projection(1796,198,1889,264,20) text={Projection}
+point(1551,58) # point=boxcircle text={BoxCircle Point}
 # tile 3
-panda(1733,147,0,270,3,0,30,2) # text={Panda}
+# projection(1790,209,1883,275,20) text={Projection}
 # tile 3
-panda(1735,56,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
+panda(1727,158,0,270,3,0,30,2) # text={Panda}
 # tile 3
-panda(1735,56,51.5819,90,1,15,30,1) # panda=ignore
+panda(1729,67,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
 # tile 3
-panda(1735,56,90,180,1,0,15,1) # panda=ignore
+panda(1729,67,51.5819,90,1,15,30,1) # panda=ignore
 # tile 3
-panda(1735,56,90,180,1,15,30,1) # panda=ignore
+panda(1729,67,90,180,1,0,15,1) # panda=ignore
 # tile 3
-panda(1735,56,180,270,1,0,15,1) # panda=ignore
+panda(1729,67,90,180,1,15,30,1) # panda=ignore
 # tile 3
-panda(1735,56,180,270,1,15,30,1) # panda=ignore
+panda(1729,67,180,270,1,0,15,1) # panda=ignore
 # tile 3
-# compass(1918,219,40) compass=physical {N} {E} 1 1 text={Compass}
+panda(1729,67,180,270,1,15,30,1) # panda=ignore
 # tile 3
-epanda(1815,139,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
+# compass(1912,230,40) compass=physical {N} {E} 1 1 text={Compass}
 # tile 3
-epanda(1818,50,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
+epanda(1809,150,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
 # tile 3
-epanda(1818,50,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(1812,61,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
 # tile 3
-epanda(1818,50,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(1812,61,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 3
-bpanda(1902,139,0,270,3,40,20,60,30,1,45) # text={Bpanda}
+epanda(1812,61,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 3
-bpanda(1898,51,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
+bpanda(1896,150,0,270,3,40,20,60,30,1,45) # text={Bpanda}
 # tile 3
-bpanda(1898,51,90,180,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(1892,62,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
 # tile 3
-bpanda(1898,51,180,270,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(1892,62,90,180,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 3
-# circle3d(1989,106,10) text={Circle3d}
+bpanda(1892,62,180,270,1,40,20,60,30,1,45) # bpanda=ignore
diff --git a/tests/ds9.mosaic.physical.reg b/tests/ds9.mosaic.physical.reg
index 064498f..58f61fe 100644
--- a/tests/ds9.mosaic.physical.reg
+++ b/tests/ds9.mosaic.physical.reg
@@ -3,146 +3,142 @@
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 physical
 # tile 1
-circle(88,1956,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+circle(66,1963,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 1
--ellipse(170,1939,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-ellipse(148,1946,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 1
--box(260,1937,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+-box(238,1944,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 1
-polygon(329.24723,1948,367,1985.7528,404.75277,1948,367,1910.2472) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+polygon(307.24723,1955,345,1992.7528,382.75277,1955,345,1917.2472) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 1
--line(431,1923,491,1974) # line=1 1 color=cyan text={Line}
+-line(409,1930,469,1981) # line=1 1 color=cyan text={Line}
 # tile 1
-# vector(525,1945,40,45) vector=1 color=red text={Vector}
+# vector(503,1952,40,45) vector=1 color=red text={Vector}
 # tile 1
-# text(580,1931) color=magenta font="helvetica 14 bold roman" text={Region}
+# text(558,1938) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 1
-# ruler(309,1812,373,1871) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# ruler(287,1819,351,1878) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 1
-annulus(88,1844,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+annulus(66,1851,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 1
-ellipse(173,1840,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+ellipse(151,1847,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 1
-box(260,1839,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
+box(238,1846,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 1
-point(81,1751) # point=circle text={Circle Point}
+point(59,1758) # point=circle text={Circle Point}
 # tile 1
-point(170,1749) # point=box color=red width=3 text={Box Point}
+point(148,1756) # point=box color=red width=3 text={Box Point}
 # tile 1
-point(251,1751) # point=diamond text={Diamond Point}
+point(229,1758) # point=diamond text={Diamond Point}
 # tile 1
-point(96,1702) # point=cross color=blue text={Cross Point}
+point(74,1709) # point=cross color=blue text={Cross Point}
 # tile 1
-point(172,1703) # point=x text={X Point}
+point(150,1710) # point=x text={X Point}
 # tile 1
-point(249,1700) # point=arrow color=magenta text={Arrow Point}
+point(227,1707) # point=arrow color=magenta text={Arrow Point}
 # tile 1
-point(174,1651) # point=boxcircle text={BoxCircle Point}
+point(152,1658) # point=boxcircle text={BoxCircle Point}
 # tile 1
-# projection(413,1802,506,1868,20) text={Projection}
+# projection(391,1809,484,1875,20) text={Projection}
 # tile 1
-panda(350,1751,0,270,3,0,30,2) # text={Panda}
+panda(328,1758,0,270,3,0,30,2) # text={Panda}
 # tile 1
-panda(352,1660,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
+panda(330,1667,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
 # tile 1
-panda(352,1660,51.5819,90,1,15,30,1) # panda=ignore
+panda(330,1667,51.5819,90,1,15,30,1) # panda=ignore
 # tile 1
-panda(352,1660,90,180,1,0,15,1) # panda=ignore
+panda(330,1667,90,180,1,0,15,1) # panda=ignore
 # tile 1
-panda(352,1660,90,180,1,15,30,1) # panda=ignore
+panda(330,1667,90,180,1,15,30,1) # panda=ignore
 # tile 1
-panda(352,1660,180,270,1,0,15,1) # panda=ignore
+panda(330,1667,180,270,1,0,15,1) # panda=ignore
 # tile 1
-panda(352,1660,180,270,1,15,30,1) # panda=ignore
+panda(330,1667,180,270,1,15,30,1) # panda=ignore
 # tile 1
-# compass(535,1823,40) compass=physical {N} {E} 1 1 text={Compass}
+# compass(513,1830,40) compass=physical {N} {E} 1 1 text={Compass}
 # tile 1
-epanda(432,1743,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
+epanda(410,1750,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
 # tile 1
-epanda(435,1654,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
+epanda(413,1661,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
 # tile 1
-epanda(435,1654,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(413,1661,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 1
-epanda(435,1654,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(413,1661,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 1
-bpanda(519,1743,0,270,3,40,20,60,30,1,45) # text={Bpanda}
+bpanda(497,1750,0,270,3,40,20,60,30,1,45) # text={Bpanda}
 # tile 1
-bpanda(515,1655,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
+bpanda(493,1662,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
 # tile 1
-bpanda(515,1655,90,180,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(493,1662,90,180,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 1
-bpanda(515,1655,180,270,1,40,20,60,30,1,45) # bpanda=ignore
-# tile 1
-# circle3d(606,1710,10) text={Circle3d}
-# tile 3
-circle(1470,336,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+bpanda(493,1662,180,270,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 3
--ellipse(1552,319,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+circle(1464,347,20) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
 # tile 3
--box(1642,317,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+-ellipse(1546,330,40,20,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
 # tile 3
-polygon(1711.2472,328,1749,365.75275,1786.7528,328,1749,290.24723) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-box(1636,328,80,40,45) # color=yellow font="helvetica 10 bold roman" text={Box}
 # tile 3
--line(1813,303,1873,354) # line=1 1 color=cyan text={Line}
+polygon(1705.2472,339,1743,376.75275,1780.7528,339,1743,301.24723) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
 # tile 3
-# vector(1907,325,40,45) vector=1 color=red text={Vector}
+-line(1807,314,1867,365) # line=1 1 color=cyan text={Line}
 # tile 3
-# text(1962,311) color=magenta font="helvetica 14 bold roman" text={Region}
+# vector(1901,336,40,45) vector=1 color=red text={Vector}
 # tile 3
-# ruler(1691,192,1755,251) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+# text(1956,322) color=magenta font="helvetica 14 bold roman" text={Region}
 # tile 3
-annulus(1470,224,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+# ruler(1685,203,1749,262) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
 # tile 3
-ellipse(1555,220,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+annulus(1464,235,10,20,30) # color=magenta font="helvetica 10 bold roman" text={Annulus}
 # tile 3
-box(1642,219,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
+ellipse(1549,231,15,7.5,30,15,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
 # tile 3
-point(1463,131) # point=circle text={Circle Point}
+box(1636,230,40,20,60,30,45) # font="helvetica 10 bold roman" text={Box Annulus}
 # tile 3
-point(1552,129) # point=box color=red width=3 text={Box Point}
+point(1457,142) # point=circle text={Circle Point}
 # tile 3
-point(1633,131) # point=diamond text={Diamond Point}
+point(1546,140) # point=box color=red width=3 text={Box Point}
 # tile 3
-point(1478,82) # point=cross color=blue text={Cross Point}
+point(1627,142) # point=diamond text={Diamond Point}
 # tile 3
-point(1554,83) # point=x text={X Point}
+point(1472,93) # point=cross color=blue text={Cross Point}
 # tile 3
-point(1631,80) # point=arrow color=magenta text={Arrow Point}
+point(1548,94) # point=x text={X Point}
 # tile 3
-point(1556,31) # point=boxcircle text={BoxCircle Point}
+point(1625,91) # point=arrow color=magenta text={Arrow Point}
 # tile 3
-# projection(1795,182,1888,248,20) text={Projection}
+point(1550,42) # point=boxcircle text={BoxCircle Point}
 # tile 3
-panda(1732,131,0,270,3,0,30,2) # text={Panda}
+# projection(1789,193,1882,259,20) text={Projection}
 # tile 3
-panda(1734,40,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
+panda(1726,142,0,270,3,0,30,2) # text={Panda}
 # tile 3
-panda(1734,40,51.5819,90,1,15,30,1) # panda=ignore
+panda(1728,51,51.5819,90,1,0,15,1) # panda=(51.5819 90 180 270)(0 15 30) text={Panda 2}
 # tile 3
-panda(1734,40,90,180,1,0,15,1) # panda=ignore
+panda(1728,51,51.5819,90,1,15,30,1) # panda=ignore
 # tile 3
-panda(1734,40,90,180,1,15,30,1) # panda=ignore
+panda(1728,51,90,180,1,0,15,1) # panda=ignore
 # tile 3
-panda(1734,40,180,270,1,0,15,1) # panda=ignore
+panda(1728,51,90,180,1,15,30,1) # panda=ignore
 # tile 3
-panda(1734,40,180,270,1,15,30,1) # panda=ignore
+panda(1728,51,180,270,1,0,15,1) # panda=ignore
 # tile 3
-# compass(1917,203,40) compass=physical {N} {E} 1 1 text={Compass}
+panda(1728,51,180,270,1,15,30,1) # panda=ignore
 # tile 3
-epanda(1814,123,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
+# compass(1911,214,40) compass=physical {N} {E} 1 1 text={Compass}
 # tile 3
-epanda(1817,34,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
+epanda(1808,134,0,270,3,15,7.5,30,15,1,45) # text={Epanda}
 # tile 3
-epanda(1817,34,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(1811,45,45,90,1,15,7.5,30,15,1,45) # epanda=(45 90 180 270)(15 7.5 30 15)(45) text={Epanda 2}
 # tile 3
-epanda(1817,34,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
+epanda(1811,45,90,180,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 3
-bpanda(1901,123,0,270,3,40,20,60,30,1,45) # text={Bpanda}
+epanda(1811,45,180,270,1,15,7.5,30,15,1,45) # epanda=ignore
 # tile 3
-bpanda(1897,35,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
+bpanda(1895,134,0,270,3,40,20,60,30,1,45) # text={Bpanda}
 # tile 3
-bpanda(1897,35,90,180,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(1891,46,45,90,1,40,20,60,30,1,45) # bpanda=(45 90 180 270)(40 20 60 30)(45) text={Bpanda 2}
 # tile 3
-bpanda(1897,35,180,270,1,40,20,60,30,1,45) # bpanda=ignore
+bpanda(1891,46,90,180,1,40,20,60,30,1,45) # bpanda=ignore
 # tile 3
-# circle3d(1988,90,10) text={Circle3d}
+bpanda(1891,46,180,270,1,40,20,60,30,1,45) # bpanda=ignore
diff --git a/tests/ds9.physical.reg b/tests/ds9.physical.reg
index bacd2ed..0c9e60a 100644
--- a/tests/ds9.physical.reg
+++ b/tests/ds9.physical.reg
@@ -2,39 +2,38 @@
 # Filename: img16.fits
 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1
 physical
-circle(325,1075,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
--ellipse(489,1041,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
--box(669,1037,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
-polygon(807.49446,1059,883,1134.5055,958.50554,1059,883,983.49446) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
--line(1011,1009,1131,1111) # line=1 1 color=cyan text={Line}
-# vector(1199,1053,80,45) vector=1 color=red text={Vector}
-# text(1309,1025) color=magenta font="helvetica 14 bold roman" text={Region}
-# ruler(767,787,895,905) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
-annulus(325,851,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
-ellipse(495,843,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
-box(669,841,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
-point(311,665) # point=circle text={Circle Point}
-point(489,661) # point=box color=red width=3 text={Box Point}
-point(651,665) # point=diamond text={Diamond Point}
-point(341,567) # point=cross color=blue text={Cross Point}
-point(493,569) # point=x text={X Point}
-point(647,563) # point=arrow color=magenta text={Arrow Point}
-point(497,465) # point=boxcircle text={BoxCircle Point}
-# projection(975,767,1161,899,40) text={Projection}
-panda(849,665,0,270,3,0,60,2) # text={Panda}
-panda(853,483,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
-panda(853,483,51.5819,90,1,30,60,1) # panda=ignore
-panda(853,483,90,180,1,0,30,1) # panda=ignore
-panda(853,483,90,180,1,30,60,1) # panda=ignore
-panda(853,483,180,270,1,0,30,1) # panda=ignore
-panda(853,483,180,270,1,30,60,1) # panda=ignore
-# compass(1219,809,80) compass=physical {N} {E} 1 1 text={Compass}
-epanda(1013,649,0,270,3,30,15,60,30,1,45) # text={Epanda}
-epanda(1019,471,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
-epanda(1019,471,90,180,1,30,15,60,30,1,45) # epanda=ignore
-epanda(1019,471,180,270,1,30,15,60,30,1,45) # epanda=ignore
-bpanda(1187,649,0,270,3,80,40,120,60,1,45) # text={Bpanda}
-bpanda(1179,473,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
-bpanda(1179,473,90,180,1,80,40,120,60,1,45) # bpanda=ignore
-bpanda(1179,473,180,270,1,80,40,120,60,1,45) # bpanda=ignore
-# circle3d(1361,583,20) text={Circle3d}
+circle(331,1091,40) # color=pink width=3 font="times 10 normal roman" text={Circle} tag={foo} tag={foo bar} This is a Comment
+-ellipse(495,1057,80,40,45) # color=#0ff font="helvetica 10 normal italic" text={Ellipse} background
+-box(675,1053,160,80,45) # color=yellow font="helvetica 10 bold roman" text={Box}
+polygon(813.49446,1075,889,1150.5055,964.50554,1075,889,999.49446) # font="courier 10 normal roman" text={Polygon} edit=0 rotate=0
+-line(1017,1025,1137,1127) # line=1 1 color=cyan text={Line}
+# vector(1205,1069,80,45) vector=1 color=red text={Vector}
+# text(1315,1041) color=magenta font="helvetica 14 bold roman" text={Region}
+# ruler(773,803,901,921) ruler=physical physical color=white font="helvetica 12 normal roman" text={Ruler}
+annulus(331,867,20,40,60) # color=magenta font="helvetica 10 bold roman" text={Annulus}
+ellipse(501,859,30,15,60,30,45) # color=red width=3 font="helvetica 10 bold roman" text={Ellipse Annulus}
+box(675,857,80,40,120,60,45) # font="helvetica 10 bold roman" text={Box Annulus}
+point(317,681) # point=circle text={Circle Point}
+point(495,677) # point=box color=red width=3 text={Box Point}
+point(657,681) # point=diamond text={Diamond Point}
+point(347,583) # point=cross color=blue text={Cross Point}
+point(499,585) # point=x text={X Point}
+point(653,579) # point=arrow color=magenta text={Arrow Point}
+point(503,481) # point=boxcircle text={BoxCircle Point}
+# projection(981,783,1167,915,40) text={Projection}
+panda(855,681,0,270,3,0,60,2) # text={Panda}
+panda(859,499,51.5819,90,1,0,30,1) # panda=(51.5819 90 180 270)(0 30 60) text={Panda 2}
+panda(859,499,51.5819,90,1,30,60,1) # panda=ignore
+panda(859,499,90,180,1,0,30,1) # panda=ignore
+panda(859,499,90,180,1,30,60,1) # panda=ignore
+panda(859,499,180,270,1,0,30,1) # panda=ignore
+panda(859,499,180,270,1,30,60,1) # panda=ignore
+# compass(1225,825,80) compass=physical {N} {E} 1 1 text={Compass}
+epanda(1019,665,0,270,3,30,15,60,30,1,45) # text={Epanda}
+epanda(1025,487,45,90,1,30,15,60,30,1,45) # epanda=(45 90 180 270)(30 15 60 30)(45) text={Epanda 2}
+epanda(1025,487,90,180,1,30,15,60,30,1,45) # epanda=ignore
+epanda(1025,487,180,270,1,30,15,60,30,1,45) # epanda=ignore
+bpanda(1193,665,0,270,3,80,40,120,60,1,45) # text={Bpanda}
+bpanda(1185,489,45,90,1,80,40,120,60,1,45) # bpanda=(45 90 180 270)(80 40 120 60)(45) text={Bpanda 2}
+bpanda(1185,489,90,180,1,80,40,120,60,1,45) # bpanda=ignore
+bpanda(1185,489,180,270,1,80,40,120,60,1,45) # bpanda=ignore
diff --git a/tests/ds9.physical.strip.reg b/tests/ds9.physical.strip.reg
index 9b12d05..9627440 100644
--- a/tests/ds9.physical.strip.reg
+++ b/tests/ds9.physical.strip.reg
@@ -1 +1 @@
-physical;circle(325,1075,40);-ellipse(489,1041,80,40,45);-box(669,1037,160,80,45);polygon(807.49446,1059,883,1134.5055,958.50554,1059,883,983.49446);-line(1011,1009,1131,1111);annulus(325,851,20,40,60);ellipse(495,843,30,15,60,30,45);box(669,841,80,40,120,60,45);point(311,665);point(489,661);point(651,665);point(341,567);point(493,569);point(647,563);point(497,465);panda(849,665,0,270,3,0,60,2);panda(853,483,51.5819,90,1,0,30,1);panda(853,483,51.5819,90,1,30,60,1);panda(853,483,90,180,1,0,30,1);panda(853,483,90,180,1,30,60,1);panda(853,483,180,270,1,0,30,1);panda(853,483,180,270,1,30,60,1);epanda(1013,649,0,270,3,30,15,60,30,1,45);epanda(1019,471,45,90,1,30,15,60,30,1,45);epanda(1019,471,90,180,1,30,15,60,30,1,45);epanda(1019,471,180,270,1,30,15,60,30,1,45);bpanda(1187,649,0,270,3,80,40,120,60,1,45);bpanda(1179,473,45,90,1,80,40,120,60,1,45);bpanda(1179,473,90,180,1,80,40,120,60,1,45);bpanda(1179,473,180,270,1,80,40,120,60,1,45);
\ No newline at end of file
+physical;circle(331,1091,40);-ellipse(495,1057,80,40,45);-box(675,1053,160,80,45);polygon(813.49446,1075,889,1150.5055,964.50554,1075,889,999.49446);-line(1017,1025,1137,1127);annulus(331,867,20,40,60);ellipse(501,859,30,15,60,30,45);box(675,857,80,40,120,60,45);point(317,681);point(495,677);point(657,681);point(347,583);point(499,585);point(653,579);point(503,481);panda(855,681,0,270,3,0,60,2);panda(859,499,51.5819,90,1,0,30,1);panda(859,499,51.5819,90,1,30,60,1);panda(859,499,90,180,1,0,30,1);panda(859,499,90,180,1,30,60,1);panda(859,499,180,270,1,0,30,1);panda(859,499,180,270,1,30,60,1);epanda(1019,665,0,270,3,30,15,60,30,1,45);epanda(1025,487,45,90,1,30,15,60,30,1,45);epanda(1025,487,90,180,1,30,15,60,30,1,45);epanda(1025,487,180,270,1,30,15,60,30,1,45);bpanda(1193,665,0,270,3,80,40,120,60,1,45);bpanda(1185,489,45,90,1,80,40,120,60,1,45);bpanda(1185,489,90,180,1,80,40,120,60,1,45);bpanda(1185,489,180,270,1,80,40,120,60,1,45);
\ No newline at end of file
diff --git a/tests/gzip.sh b/tests/gzip.sh
index d2ddf2f..a9a08d1 100755
--- a/tests/gzip.sh
+++ b/tests/gzip.sh
@@ -110,6 +110,13 @@ if [ $slow = "1" ]; then
 fi
 xpaset -p ds9 frame clear
 
+echo "..Bitpix = -32 quantize=0"
+xpaset -p ds9 file fits img-32q0.gzip.fz
+if [ $slow = "1" ]; then
+    sleep 1
+fi
+xpaset -p ds9 frame clear
+
 echo "..Bitpix = -64"
 xpaset -p ds9 file fits img-64.gzip.fz
 if [ $slow = "1" ]; then
diff --git a/tests/import.sh b/tests/import.sh
new file mode 100755
index 0000000..bb5c4b3
--- /dev/null
+++ b/tests/import.sh
@@ -0,0 +1,92 @@
+#! /bin/sh
+
+KillIt () {
+    i=1
+    while [ "$i" -le 15 ]; do
+      sleep 1
+      if [ `xpaaccess ds9` = yes ]; then
+	  if [ $slow = "1" ]; then
+	      sleep 1
+	  fi
+	  xpaset -p ds9 quit
+	  break
+      fi
+      
+      i=`expr $i + 1`
+    done
+}
+
+DoXPA () {
+    echo "$1"
+    xpaset -p ds9 image $2
+    if [ $slow = "1" ]; then
+	sleep 1
+    fi
+    xpaset -p ds9 frame clear
+}
+
+StartDS9 () {
+    if [ `xpaaccess ds9` = no ]; then
+	ds9&
+
+	i=1
+	while [ "$i" -le 30 ]
+	    do
+	    sleep 2
+	    if [ `xpaaccess ds9` = yes ]; then
+		break
+	    fi
+
+	    i=`expr $i + 1`
+	done
+    fi
+}
+
+# slow down?
+slow=0
+if [ "$1" = "slow" ]; then
+    slow=1
+    shift
+fi
+
+# Command Line
+
+if [ "$1" = "command" -o  -z "$1" ]; then
+echo "Testing Command Line File"
+
+echo "..base"
+ds9 -image rose.* &
+KillIt
+
+echo "..rgb"
+ds9 -rgb -image rose.* &
+KillIt
+
+echo "..3d"
+ds9 -3d -image rose.* &
+KillIt
+fi
+
+# XPA File
+if [ "$1" = "xpa" -o  -z "$1" ]; then
+echo "Testing XPA File"
+
+StartDS9
+
+DoXPA "..gif" rose.gif
+DoXPA "..jpg" rose.jpg
+DoXPA "..tif" rose.tif
+DoXPA "..tif256" rose256.tif
+DoXPA "..png" rose.png
+DoXPA "..ppm" rose.ppm
+
+DoXPA "..base" rose.tif
+xpaset -p ds9 rgb
+DoXPA "..rgb" rose.tif
+xpaset -p ds9 3d
+DoXPA "..3d" rose.tif
+xpaset -p ds9 quit
+echo "PASSED"
+fi
+
+echo "DONE"
diff --git a/tests/pros.ecliptic.hms.reg b/tests/pros.ecliptic.hms.reg
index bae6d00..61d77f9 100644
--- a/tests/pros.ecliptic.hms.reg
+++ b/tests/pros.ecliptic.hms.reg
@@ -1,16 +1,16 @@
-ecliptic; circle +175:06:47.329 50:57:10.157 3.964" 
-ecliptic; ellipse +175:06:47.329 50:56:53.559 7.928" 3.964" 45
-ecliptic; box +175:06:42.199 50:56:36.012 15.856" 7.928" 45
-ecliptic; polygon  +175:06:34.390 50:56:23.015 +175:06:20.354 50:56:17.207 +175:06:29.571 50:56:08.362 +175:06:43.608 50:56:14.170
-ecliptic; annulus +175:07:21.832 50:57:05.650 1.982" 3.964" 5.946"
-ecliptic; ellipse +175:07:17.633 50:56:48.993 2.973" 1.4865" 45
-ecliptic; ellipse +175:07:17.633 50:56:48.993 5.946" 2.973" 45 & !ellipse +175:07:17.633 50:56:48.993 2.973" 1.4865" 45
-ecliptic; box +175:07:12.383 50:56:32.069 7.928" 3.964" 45
-ecliptic; box +175:07:12.383 50:56:32.069 11.892" 5.946" 45 & !box +175:07:12.383 50:56:32.069 7.928" 3.964" 45
-ecliptic; point +175:07:50.928 50:57:03.264
-ecliptic; point +175:07:45.855 50:56:45.911
-ecliptic; point +175:07:40.062 50:56:30.273
-ecliptic; point +175:08:05.063 50:56:58.379
-ecliptic; point +175:07:59.895 50:56:43.670
-ecliptic; point +175:07:55.897 50:56:28.607
-ecliptic; point +175:08:15.784 50:56:41.187
+ecliptic; circle +175:06:44.609 50:57:09.897 3.964" 
+ecliptic; ellipse +175:06:44.610 50:56:53.299 7.928" 3.964" 45
+ecliptic; box +175:06:39.479 50:56:35.752 15.856" 7.928" 45
+ecliptic; polygon  +175:06:31.671 50:56:22.755 +175:06:17.634 50:56:16.946 +175:06:26.852 50:56:08.101 +175:06:40.888 50:56:13.910
+ecliptic; annulus +175:07:19.112 50:57:05.390 1.982" 3.964" 5.946"
+ecliptic; ellipse +175:07:14.913 50:56:48.733 2.973" 1.4865" 45
+ecliptic; ellipse +175:07:14.913 50:56:48.733 5.946" 2.973" 45 & !ellipse +175:07:14.913 50:56:48.733 2.973" 1.4865" 45
+ecliptic; box +175:07:09.664 50:56:31.809 7.928" 3.964" 45
+ecliptic; box +175:07:09.664 50:56:31.809 11.892" 5.946" 45 & !box +175:07:09.664 50:56:31.809 7.928" 3.964" 45
+ecliptic; point +175:07:48.208 50:57:03.004
+ecliptic; point +175:07:43.135 50:56:45.651
+ecliptic; point +175:07:37.342 50:56:30.013
+ecliptic; point +175:08:02.343 50:56:58.119
+ecliptic; point +175:07:57.176 50:56:43.411
+ecliptic; point +175:07:53.177 50:56:28.347
+ecliptic; point +175:08:13.064 50:56:40.927
diff --git a/tests/pros.ecliptic.reg b/tests/pros.ecliptic.reg
index 6dc8e2a..591cba2 100644
--- a/tests/pros.ecliptic.reg
+++ b/tests/pros.ecliptic.reg
@@ -1,16 +1,16 @@
-ecliptic; circle 175.11315d 50.952821d 3.9640007" 
-ecliptic; ellipse 175.11315d 50.948211d 7.9280014" 3.9640007" 45
-ecliptic; box 175.11172d 50.943337d 15.856003" 7.9280014" 45
-ecliptic; polygon 175.10955d 50.939727d 175.10565d 50.938113d 175.10821d 50.935656d 175.11211d 50.937269d 
-ecliptic; annulus 175.12273d 50.951569d 1.9820003" 3.9640007" 5.946001"
-ecliptic; ellipse 175.12156d 50.946943d 2.9730005" 1.4865003" 45
-ecliptic; ellipse 175.12156d 50.946943d 5.946001" 2.9730005" 45 & !ellipse 175.12156d 50.946943d 2.9730005" 1.4865003" 45
-ecliptic; box 175.12011d 50.942241d 7.9280014" 3.9640007" 45
-ecliptic; box 175.12011d 50.942241d 11.892002" 5.946001" 45 & !box 175.12011d 50.942241d 7.9280014" 3.9640007" 45
-ecliptic; point 175.13081d 50.950907d 
-ecliptic; point 175.1294d 50.946087d 
-ecliptic; point 175.12779d 50.941742d 
-ecliptic; point 175.13474d 50.94955d 
-ecliptic; point 175.1333d 50.945464d 
-ecliptic; point 175.13219d 50.94128d 
-ecliptic; point 175.13772d 50.944774d 
+ecliptic; circle 175.11239d 50.952749d 3.9640007" 
+ecliptic; ellipse 175.11239d 50.948139d 7.9280014" 3.9640007" 45
+ecliptic; box 175.11097d 50.943264d 15.856003" 7.9280014" 45
+ecliptic; polygon 175.1088d 50.939654d 175.1049d 50.938041d 175.10746d 50.935584d 175.11136d 50.937197d 
+ecliptic; annulus 175.12198d 50.951497d 1.9820003" 3.9640007" 5.946001"
+ecliptic; ellipse 175.12081d 50.94687d 2.9730005" 1.4865003" 45
+ecliptic; ellipse 175.12081d 50.94687d 5.946001" 2.9730005" 45 & !ellipse 175.12081d 50.94687d 2.9730005" 1.4865003" 45
+ecliptic; box 175.11935d 50.942169d 7.9280014" 3.9640007" 45
+ecliptic; box 175.11935d 50.942169d 11.892002" 5.946001" 45 & !box 175.11935d 50.942169d 7.9280014" 3.9640007" 45
+ecliptic; point 175.13006d 50.950834d 
+ecliptic; point 175.12865d 50.946014d 
+ecliptic; point 175.12704d 50.94167d 
+ecliptic; point 175.13398d 50.949478d 
+ecliptic; point 175.13255d 50.945392d 
+ecliptic; point 175.13144d 50.941207d 
+ecliptic; point 175.13696d 50.944702d 
diff --git a/tests/pros.fk4.hms.reg b/tests/pros.fk4.hms.reg
index 21ff79e..2249cfe 100644
--- a/tests/pros.fk4.hms.reg
+++ b/tests/pros.fk4.hms.reg
@@ -1,16 +1,16 @@
-b1950; circle 13:27:50.533 47:27:57.00 3.964" 
-b1950; ellipse 13:27:49.574 47:27:43.54 7.928" 3.964" 45
-b1950; box 13:27:48.303 47:27:31.21 15.856" 7.928" 45
-b1950; polygon  13:27:47.159 47:27:23.56 13:27:46.117 47:27:24.03 13:27:46.071 47:27:13.45 13:27:47.113 47:27:12.98
-b1950; annulus 13:27:52.010 47:27:40.61 1.982" 3.964" 5.946"
-b1950; ellipse 13:27:50.837 47:27:28.66 2.973" 1.4865" 45
-b1950; ellipse 13:27:50.837 47:27:28.66 5.946" 2.973" 45 & !ellipse 13:27:50.837 47:27:28.66 2.973" 1.4865" 45
-b1950; box 13:27:49.595 47:27:16.88 7.928" 3.964" 45
-b1950; box 13:27:49.595 47:27:16.88 11.892" 5.946" 45 & !box 13:27:49.595 47:27:16.88 7.928" 3.964" 45
-b1950; point 13:27:53.337 47:27:27.95
-b1950; point 13:27:52.080 47:27:15.75
-b1950; point 13:27:50.886 47:27:05.21
-b1950; point 13:27:53.767 47:27:18.77
-b1950; point 13:27:52.658 47:27:08.75
-b1950; point 13:27:51.587 47:26:58.02
-b1950; point 13:27:53.315 47:27:00.88
+b1950; circle 13:27:50.384 47:27:57.76 3.964" 
+b1950; ellipse 13:27:49.426 47:27:44.31 7.928" 3.964" 45
+b1950; box 13:27:48.154 47:27:31.98 15.856" 7.928" 45
+b1950; polygon  13:27:47.011 47:27:24.32 13:27:45.968 47:27:24.79 13:27:45.922 47:27:14.22 13:27:46.964 47:27:13.75
+b1950; annulus 13:27:51.861 47:27:41.38 1.982" 3.964" 5.946"
+b1950; ellipse 13:27:50.688 47:27:29.43 2.973" 1.4865" 45
+b1950; ellipse 13:27:50.688 47:27:29.43 5.946" 2.973" 45 & !ellipse 13:27:50.688 47:27:29.43 2.973" 1.4865" 45
+b1950; box 13:27:49.447 47:27:17.65 7.928" 3.964" 45
+b1950; box 13:27:49.447 47:27:17.65 11.892" 5.946" 45 & !box 13:27:49.447 47:27:17.65 7.928" 3.964" 45
+b1950; point 13:27:53.189 47:27:28.71
+b1950; point 13:27:51.931 47:27:16.52
+b1950; point 13:27:50.737 47:27:05.98
+b1950; point 13:27:53.618 47:27:19.54
+b1950; point 13:27:52.509 47:27:09.52
+b1950; point 13:27:51.438 47:26:58.79
+b1950; point 13:27:53.166 47:27:01.65
diff --git a/tests/pros.fk4.reg b/tests/pros.fk4.reg
index b0f3f7c..656b3bd 100644
--- a/tests/pros.fk4.reg
+++ b/tests/pros.fk4.reg
@@ -1,16 +1,16 @@
-b1950; circle 201.96055d 47.465832d 3.9640007" 
-b1950; ellipse 201.95656d 47.462095d 7.9280014" 3.9640007" 45
-b1950; box 201.95126d 47.458669d 15.856003" 7.9280014" 45
-b1950; polygon 201.9465d 47.456543d 201.94215d 47.456674d 201.94196d 47.453737d 201.9463d 47.453607d 
-b1950; annulus 201.96671d 47.461282d 1.9820003" 3.9640007" 5.946001"
-b1950; ellipse 201.96182d 47.457961d 2.9730005" 1.4865003" 45
-b1950; ellipse 201.96182d 47.457961d 5.946001" 2.9730005" 45 & !ellipse 201.96182d 47.457961d 2.9730005" 1.4865003" 45
-b1950; box 201.95665d 47.454688d 7.9280014" 3.9640007" 45
-b1950; box 201.95665d 47.454688d 11.892002" 5.946001" 45 & !box 201.95665d 47.454688d 7.9280014" 3.9640007" 45
-b1950; point 201.97224d 47.457763d 
-b1950; point 201.967d 47.454375d 
-b1950; point 201.96202d 47.451447d 
-b1950; point 201.97403d 47.455214d 
-b1950; point 201.96941d 47.452432d 
-b1950; point 201.96495d 47.449449d 
-b1950; point 201.97214d 47.450245d 
+b1950; circle 201.95993d 47.466046d 3.9640007" 
+b1950; ellipse 201.95594d 47.462308d 7.9280014" 3.9640007" 45
+b1950; box 201.95064d 47.458883d 15.856003" 7.9280014" 45
+b1950; polygon 201.94588d 47.456757d 201.94153d 47.456887d 201.94134d 47.453951d 201.94568d 47.45382d 
+b1950; annulus 201.96609d 47.461495d 1.9820003" 3.9640007" 5.946001"
+b1950; ellipse 201.9612d 47.458175d 2.9730005" 1.4865003" 45
+b1950; ellipse 201.9612d 47.458175d 5.946001" 2.9730005" 45 & !ellipse 201.9612d 47.458175d 2.9730005" 1.4865003" 45
+b1950; box 201.95603d 47.454902d 7.9280014" 3.9640007" 45
+b1950; box 201.95603d 47.454902d 11.892002" 5.946001" 45 & !box 201.95603d 47.454902d 7.9280014" 3.9640007" 45
+b1950; point 201.97162d 47.457976d 
+b1950; point 201.96638d 47.454589d 
+b1950; point 201.9614d 47.451661d 
+b1950; point 201.97341d 47.455428d 
+b1950; point 201.96879d 47.452645d 
+b1950; point 201.96433d 47.449663d 
+b1950; point 201.97152d 47.450458d 
diff --git a/tests/pros.fk5.hms.reg b/tests/pros.fk5.hms.reg
index 52fa56e..31089e3 100644
--- a/tests/pros.fk5.hms.reg
+++ b/tests/pros.fk5.hms.reg
@@ -1,16 +1,16 @@
-j2000; circle 13:29:56.891 47:12:29.65 3.964" 
-j2000; ellipse 13:29:55.941 47:12:16.17 7.928" 3.964" 45
-j2000; box 13:29:54.679 47:12:03.80 15.856" 7.928" 45
-j2000; polygon  13:29:53.543 47:11:56.12 13:29:52.505 47:11:56.56 13:29:52.462 47:11:45.99 13:29:53.499 47:11:45.55
-j2000; annulus 13:29:58.365 47:12:13.31 1.982" 3.964" 5.946"
-j2000; ellipse 13:29:57.201 47:12:01.32 2.973" 1.4865" 45
-j2000; ellipse 13:29:57.201 47:12:01.32 5.946" 2.973" 45 & !ellipse 13:29:57.201 47:12:01.32 2.973" 1.4865" 45
-j2000; box 13:29:55.969 47:11:49.51 7.928" 3.964" 45
-j2000; box 13:29:55.969 47:11:49.51 11.892" 5.946" 45 & !box 13:29:55.969 47:11:49.51 7.928" 3.964" 45
-j2000; point 13:29:59.689 47:12:00.68
-j2000; point 13:29:58.442 47:11:48.45
-j2000; point 13:29:57.256 47:11:37.88
-j2000; point 13:30:00.120 47:11:51.52
-j2000; point 13:29:59.018 47:11:41.47
-j2000; point 13:29:57.955 47:11:30.70
-j2000; point 13:29:59.674 47:11:33.61
+j2000; circle 13:29:56.743 47:12:30.42 3.964" 
+j2000; ellipse 13:29:55.792 47:12:16.94 7.928" 3.964" 45
+j2000; box 13:29:54.530 47:12:04.57 15.856" 7.928" 45
+j2000; polygon  13:29:53.394 47:11:56.88 13:29:52.357 47:11:57.32 13:29:52.314 47:11:46.75 13:29:53.351 47:11:46.31
+j2000; annulus 13:29:58.217 47:12:14.07 1.982" 3.964" 5.946"
+j2000; ellipse 13:29:57.053 47:12:02.09 2.973" 1.4865" 45
+j2000; ellipse 13:29:57.053 47:12:02.09 5.946" 2.973" 45 & !ellipse 13:29:57.053 47:12:02.09 2.973" 1.4865" 45
+j2000; box 13:29:55.820 47:11:50.27 7.928" 3.964" 45
+j2000; box 13:29:55.820 47:11:50.27 11.892" 5.946" 45 & !box 13:29:55.820 47:11:50.27 7.928" 3.964" 45
+j2000; point 13:29:59.541 47:12:01.44
+j2000; point 13:29:58.293 47:11:49.21
+j2000; point 13:29:57.107 47:11:38.64
+j2000; point 13:29:59.971 47:11:52.28
+j2000; point 13:29:58.870 47:11:42.23
+j2000; point 13:29:57.807 47:11:31.47
+j2000; point 13:29:59.526 47:11:34.38
diff --git a/tests/pros.fk5.reg b/tests/pros.fk5.reg
index 2fd535b..35020f0 100644
--- a/tests/pros.fk5.reg
+++ b/tests/pros.fk5.reg
@@ -1,16 +1,16 @@
-j2000; circle 202.48705d 47.208237d 3.9640007" 
-j2000; ellipse 202.48309d 47.204492d 7.9280014" 3.9640007" 45
-j2000; box 202.47783d 47.201057d 15.856003" 7.9280014" 45
-j2000; polygon 202.47309d 47.198922d 202.46877d 47.199044d 202.46859d 47.196108d 202.47291d 47.195985d 
-j2000; annulus 202.49319d 47.203697d 1.9820003" 3.9640007" 5.946001"
-j2000; ellipse 202.48834d 47.200368d 2.9730005" 1.4865003" 45
-j2000; ellipse 202.48834d 47.200368d 5.946001" 2.9730005" 45 & !ellipse 202.48834d 47.200368d 2.9730005" 1.4865003" 45
-j2000; box 202.4832d 47.197085d 7.9280014" 3.9640007" 45
-j2000; box 202.4832d 47.197085d 11.892002" 5.946001" 45 & !box 202.4832d 47.197085d 7.9280014" 3.9640007" 45
-j2000; point 202.49871d 47.200189d 
-j2000; point 202.49351d 47.196791d 
-j2000; point 202.48857d 47.193854d 
-j2000; point 202.5005d 47.197643d 
-j2000; point 202.49591d 47.194852d 
-j2000; point 202.49148d 47.191862d 
-j2000; point 202.49864d 47.19267d 
+j2000; circle 202.48643d 47.208449d 3.9640007" 
+j2000; ellipse 202.48247d 47.204704d 7.9280014" 3.9640007" 45
+j2000; box 202.47721d 47.201269d 15.856003" 7.9280014" 45
+j2000; polygon 202.47248d 47.199134d 202.46815d 47.199257d 202.46797d 47.19632d 202.4723d 47.196197d 
+j2000; annulus 202.49257d 47.20391d 1.9820003" 3.9640007" 5.946001"
+j2000; ellipse 202.48772d 47.20058d 2.9730005" 1.4865003" 45
+j2000; ellipse 202.48772d 47.20058d 5.946001" 2.9730005" 45 & !ellipse 202.48772d 47.20058d 2.9730005" 1.4865003" 45
+j2000; box 202.48258d 47.197298d 7.9280014" 3.9640007" 45
+j2000; box 202.48258d 47.197298d 11.892002" 5.946001" 45 & !box 202.48258d 47.197298d 7.9280014" 3.9640007" 45
+j2000; point 202.49809d 47.200401d 
+j2000; point 202.49289d 47.197004d 
+j2000; point 202.48795d 47.194067d 
+j2000; point 202.49988d 47.197856d 
+j2000; point 202.49529d 47.195065d 
+j2000; point 202.49086d 47.192074d 
+j2000; point 202.49802d 47.192883d 
diff --git a/tests/pros.galactic.hms.reg b/tests/pros.galactic.hms.reg
index c6b8de1..8db26ac 100644
--- a/tests/pros.galactic.hms.reg
+++ b/tests/pros.galactic.hms.reg
@@ -1,16 +1,16 @@
-galactic; circle +104:50:10.908 68:32:38.464 3.964" 
-galactic; ellipse +104:50:20.096 68:32:54.718 7.928" 3.964" 45
-galactic; box +104:50:38.471 68:33:11.247 15.856" 7.928" 45
-galactic; polygon  +104:50:58.854 68:33:22.977 +104:51:25.768 68:33:26.871 +104:51:15.116 68:33:36.710 +104:50:48.199 68:33:32.816
-galactic; annulus +104:49:15.203 68:32:47.274 1.982" 3.964" 5.946"
-galactic; ellipse +104:49:31.493 68:33:03.053 2.973" 1.4865" 45
-galactic; ellipse +104:49:31.493 68:33:03.053 5.946" 2.973" 45 & !ellipse +104:49:31.493 68:33:03.053 2.973" 1.4865" 45
-galactic; box +104:49:49.713 68:33:18.959 7.928" 3.964" 45
-galactic; box +104:49:49.713 68:33:18.959 11.892" 5.946" 45 & !box +104:49:49.713 68:33:18.959 7.928" 3.964" 45
-galactic; point +104:48:27.434 68:32:53.313
-galactic; point +104:48:45.571 68:33:09.663
-galactic; point +104:49:03.986 68:33:24.243
-galactic; point +104:48:06.279 68:32:59.893
-galactic; point +104:48:23.111 68:33:13.643
-galactic; point +104:48:38.174 68:33:27.889
-galactic; point +104:47:57.663 68:33:18.094
+galactic; circle +104:50:15.532 68:32:38.380 3.964" 
+galactic; ellipse +104:50:24.720 68:32:54.634 7.928" 3.964" 45
+galactic; box +104:50:43.097 68:33:11.163 15.856" 7.928" 45
+galactic; polygon  +104:51:03.480 68:33:22.893 +104:51:30.395 68:33:26.787 +104:51:19.743 68:33:36.626 +104:50:52.826 68:33:32.732
+galactic; annulus +104:49:19.827 68:32:47.191 1.982" 3.964" 5.946"
+galactic; ellipse +104:49:36.118 68:33:02.969 2.973" 1.4865" 45
+galactic; ellipse +104:49:36.118 68:33:02.969 5.946" 2.973" 45 & !ellipse +104:49:36.118 68:33:02.969 2.973" 1.4865" 45
+galactic; box +104:49:54.339 68:33:18.875 7.928" 3.964" 45
+galactic; box +104:49:54.339 68:33:18.875 11.892" 5.946" 45 & !box +104:49:54.339 68:33:18.875 7.928" 3.964" 45
+galactic; point +104:48:32.059 68:32:53.230
+galactic; point +104:48:50.197 68:33:09.580
+galactic; point +104:49:08.613 68:33:24.159
+galactic; point +104:48:10.904 68:32:59.810
+galactic; point +104:48:27.737 68:33:13.560
+galactic; point +104:48:42.801 68:33:27.806
+galactic; point +104:48:02.289 68:33:18.011
diff --git a/tests/pros.galactic.reg b/tests/pros.galactic.reg
index 05dd906..bd579cb 100644
--- a/tests/pros.galactic.reg
+++ b/tests/pros.galactic.reg
@@ -1,16 +1,16 @@
-galactic; circle 104.83636d 68.544018d 3.9640007" 
-galactic; ellipse 104.83892d 68.548533d 7.9280014" 3.9640007" 45
-galactic; box 104.84402d 68.553124d 15.856003" 7.9280014" 45
-galactic; polygon 104.84968d 68.556382d 104.85716d 68.557464d 104.8542d 68.560197d 104.84672d 68.559116d 
-galactic; annulus 104.82089d 68.546465d 1.9820003" 3.9640007" 5.946001"
-galactic; ellipse 104.82541d 68.550848d 2.9730005" 1.4865003" 45
-galactic; ellipse 104.82541d 68.550848d 5.946001" 2.9730005" 45 & !ellipse 104.82541d 68.550848d 2.9730005" 1.4865003" 45
-galactic; box 104.83048d 68.555266d 7.9280014" 3.9640007" 45
-galactic; box 104.83048d 68.555266d 11.892002" 5.946001" 45 & !box 104.83048d 68.555266d 7.9280014" 3.9640007" 45
-galactic; point 104.80762d 68.548142d 
-galactic; point 104.81266d 68.552684d 
-galactic; point 104.81777d 68.556734d 
-galactic; point 104.80174d 68.54997d 
-galactic; point 104.80642d 68.55379d 
-galactic; point 104.8106d 68.557747d 
-galactic; point 104.79935d 68.555026d 
+galactic; circle 104.83765d 68.543994d 3.9640007" 
+galactic; ellipse 104.8402d 68.54851d 7.9280014" 3.9640007" 45
+galactic; box 104.8453d 68.553101d 15.856003" 7.9280014" 45
+galactic; polygon 104.85097d 68.556359d 104.85844d 68.557441d 104.85548d 68.560174d 104.84801d 68.559092d 
+galactic; annulus 104.82217d 68.546442d 1.9820003" 3.9640007" 5.946001"
+galactic; ellipse 104.8267d 68.550825d 2.9730005" 1.4865003" 45
+galactic; ellipse 104.8267d 68.550825d 5.946001" 2.9730005" 45 & !ellipse 104.8267d 68.550825d 2.9730005" 1.4865003" 45
+galactic; box 104.83176d 68.555243d 7.9280014" 3.9640007" 45
+galactic; box 104.83176d 68.555243d 11.892002" 5.946001" 45 & !box 104.83176d 68.555243d 7.9280014" 3.9640007" 45
+galactic; point 104.80891d 68.548119d 
+galactic; point 104.81394d 68.552661d 
+galactic; point 104.81906d 68.556711d 
+galactic; point 104.80303d 68.549947d 
+galactic; point 104.8077d 68.553767d 
+galactic; point 104.81189d 68.557724d 
+galactic; point 104.80064d 68.555003d 
diff --git a/tests/pros.image.reg b/tests/pros.image.reg
index 7ca672f..e39599b 100644
--- a/tests/pros.image.reg
+++ b/tests/pros.image.reg
@@ -1,16 +1,16 @@
-logical; circle  163 538 20
-logical; ellipse  245 521  40 20 45
-logical; box  335 519  80 40 45
-logical; polygon 404.24723 530  442 567.75275  479.75277 530  442 492.24723 
-logical; annulus  163 426 10 20 30 
-logical; ellipse  248 422  15 7.5 45
-logical; ellipse  248 422  30 15 45 & !ellipse  248 422  15 7.5 45
-logical; box  335 421  40 20 45
-logical; box  335 421  60 30 45 & !box  335 421  40 20 45
-logical; point  156 333 
-logical; point  245 331 
-logical; point  326 333 
-logical; point  171 284 
-logical; point  247 285 
-logical; point  324 282 
-logical; point  249 233 
+logical; circle  166 546 20
+logical; ellipse  248 529  40 20 45
+logical; box  338 527  80 40 45
+logical; polygon 407.24723 538  445 575.75275  482.75277 538  445 500.24723 
+logical; annulus  166 434 10 20 30 
+logical; ellipse  251 430  15 7.5 45
+logical; ellipse  251 430  30 15 45 & !ellipse  251 430  15 7.5 45
+logical; box  338 429  40 20 45
+logical; box  338 429  60 30 45 & !box  338 429  40 20 45
+logical; point  159 341 
+logical; point  248 339 
+logical; point  329 341 
+logical; point  174 292 
+logical; point  250 293 
+logical; point  327 290 
+logical; point  252 241 
diff --git a/tests/pros.physical.reg b/tests/pros.physical.reg
index 35aae8b..60cc3e1 100644
--- a/tests/pros.physical.reg
+++ b/tests/pros.physical.reg
@@ -1,16 +1,16 @@
-physical; circle  325 1075 20
-physical; ellipse  489 1041  40 20 45
-physical; box  669 1037  80 40 45
-physical; polygon 807.49446 1059  883 1134.5055  958.50554 1059  883 983.49446 
-physical; annulus  325 851 10 20 30 
-physical; ellipse  495 843  15 7.5 45
-physical; ellipse  495 843  30 15 45 & !ellipse  495 843  15 7.5 45
-physical; box  669 841  40 20 45
-physical; box  669 841  60 30 45 & !box  669 841  40 20 45
-physical; point  311 665 
-physical; point  489 661 
-physical; point  651 665 
-physical; point  341 567 
-physical; point  493 569 
-physical; point  647 563 
-physical; point  497 465 
+physical; circle  331 1091 20
+physical; ellipse  495 1057  40 20 45
+physical; box  675 1053  80 40 45
+physical; polygon 813.49446 1075  889 1150.5055  964.50554 1075  889 999.49446 
+physical; annulus  331 867 10 20 30 
+physical; ellipse  501 859  15 7.5 45
+physical; ellipse  501 859  30 15 45 & !ellipse  501 859  15 7.5 45
+physical; box  675 857  40 20 45
+physical; box  675 857  60 30 45 & !box  675 857  40 20 45
+physical; point  317 681 
+physical; point  495 677 
+physical; point  657 681 
+physical; point  347 583 
+physical; point  499 585 
+physical; point  653 579 
+physical; point  503 481 
diff --git a/tests/regions.sh b/tests/regions.sh
index e604026..e548950 100755
--- a/tests/regions.sh
+++ b/tests/regions.sh
@@ -10,6 +10,7 @@ testit () {
     xpaset -p ds9 regions skyformat $4
     xpaset -p ds9 regions file $5
     xpaset -p ds9 regions save ${5}.out
+#    sleep .5
     xpaset -p ds9 regions deleteall
 
     o=`diff $5 ${5}.out`
@@ -31,6 +32,7 @@ testit2 () {
     xpaset -p ds9 regions skyformat $4
     xpaset -p ds9 regions file $5
     xpaset -p ds9 regions save ${5}.out
+#    sleep .5
     xpaset -p ds9 regions deleteall
 
     o=`diff $6 ${5}.out`
@@ -51,6 +53,7 @@ testit3 () {
     xpaset -p ds9 regions sky $3
     xpaset -p ds9 regions skyformat $4
     xpaset -p ds9 regions file $5
+#    sleep .5
     xpaset -p ds9 regions deleteall
     echo "PASSED"
 }
diff --git a/tests/samp.sh b/tests/samp.sh
index 04c97cc..234a0f7 100755
--- a/tests/samp.sh
+++ b/tests/samp.sh
@@ -64,6 +64,8 @@ doit "$1" data
 doit "$1" dsssao
 doit "$1" dsseso
 doit "$1" dssstsci
+doit "$1" export
+rm -f foo.fits foo.gif foo.jpg foo.tif foo.png foo.ppm
 doit "$1" file
 rm -f foo.fits foo.fits.gz
 doit "$1" first
@@ -75,6 +77,7 @@ doit "$1" height
 doit "$1" iconify
 doit "$1" iis
 doit2 "$1" imexam
+doit "$1" import
 doit "$1" lock
 doit "$1" lower
 doit "$1" magnifier
@@ -100,8 +103,10 @@ rm -f foo.reg
 rm -f foo.tpl
 doit "$1" rgb
 doit "$1" rotate
-doit "$1" saveas
-rm -f foo.fits foo.jpeg foo.tif foo.png foo.ppm foo.mpg foo.mpg
+doit "$1" saveimage
+rm -f foo.fits foo.gif foo.jpg foo.tif foo.png foo.ppm
+doit "$1" savempeg
+rm -f foo.mpg
 doit "$1" scale
 doit "$1" single
 #doit "$1" skyview
diff --git a/tests/samp/export.samp b/tests/samp/export.samp
new file mode 100644
index 0000000..bf82a9f
--- /dev/null
+++ b/tests/samp/export.samp
@@ -0,0 +1,13 @@
+set {} export foo.fits
+set {} export foo.gif
+set {} export foo.tif
+set {} export foo.tif none
+set {} export foo.jpg
+set {} export foo.jpg 100
+set {} export foo.png
+set {} export foo.ppm
+
+# backward compatability
+set {} savefits foo.fits
+
+set {} raise
diff --git a/tests/samp/import.samp b/tests/samp/import.samp
new file mode 100644
index 0000000..d41804d
--- /dev/null
+++ b/tests/samp/import.samp
@@ -0,0 +1,7 @@
+set {} frame new
+set {} image rose.jpg
+set {} frame delete
+set {} frame new rgb
+set {} image rose.tif
+set {} frame delete
+set {} raise
diff --git a/tests/samp/saveas.samp b/tests/samp/saveas.samp
deleted file mode 100644
index 20f7c7a..0000000
--- a/tests/samp/saveas.samp
+++ /dev/null
@@ -1,13 +0,0 @@
-set {} saveimage fits foo.fits
-set {} saveimage jpeg foo.jpeg
-set {} saveimage jpeg 100 foo.jpeg
-set {} saveimage tiff foo.tif
-set {} saveimage tiff deflate foo.tif
-set {} saveimage png foo.png
-set {} saveimage ppm foo.ppm
-set {} saveimage mpeg foo.mpg
-set {} saveimage mpeg 31 foo.mpg
-
-set {} savefits foo.fits
-set {} savempeg foo.mpg
-set {} raise
diff --git a/tests/samp/saveimage.samp b/tests/samp/saveimage.samp
new file mode 100644
index 0000000..13d3ce2
--- /dev/null
+++ b/tests/samp/saveimage.samp
@@ -0,0 +1,19 @@
+set {} saveimage foo.fits
+set {} saveimage foo.gif
+set {} saveimage foo.tif
+set {} saveimage foo.tif none
+set {} saveimage foo.jpg
+set {} saveimage foo.jpg 100
+set {} saveimage foo.png
+set {} saveimage foo.ppm
+
+# backward compatability
+set {} saveimage fits foo.fits
+set {} saveimage jpeg foo.jpg
+set {} saveimage jpeg 100 foo.jpg
+set {} saveimage tiff foo.tif
+set {} saveimage tiff deflate foo.tif
+set {} saveimage png foo.png
+set {} saveimage ppm foo.ppm
+
+set {} raise
diff --git a/tests/samp/savempeg.samp b/tests/samp/savempeg.samp
new file mode 100644
index 0000000..565fa7c
--- /dev/null
+++ b/tests/samp/savempeg.samp
@@ -0,0 +1,10 @@
+set {} savempeg slice foo.mpg
+set {} savempeg frame foo.mpg
+set {} frame new 3d
+set {} savempeg 3d foo.mpg number 1 azfrom 0 azto 0 elfrom 0 elto 0 slfrom 1 slto 1 repeat 1
+set {} frame delete
+
+# backward compatibility
+set {} savempeg foo.mpg
+
+set {} raise
diff --git a/tests/saotng.ecliptic.hms.reg b/tests/saotng.ecliptic.hms.reg
index db53842..659564a 100644
--- a/tests/saotng.ecliptic.hms.reg
+++ b/tests/saotng.ecliptic.hms.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: hms (ecliptic)
 #Circle
-+circle(+175:06:47.329,+50:57:10.157,20) # This is a Comment
++circle(+175:06:44.609,+50:57:09.897,20) # This is a Comment
 #Ellipse
--ellipse(+175:06:47.329,+50:56:53.559,40,20,45) # background
+-ellipse(+175:06:44.610,+50:56:53.299,40,20,45) # background
 #Box
--box(+175:06:42.199,+50:56:36.012,80,40,45) # yellow
+-box(+175:06:39.479,+50:56:35.752,80,40,45) # yellow
 #Polygon
-+polygon(+175:06:34.390,+50:56:23.015,+175:06:20.354,+50:56:17.207,+175:06:29.571,+50:56:08.362,+175:06:43.608,+50:56:14.170) # green
++polygon(+175:06:31.671,+50:56:22.755,+175:06:17.634,+50:56:16.946,+175:06:26.852,+50:56:08.101,+175:06:40.888,+50:56:13.910) # green
 #Line
--line(+175:06:35.595,+50:56:02.262,+175:06:16.061,+50:55:52.669) # cyan
-+text(+175:06:23.624,+50:55:33.666, "Region") # magenta
+-line(+175:06:32.876,+50:56:02.002,+175:06:13.343,+50:55:52.408) # cyan
++text(+175:06:20.905,+50:55:33.406, "Region") # magenta
 #Circle Point
-+point(+175:07:50.928,+50:57:03.264) # green
++point(+175:07:48.208,+50:57:03.004) # green
 #Box Point
-+point(+175:07:45.855,+50:56:45.911) # red
++point(+175:07:43.135,+50:56:45.651) # red
 #Diamond Point
-+point(+175:07:40.062,+50:56:30.273) # green
++point(+175:07:37.342,+50:56:30.013) # green
 #Cross Point
-+point(+175:08:05.063,+50:56:58.379) # blue
++point(+175:08:02.343,+50:56:58.119) # blue
 #X Point
-+point(+175:07:59.895,+50:56:43.670) # green
++point(+175:07:57.176,+50:56:43.411) # green
 #Arrow Point
-+point(+175:07:55.897,+50:56:28.607) # magenta
++point(+175:07:53.177,+50:56:28.347) # magenta
 #BoxCircle Point
-+point(+175:08:15.784,+50:56:41.187) # green
++point(+175:08:13.064,+50:56:40.927) # green
diff --git a/tests/saotng.ecliptic.reg b/tests/saotng.ecliptic.reg
index 393808f..4a2e4b8 100644
--- a/tests/saotng.ecliptic.reg
+++ b/tests/saotng.ecliptic.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: degrees (ecliptic)
 #Circle
-+circle(175.11315,50.952821,20) # This is a Comment
++circle(175.11239,50.952749,20) # This is a Comment
 #Ellipse
--ellipse(175.11315,50.948211,40,20,45) # background
+-ellipse(175.11239,50.948139,40,20,45) # background
 #Box
--box(175.11172,50.943337,80,40,45) # yellow
+-box(175.11097,50.943264,80,40,45) # yellow
 #Polygon
-+polygon(175.10955,50.939727,175.10565,50.938113,175.10821,50.935656,175.11211,50.937269) # green
++polygon(175.1088,50.939654,175.1049,50.938041,175.10746,50.935584,175.11136,50.937197) # green
 #Line
--line(175.10989,50.933962,175.10446,50.931297) # cyan
-+text(175.10656,50.926018, "Region") # magenta
+-line(175.10913,50.933889,175.10371,50.931224) # cyan
++text(175.10581,50.925946, "Region") # magenta
 #Circle Point
-+point(175.13081,50.950907) # green
++point(175.13006,50.950834) # green
 #Box Point
-+point(175.1294,50.946087) # red
++point(175.12865,50.946014) # red
 #Diamond Point
-+point(175.12779,50.941742) # green
++point(175.12704,50.94167) # green
 #Cross Point
-+point(175.13474,50.94955) # blue
++point(175.13398,50.949478) # blue
 #X Point
-+point(175.1333,50.945464) # green
++point(175.13255,50.945392) # green
 #Arrow Point
-+point(175.13219,50.94128) # magenta
++point(175.13144,50.941207) # magenta
 #BoxCircle Point
-+point(175.13772,50.944774) # green
++point(175.13696,50.944702) # green
diff --git a/tests/saotng.fk4.hms.reg b/tests/saotng.fk4.hms.reg
index 77c8b08..c6d16cc 100644
--- a/tests/saotng.fk4.hms.reg
+++ b/tests/saotng.fk4.hms.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: hms (fk4)
 #Circle
-+circle(13:27:50.533,+47:27:57.00,20) # This is a Comment
++circle(13:27:50.384,+47:27:57.76,20) # This is a Comment
 #Ellipse
--ellipse(13:27:49.574,+47:27:43.54,40,20,45) # background
+-ellipse(13:27:49.426,+47:27:44.31,40,20,45) # background
 #Box
--box(13:27:48.303,+47:27:31.21,80,40,45) # yellow
+-box(13:27:48.154,+47:27:31.98,80,40,45) # yellow
 #Polygon
-+polygon(13:27:47.159,+47:27:23.56,13:27:46.117,+47:27:24.03,13:27:46.071,+47:27:13.45,13:27:47.113,+47:27:12.98) # green
++polygon(13:27:47.011,+47:27:24.32,13:27:45.968,+47:27:24.79,13:27:45.922,+47:27:14.22,13:27:46.964,+47:27:13.75) # green
 #Line
--line(13:27:46.022,+47:27:06.29,13:27:44.484,+47:27:05.72) # cyan
-+text(13:27:43.769,+47:26:47.52, "Region") # magenta
+-line(13:27:45.873,+47:27:07.05,13:27:44.336,+47:27:06.48) # cyan
++text(13:27:43.620,+47:26:48.29, "Region") # magenta
 #Circle Point
-+point(13:27:53.337,+47:27:27.95) # green
++point(13:27:53.189,+47:27:28.71) # green
 #Box Point
-+point(13:27:52.080,+47:27:15.75) # red
++point(13:27:51.931,+47:27:16.52) # red
 #Diamond Point
-+point(13:27:50.886,+47:27:05.21) # green
++point(13:27:50.737,+47:27:05.98) # green
 #Cross Point
-+point(13:27:53.767,+47:27:18.77) # blue
++point(13:27:53.618,+47:27:19.54) # blue
 #X Point
-+point(13:27:52.658,+47:27:08.75) # green
++point(13:27:52.509,+47:27:09.52) # green
 #Arrow Point
-+point(13:27:51.587,+47:26:58.02) # magenta
++point(13:27:51.438,+47:26:58.79) # magenta
 #BoxCircle Point
-+point(13:27:53.315,+47:27:00.88) # green
++point(13:27:53.166,+47:27:01.65) # green
diff --git a/tests/saotng.fk4.reg b/tests/saotng.fk4.reg
index d65ef0a..7636641 100644
--- a/tests/saotng.fk4.reg
+++ b/tests/saotng.fk4.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: degrees (fk4)
 #Circle
-+circle(201.96055,47.465832,20) # This is a Comment
++circle(201.95993,47.466046,20) # This is a Comment
 #Ellipse
--ellipse(201.95656,47.462095,40,20,45) # background
+-ellipse(201.95594,47.462308,40,20,45) # background
 #Box
--box(201.95126,47.458669,80,40,45) # yellow
+-box(201.95064,47.458883,80,40,45) # yellow
 #Polygon
-+polygon(201.9465,47.456543,201.94215,47.456674,201.94196,47.453737,201.9463,47.453607) # green
++polygon(201.94588,47.456757,201.94153,47.456887,201.94134,47.453951,201.94568,47.45382) # green
 #Line
--line(201.94176,47.451746,201.93535,47.451588) # cyan
-+text(201.93237,47.446533, "Region") # magenta
+-line(201.94114,47.45196,201.93473,47.451801) # cyan
++text(201.93175,47.446747, "Region") # magenta
 #Circle Point
-+point(201.97224,47.457763) # green
++point(201.97162,47.457976) # green
 #Box Point
-+point(201.967,47.454375) # red
++point(201.96638,47.454589) # red
 #Diamond Point
-+point(201.96202,47.451447) # green
++point(201.9614,47.451661) # green
 #Cross Point
-+point(201.97403,47.455214) # blue
++point(201.97341,47.455428) # blue
 #X Point
-+point(201.96941,47.452432) # green
++point(201.96879,47.452645) # green
 #Arrow Point
-+point(201.96495,47.449449) # magenta
++point(201.96433,47.449663) # magenta
 #BoxCircle Point
-+point(201.97214,47.450245) # green
++point(201.97152,47.450458) # green
diff --git a/tests/saotng.fk5.hms.reg b/tests/saotng.fk5.hms.reg
index bbd5c94..030eb22 100644
--- a/tests/saotng.fk5.hms.reg
+++ b/tests/saotng.fk5.hms.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: hms (fk5)
 #Circle
-+circle(13:29:56.891,+47:12:29.65,20) # This is a Comment
++circle(13:29:56.743,+47:12:30.42,20) # This is a Comment
 #Ellipse
--ellipse(13:29:55.941,+47:12:16.17,40,20,45) # background
+-ellipse(13:29:55.792,+47:12:16.94,40,20,45) # background
 #Box
--box(13:29:54.679,+47:12:03.80,80,40,45) # yellow
+-box(13:29:54.530,+47:12:04.57,80,40,45) # yellow
 #Polygon
-+polygon(13:29:53.543,+47:11:56.12,13:29:52.505,+47:11:56.56,13:29:52.462,+47:11:45.99,13:29:53.499,+47:11:45.55) # green
++polygon(13:29:53.394,+47:11:56.88,13:29:52.357,+47:11:57.32,13:29:52.314,+47:11:46.75,13:29:53.351,+47:11:46.31) # green
 #Line
--line(13:29:52.415,+47:11:38.82,13:29:50.885,+47:11:38.21) # cyan
-+text(13:29:50.178,+47:11:19.99, "Region") # magenta
+-line(13:29:52.267,+47:11:39.58,13:29:50.737,+47:11:38.97) # cyan
++text(13:29:50.030,+47:11:20.75, "Region") # magenta
 #Circle Point
-+point(13:29:59.689,+47:12:00.68) # green
++point(13:29:59.541,+47:12:01.44) # green
 #Box Point
-+point(13:29:58.442,+47:11:48.45) # red
++point(13:29:58.293,+47:11:49.21) # red
 #Diamond Point
-+point(13:29:57.256,+47:11:37.88) # green
++point(13:29:57.107,+47:11:38.64) # green
 #Cross Point
-+point(13:30:00.120,+47:11:51.52) # blue
++point(13:29:59.971,+47:11:52.28) # blue
 #X Point
-+point(13:29:59.018,+47:11:41.47) # green
++point(13:29:58.870,+47:11:42.23) # green
 #Arrow Point
-+point(13:29:57.955,+47:11:30.70) # magenta
++point(13:29:57.807,+47:11:31.47) # magenta
 #BoxCircle Point
-+point(13:29:59.674,+47:11:33.61) # green
++point(13:29:59.526,+47:11:34.38) # green
diff --git a/tests/saotng.fk5.reg b/tests/saotng.fk5.reg
index 79ba86c..f0bfce5 100644
--- a/tests/saotng.fk5.reg
+++ b/tests/saotng.fk5.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: degrees (fk5)
 #Circle
-+circle(202.48705,47.208237,20) # This is a Comment
++circle(202.48643,47.208449,20) # This is a Comment
 #Ellipse
--ellipse(202.48309,47.204492,40,20,45) # background
+-ellipse(202.48247,47.204704,40,20,45) # background
 #Box
--box(202.47783,47.201057,80,40,45) # yellow
+-box(202.47721,47.201269,80,40,45) # yellow
 #Polygon
-+polygon(202.47309,47.198922,202.46877,47.199044,202.46859,47.196108,202.47291,47.195985) # green
++polygon(202.47248,47.199134,202.46815,47.199257,202.46797,47.19632,202.4723,47.196197) # green
 #Line
--line(202.4684,47.194116,202.46202,47.193946) # cyan
-+text(202.45907,47.188886, "Region") # magenta
+-line(202.46778,47.194329,202.4614,47.194158) # cyan
++text(202.45846,47.189099, "Region") # magenta
 #Circle Point
-+point(202.49871,47.200189) # green
++point(202.49809,47.200401) # green
 #Box Point
-+point(202.49351,47.196791) # red
++point(202.49289,47.197004) # red
 #Diamond Point
-+point(202.48857,47.193854) # green
++point(202.48795,47.194067) # green
 #Cross Point
-+point(202.5005,47.197643) # blue
++point(202.49988,47.197856) # blue
 #X Point
-+point(202.49591,47.194852) # green
++point(202.49529,47.195065) # green
 #Arrow Point
-+point(202.49148,47.191862) # magenta
++point(202.49086,47.192074) # magenta
 #BoxCircle Point
-+point(202.49864,47.19267) # green
++point(202.49802,47.192883) # green
diff --git a/tests/saotng.galactic.hms.reg b/tests/saotng.galactic.hms.reg
index 14d57fa..396bea2 100644
--- a/tests/saotng.galactic.hms.reg
+++ b/tests/saotng.galactic.hms.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: hms (galactic)
 #Circle
-+circle(+104:50:10.908,+68:32:38.464,20) # This is a Comment
++circle(+104:50:15.532,+68:32:38.380,20) # This is a Comment
 #Ellipse
--ellipse(+104:50:20.096,+68:32:54.718,40,20,45) # background
+-ellipse(+104:50:24.720,+68:32:54.634,40,20,45) # background
 #Box
--box(+104:50:38.471,+68:33:11.247,80,40,45) # yellow
+-box(+104:50:43.097,+68:33:11.163,80,40,45) # yellow
 #Polygon
-+polygon(+104:50:58.854,+68:33:22.977,+104:51:25.768,+68:33:26.871,+104:51:15.116,+68:33:36.710,+104:50:48.199,+68:33:32.816) # green
++polygon(+104:51:03.480,+68:33:22.893,+104:51:30.395,+68:33:26.787,+104:51:19.743,+68:33:36.626,+104:50:52.826,+68:33:32.732) # green
 #Line
--line(+104:51:08.330,+68:33:43.453,+104:51:46.639,+68:33:50.350) # cyan
-+text(+104:51:44.421,+68:34:09.924, "Region") # magenta
+-line(+104:51:12.957,+68:33:43.369,+104:51:51.267,+68:33:50.265) # cyan
++text(+104:51:49.050,+68:34:09.839, "Region") # magenta
 #Circle Point
-+point(+104:48:27.434,+68:32:53.313) # green
++point(+104:48:32.059,+68:32:53.230) # green
 #Box Point
-+point(+104:48:45.571,+68:33:09.663) # red
++point(+104:48:50.197,+68:33:09.580) # red
 #Diamond Point
-+point(+104:49:03.986,+68:33:24.243) # green
++point(+104:49:08.613,+68:33:24.159) # green
 #Cross Point
-+point(+104:48:06.279,+68:32:59.893) # blue
++point(+104:48:10.904,+68:32:59.810) # blue
 #X Point
-+point(+104:48:23.111,+68:33:13.643) # green
++point(+104:48:27.737,+68:33:13.560) # green
 #Arrow Point
-+point(+104:48:38.174,+68:33:27.889) # magenta
++point(+104:48:42.801,+68:33:27.806) # magenta
 #BoxCircle Point
-+point(+104:47:57.663,+68:33:18.094) # green
++point(+104:48:02.289,+68:33:18.011) # green
diff --git a/tests/saotng.galactic.reg b/tests/saotng.galactic.reg
index a539722..fed30ad 100644
--- a/tests/saotng.galactic.reg
+++ b/tests/saotng.galactic.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: degrees (galactic)
 #Circle
-+circle(104.83636,68.544018,20) # This is a Comment
++circle(104.83765,68.543994,20) # This is a Comment
 #Ellipse
--ellipse(104.83892,68.548533,40,20,45) # background
+-ellipse(104.8402,68.54851,40,20,45) # background
 #Box
--box(104.84402,68.553124,80,40,45) # yellow
+-box(104.8453,68.553101,80,40,45) # yellow
 #Polygon
-+polygon(104.84968,68.556382,104.85716,68.557464,104.8542,68.560197,104.84672,68.559116) # green
++polygon(104.85097,68.556359,104.85844,68.557441,104.85548,68.560174,104.84801,68.559092) # green
 #Line
--line(104.85231,68.56207,104.86296,68.563986) # cyan
-+text(104.86234,68.569423, "Region") # magenta
+-line(104.8536,68.562047,104.86424,68.563963) # cyan
++text(104.86363,68.5694, "Region") # magenta
 #Circle Point
-+point(104.80762,68.548142) # green
++point(104.80891,68.548119) # green
 #Box Point
-+point(104.81266,68.552684) # red
++point(104.81394,68.552661) # red
 #Diamond Point
-+point(104.81777,68.556734) # green
++point(104.81906,68.556711) # green
 #Cross Point
-+point(104.80174,68.54997) # blue
++point(104.80303,68.549947) # blue
 #X Point
-+point(104.80642,68.55379) # green
++point(104.8077,68.553767) # green
 #Arrow Point
-+point(104.8106,68.557747) # magenta
++point(104.81189,68.557724) # magenta
 #BoxCircle Point
-+point(104.79935,68.555026) # green
++point(104.80064,68.555003) # green
diff --git a/tests/saotng.icrs.hms.reg b/tests/saotng.icrs.hms.reg
index cbce7a5..eb1733e 100644
--- a/tests/saotng.icrs.hms.reg
+++ b/tests/saotng.icrs.hms.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: hms (icrs)
 #Circle
-+circle(13:29:56.891,+47:12:29.65,20) # This is a Comment
++circle(13:29:56.743,+47:12:30.42,20) # This is a Comment
 #Ellipse
--ellipse(13:29:55.941,+47:12:16.17,40,20,45) # background
+-ellipse(13:29:55.792,+47:12:16.94,40,20,45) # background
 #Box
--box(13:29:54.679,+47:12:03.80,80,40,45) # yellow
+-box(13:29:54.530,+47:12:04.57,80,40,45) # yellow
 #Polygon
-+polygon(13:29:53.543,+47:11:56.12,13:29:52.505,+47:11:56.56,13:29:52.462,+47:11:45.99,13:29:53.499,+47:11:45.55) # green
++polygon(13:29:53.394,+47:11:56.88,13:29:52.357,+47:11:57.33,13:29:52.314,+47:11:46.75,13:29:53.351,+47:11:46.31) # green
 #Line
--line(13:29:52.415,+47:11:38.82,13:29:50.885,+47:11:38.21) # cyan
-+text(13:29:50.178,+47:11:19.99, "Region") # magenta
+-line(13:29:52.267,+47:11:39.58,13:29:50.737,+47:11:38.97) # cyan
++text(13:29:50.030,+47:11:20.76, "Region") # magenta
 #Circle Point
-+point(13:29:59.689,+47:12:00.68) # green
++point(13:29:59.541,+47:12:01.45) # green
 #Box Point
-+point(13:29:58.442,+47:11:48.45) # red
++point(13:29:58.293,+47:11:49.22) # red
 #Diamond Point
-+point(13:29:57.256,+47:11:37.88) # green
++point(13:29:57.108,+47:11:38.64) # green
 #Cross Point
-+point(13:30:00.120,+47:11:51.52) # blue
++point(13:29:59.971,+47:11:52.28) # blue
 #X Point
-+point(13:29:59.018,+47:11:41.47) # green
++point(13:29:58.870,+47:11:42.24) # green
 #Arrow Point
-+point(13:29:57.955,+47:11:30.70) # magenta
++point(13:29:57.807,+47:11:31.47) # magenta
 #BoxCircle Point
-+point(13:29:59.674,+47:11:33.61) # green
++point(13:29:59.526,+47:11:34.38) # green
diff --git a/tests/saotng.icrs.reg b/tests/saotng.icrs.reg
index 4b7aa4a..d1975ed 100644
--- a/tests/saotng.icrs.reg
+++ b/tests/saotng.icrs.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: degrees (icrs)
 #Circle
-+circle(202.48705,47.208237,20) # This is a Comment
++circle(202.48643,47.208449,20) # This is a Comment
 #Ellipse
--ellipse(202.48309,47.204492,40,20,45) # background
+-ellipse(202.48247,47.204705,40,20,45) # background
 #Box
--box(202.47783,47.201057,80,40,45) # yellow
+-box(202.47721,47.20127,80,40,45) # yellow
 #Polygon
-+polygon(202.47309,47.198922,202.46877,47.199044,202.46859,47.196108,202.47291,47.195985) # green
++polygon(202.47248,47.199135,202.46815,47.199257,202.46797,47.19632,202.4723,47.196198) # green
 #Line
--line(202.4684,47.194116,202.46202,47.193946) # cyan
-+text(202.45907,47.188886, "Region") # magenta
+-line(202.46778,47.194329,202.4614,47.194159) # cyan
++text(202.45846,47.189099, "Region") # magenta
 #Circle Point
-+point(202.49871,47.200189) # green
++point(202.49809,47.200401) # green
 #Box Point
-+point(202.49351,47.196791) # red
++point(202.49289,47.197004) # red
 #Diamond Point
-+point(202.48857,47.193854) # green
++point(202.48795,47.194067) # green
 #Cross Point
-+point(202.5005,47.197643) # blue
++point(202.49988,47.197856) # blue
 #X Point
-+point(202.49591,47.194852) # green
++point(202.49529,47.195065) # green
 #Arrow Point
-+point(202.49148,47.191862) # magenta
++point(202.49086,47.192075) # magenta
 #BoxCircle Point
-+point(202.49864,47.19267) # green
++point(202.49802,47.192883) # green
diff --git a/tests/saotng.image.reg b/tests/saotng.image.reg
index 479cd5a..00f7cd1 100644
--- a/tests/saotng.image.reg
+++ b/tests/saotng.image.reg
@@ -1,27 +1,27 @@
 # filename: img16.fits
 # format: pixels (physical)
 #Circle
-+circle(163,538,20) # This is a Comment
++circle(166,546,20) # This is a Comment
 #Ellipse
--ellipse(245,521,40,20,45) # background
+-ellipse(248,529,40,20,45) # background
 #Box
--box(335,519,80,40,45) # yellow
+-box(338,527,80,40,45) # yellow
 #Polygon
-+polygon(404.24723,530,442,567.75275,479.75277,530,442,492.24723) # green
++polygon(407.24723,538,445,575.75275,482.75277,538,445,500.24723) # green
 #Line
--line(506,505,566,556) # cyan
-+text(655,513, "Region") # magenta
+-line(509,513,569,564) # cyan
++text(658,521, "Region") # magenta
 #Circle Point
-+point(156,333) # green
++point(159,341) # green
 #Box Point
-+point(245,331) # red
++point(248,339) # red
 #Diamond Point
-+point(326,333) # green
++point(329,341) # green
 #Cross Point
-+point(171,284) # blue
++point(174,292) # blue
 #X Point
-+point(247,285) # green
++point(250,293) # green
 #Arrow Point
-+point(324,282) # magenta
++point(327,290) # magenta
 #BoxCircle Point
-+point(249,233) # green
++point(252,241) # green
diff --git a/tests/xml.ecliptic.hms.reg b/tests/xml.ecliptic.hms.reg
index 9eb192c..b487939 100644
--- a/tests/xml.ecliptic.hms.reg
+++ b/tests/xml.ecliptic.hms.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>+175:06:47.329</TD><TD>+50:57:10.157</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>+175:06:47.329</TD><TD>+50:56:53.559</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>+175:06:42.199</TD><TD>+50:56:36.012</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+175:06:34.390 +175:06:20.354 +175:06:29.571 +175:06:43.608</TD><TD>+50:56:23.015 +50:56:17.207 +50:56:08.362 +50:56:14.170</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>+175:06:35.595 +175:06:16.061</TD><TD>+50:56:02.262 +50:55:52.669</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>+175:06:22.822</TD><TD>+50:55:44.904</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>+175:06:23.624</TD><TD>+50:55:33.666</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>281.71724</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+175:07:17.569 +175:06:55.311</TD><TD>+50:56:21.473 +50:56:11.427</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>+175:07:21.832</TD><TD>+50:57:05.650</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>+175:07:17.633</TD><TD>+50:56:48.993</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>+175:07:12.383</TD><TD>+50:56:32.069</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+175:07:50.928</TD><TD>+50:57:03.264</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+175:07:45.855</TD><TD>+50:56:45.911</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+175:07:40.062</TD><TD>+50:56:30.273</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+175:08:05.063</TD><TD>+50:56:58.379</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+175:07:59.895</TD><TD>+50:56:43.670</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+175:07:55.897</TD><TD>+50:56:28.607</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+175:08:15.784</TD><TD>+50:56:41.187</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>+175:07:14.006 +175:06:47.744</TD><TD>+50:56:00.887 +50:55:45.494</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+175:07:33.735</TD><TD>+50:56:11.060</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+175:08:01.631</TD><TD>+50:56:07.007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>333.29914 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>+175:06:59.749</TD><TD>+50:55:38.055</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+175:07:30.960</TD><TD>+50:55:54.824</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+175:07:58.173</TD><TD>+50:55:50.658</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+175:07:25.403</TD><TD>+50:55:37.941</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+175:07:52.752</TD><TD>+50:55:35.173</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>+175:07:30.006</TD><TD>+50:55:19.728</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>+175:06:44.609</TD><TD>+50:57:09.897</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>+175:06:44.610</TD><TD>+50:56:53.299</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>+175:06:39.479</TD><TD>+50:56:35.752</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+175:06:31.671 +175:06:17.634 +175:06:26.852 +175:06:40.888</TD><TD>+50:56:22.755 +50:56:16.946 +50:56:08.101 +50:56:13.910</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>+175:06:32.876 +175:06:13.343</TD><TD>+50:56:02.002 +50:55:52.408</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>+175:06:20.104</TD><TD>+50:55:44.643</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>+175:06:20.905</TD><TD>+50:55:33.406</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>281.71724</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+175:07:14.850 +175:06:52.592</TD><TD>+50:56:21.212 +50:56:11.166</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>+175:07:19.112</TD><TD>+50:57:05.390</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>+175:07:14.913</TD><TD>+50:56:48.733</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>+175:07:09.664</TD><TD>+50:56:31.809</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+175:07:48.208</TD><TD>+50:57:03.004</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+175:07:43.135</TD><TD>+50:56:45.651</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+175:07:37.342</TD><TD>+50:56:30.013</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+175:08:02.343</TD><TD>+50:56:58.119</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+175:07:57.176</TD><TD>+50:56:43.411</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+175:07:53.177</TD><TD>+50:56:28.347</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+175:08:13.064</TD><TD>+50:56:40.927</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>+175:07:11.287 +175:06:45.026</TD><TD>+50:56:00.627 +50:55:45.234</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+175:07:31.016</TD><TD>+50:56:10.800</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+175:07:58.912</TD><TD>+50:56:06.747</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>333.29914 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>+175:06:57.031</TD><TD>+50:55:37.795</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+175:07:28.241</TD><TD>+50:55:54.564</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+175:07:55.454</TD><TD>+50:55:50.398</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+175:07:22.684</TD><TD>+50:55:37.680</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+175:07:50.034</TD><TD>+50:55:34.913</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.ecliptic.reg b/tests/xml.ecliptic.reg
index 71b4d14..5086a19 100644
--- a/tests/xml.ecliptic.reg
+++ b/tests/xml.ecliptic.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>175.11315</TD><TD>50.952821</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>175.11315</TD><TD>50.948211</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>175.11172</TD><TD>50.943337</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>175.10955 175.10565 175.10821 175.11211</TD><TD>50.939727 50.938113 50.935656 50.937269</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>175.10989 175.10446</TD><TD>50.933962 50.931297</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>175.10634</TD><TD>50.92914</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>175.10656</TD><TD>50.926018</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>281.71724</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>175.12155 175.11536</TD><TD>50.939298 50.936507</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>175.12273</TD><TD>50.951569</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>175.12156</TD><TD>50.946943</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>175.12011</TD><TD>50.942241</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>175.13081</TD><TD>50.950907</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>175.1294</TD><TD>50.946087</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>175.12779</TD><TD>50.941742</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>175.13474</TD><TD>50.94955</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>175.1333</TD><TD>50.945464</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>175.13219</TD><TD>50.94128</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>175.13772</TD><TD>50.944774</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>175.12056 175.11326</TD><TD>50.93358 50.929304</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>175.12604</TD><TD>50.936406</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>175.13379</TD><TD>50.93528</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>333.29914 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>175.1166</TD><TD>50.927238</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>175.12527</TD><TD>50.931896</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>175.13283</TD><TD>50.930738</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>175.12372</TD><TD>50.927206</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>175.13132</TD><TD>50.926437</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>175.125</TD><TD>50.922147</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>175.11239</TD><TD>50.952749</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>175.11239</TD><TD>50.948139</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>175.11097</TD><TD>50.943264</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>175.1088 175.1049 175.10746 175.11136</TD><TD>50.939654 50.938041 50.935584 50.937197</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>175.10913 175.10371</TD><TD>50.933889 50.931224</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>175.10558</TD><TD>50.929068</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>175.10581</TD><TD>50.925946</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>281.71724</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>175.12079 175.11461</TD><TD>50.939226 50.936435</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>175.12198</TD><TD>50.951497</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>175.12081</TD><TD>50.94687</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>175.11935</TD><TD>50.942169</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>175.13006</TD><TD>50.950834</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>175.12865</TD><TD>50.946014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>175.12704</TD><TD>50.94167</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>175.13398</TD><TD>50.949478</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>175.13255</TD><TD>50.945392</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>175.13144</TD><TD>50.941207</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>175.13696</TD><TD>50.944702</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>175.1198 175.11251</TD><TD>50.933507 50.929232</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>175.12528</TD><TD>50.936333</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>175.13303</TD><TD>50.935208</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>333.29914 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>175.11584</TD><TD>50.927165</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>175.12451</TD><TD>50.931823</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>175.13207</TD><TD>50.930666</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>175.12297</TD><TD>50.927133</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>281.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>175.13056</TD><TD>50.926365</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>326.71724</TD><TD>326.71724 11.71724 101.71724 191.71724</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.fk4.hms.reg b/tests/xml.fk4.hms.reg
index a0fa095..caedbb9 100644
--- a/tests/xml.fk4.hms.reg
+++ b/tests/xml.fk4.hms.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>13:27:50.533</TD><TD>+47:27:57.00</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>13:27:49.574</TD><TD>+47:27:43.54</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.553089</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>13:27:48.303</TD><TD>+47:27:31.21</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.553089</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>13:27:47.159 13:27:46.117 13:27:46.071 13:27:47.113</TD><TD>+47:27:23.56 +47:27:24.03 +47:27:13.45 +47:27:12.98</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>13:27:46.022 13:27:44.484</TD><TD>+47:27:06.29 +47:27:05.72</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>13:27:44.377</TD><TD>+47:26:56.93</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.553089</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>13:27:43.769</TD><TD>+47:26:47.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.55309</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>13:27:49.245 13:27:47.544</TD><TD>+47:27:06.37 +47:27:06.44</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>13:27:52.010</TD><TD>+47:27:40.61</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>13:27:50.837</TD><TD>+47:27:28.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.553089</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>13:27:49.595</TD><TD>+47:27:16.88</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.553089</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:27:53.337</TD><TD>+47:27:27.95</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:27:52.080</TD><TD>+47:27:15.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:27:50.886</TD><TD>+47:27:05.21</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:27:53.767</TD><TD>+47:27:18.77</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:27:52.658</TD><TD>+47:27:08.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:27:51.587</TD><TD>+47:26:58.02</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:27:53.315</TD><TD>+47:27:00.88</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>13:27:47.877 13:27:45.666</TD><TD>+47:26:51.00 +47:26:48.21</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>13:27:49.458</TD><TD>+47:26:51.97</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.55309 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>13:27:50.629</TD><TD>+47:26:38.39</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>9.134989 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>13:27:45.842</TD><TD>+47:26:37.75</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>13:27:48.381</TD><TD>+47:26:39.83</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.553089</TD><TD>317.55309 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>13:27:49.512</TD><TD>+47:26:26.41</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.553089</TD><TD>2.553089 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>13:27:47.127</TD><TD>+47:26:28.19</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.553089</TD><TD>317.55309 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>13:27:48.345</TD><TD>+47:26:15.86</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.553089</TD><TD>2.553089 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>13:27:46.308</TD><TD>+47:26:11.73</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>13:27:50.384</TD><TD>+47:27:57.76</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>13:27:49.426</TD><TD>+47:27:44.31</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.55409</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>13:27:48.154</TD><TD>+47:27:31.98</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.55409</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>13:27:47.011 13:27:45.968 13:27:45.922 13:27:46.964</TD><TD>+47:27:24.32 +47:27:24.79 +47:27:14.22 +47:27:13.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>13:27:45.873 13:27:44.336</TD><TD>+47:27:07.05 +47:27:06.48</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>13:27:44.228</TD><TD>+47:26:57.70</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.55409</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>13:27:43.620</TD><TD>+47:26:48.29</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.55409</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>13:27:49.096 13:27:47.395</TD><TD>+47:27:07.14 +47:27:07.21</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>13:27:51.861</TD><TD>+47:27:41.38</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>13:27:50.688</TD><TD>+47:27:29.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.55409</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>13:27:49.447</TD><TD>+47:27:17.65</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.55409</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:27:53.189</TD><TD>+47:27:28.71</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:27:51.931</TD><TD>+47:27:16.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:27:50.737</TD><TD>+47:27:05.98</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:27:53.618</TD><TD>+47:27:19.54</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:27:52.509</TD><TD>+47:27:09.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:27:51.438</TD><TD>+47:26:58.79</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:27:53.166</TD><TD>+47:27:01.65</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>13:27:47.729 13:27:45.517</TD><TD>+47:26:51.77 +47:26:48.98</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>13:27:49.309</TD><TD>+47:26:52.74</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>13:27:50.481</TD><TD>+47:26:39.16</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>9.13599 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>13:27:45.693</TD><TD>+47:26:38.52</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>13:27:48.233</TD><TD>+47:26:40.60</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.55409</TD><TD>317.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>13:27:49.363</TD><TD>+47:26:27.18</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.55409</TD><TD>2.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>13:27:46.979</TD><TD>+47:26:28.96</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.55409</TD><TD>317.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>13:27:48.197</TD><TD>+47:26:16.63</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.55409</TD><TD>2.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.fk4.reg b/tests/xml.fk4.reg
index b174aee..5dfff74 100644
--- a/tests/xml.fk4.reg
+++ b/tests/xml.fk4.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>201.96055</TD><TD>47.465832</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>201.95656</TD><TD>47.462095</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.553089</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>201.95126</TD><TD>47.458669</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.553089</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>201.9465 201.94215 201.94196 201.9463</TD><TD>47.456543 47.456674 47.453737 47.453607</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>201.94176 201.93535</TD><TD>47.451746 47.451588</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>201.9349</TD><TD>47.449146</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.553089</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>201.93237</TD><TD>47.446533</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.55309</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>201.95519 201.9481</TD><TD>47.451771 47.451789</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>201.96671</TD><TD>47.461282</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>201.96182</TD><TD>47.457961</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.553089</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>201.95665</TD><TD>47.454688</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.553089</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201.97224</TD><TD>47.457763</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201.967</TD><TD>47.454375</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201.96202</TD><TD>47.451447</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201.97403</TD><TD>47.455214</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201.96941</TD><TD>47.452432</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201.96495</TD><TD>47.449449</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201.97214</TD><TD>47.450245</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>201.94949 201.94028</TD><TD>47.4475 47.446725</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>201.95608</TD><TD>47.447769</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.55309 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>201.96096</TD><TD>47.443997</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>9.134989 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>201.94101</TD><TD>47.443819</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>201.95159</TD><TD>47.444397</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.553089</TD><TD>317.55309 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>201.9563</TD><TD>47.44067</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.553089</TD><TD>2.553089 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>201.94636</TD><TD>47.441164</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.553089</TD><TD>317.55309 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>201.95144</TD><TD>47.437738</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.553089</TD><TD>2.553089 47.553089 137.55309 227.55309</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>201.94295</TD><TD>47.436591</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>201.95993</TD><TD>47.466046</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>201.95594</TD><TD>47.462308</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.55409</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>201.95064</TD><TD>47.458883</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.55409</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>201.94588 201.94153 201.94134 201.94568</TD><TD>47.456757 47.456887 47.453951 47.45382</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>201.94114 201.93473</TD><TD>47.45196 47.451801</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>201.93428</TD><TD>47.44936</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.55409</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>201.93175</TD><TD>47.446747</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.55409</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>201.95457 201.94748</TD><TD>47.451984 47.452003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>201.96609</TD><TD>47.461495</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>201.9612</TD><TD>47.458175</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.55409</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>201.95603</TD><TD>47.454902</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.55409</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>201.97162</TD><TD>47.457976</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>201.96638</TD><TD>47.454589</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>201.9614</TD><TD>47.451661</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>201.97341</TD><TD>47.455428</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>201.96879</TD><TD>47.452645</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>201.96433</TD><TD>47.449663</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>201.97152</TD><TD>47.450458</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>201.94887 201.93966</TD><TD>47.447713 47.446938</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>201.95546</TD><TD>47.447982</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>201.96034</TD><TD>47.444211</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>9.13599 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>201.94039</TD><TD>47.444033</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>201.95097</TD><TD>47.444611</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.55409</TD><TD>317.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>201.95568</TD><TD>47.440883</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.55409</TD><TD>2.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>201.94574</TD><TD>47.441378</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.55409</TD><TD>317.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>201.95082</TD><TD>47.437951</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.55409</TD><TD>2.55409 47.55409 137.55409 227.55409</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.fk5.hms.reg b/tests/xml.fk5.hms.reg
index 64d57bf..d06b007 100644
--- a/tests/xml.fk5.hms.reg
+++ b/tests/xml.fk5.hms.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>13:29:56.891</TD><TD>+47:12:29.65</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>13:29:55.941</TD><TD>+47:12:16.17</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>13:29:54.679</TD><TD>+47:12:03.80</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>13:29:53.543 13:29:52.505 13:29:52.462 13:29:53.499</TD><TD>+47:11:56.12 +47:11:56.56 +47:11:45.99 +47:11:45.55</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>13:29:52.415 13:29:50.885</TD><TD>+47:11:38.82 +47:11:38.21</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>13:29:50.781</TD><TD>+47:11:29.41</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>13:29:50.178</TD><TD>+47:11:19.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39831</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>13:29:55.623 13:29:53.930</TD><TD>+47:11:38.99 +47:11:39.02</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>13:29:58.365</TD><TD>+47:12:13.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>13:29:57.201</TD><TD>+47:12:01.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>13:29:55.969</TD><TD>+47:11:49.51</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:59.689</TD><TD>+47:12:00.68</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:58.442</TD><TD>+47:11:48.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:57.256</TD><TD>+47:11:37.88</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:30:00.120</TD><TD>+47:11:51.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:59.018</TD><TD>+47:11:41.47</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:57.955</TD><TD>+47:11:30.70</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:59.674</TD><TD>+47:11:33.61</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>13:29:54.266 13:29:52.066</TD><TD>+47:11:23.58 +47:11:20.73</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>13:29:55.839</TD><TD>+47:11:24.59</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>13:29:57.008</TD><TD>+47:11:11.05</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>13:29:52.244</TD><TD>+47:11:10.28</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>13:29:54.770</TD><TD>+47:11:12.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>13:29:55.899</TD><TD>+47:10:59.04</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>13:29:53.525</TD><TD>+47:11:00.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>13:29:54.741</TD><TD>+47:10:48.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>13:29:52.715</TD><TD>+47:10:44.27</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>13:29:56.743</TD><TD>+47:12:30.42</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>13:29:55.792</TD><TD>+47:12:16.94</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>13:29:54.530</TD><TD>+47:12:04.57</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>13:29:53.394 13:29:52.357 13:29:52.314 13:29:53.351</TD><TD>+47:11:56.88 +47:11:57.32 +47:11:46.75 +47:11:46.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>13:29:52.267 13:29:50.737</TD><TD>+47:11:39.58 +47:11:38.97</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>13:29:50.632</TD><TD>+47:11:30.18</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>13:29:50.030</TD><TD>+47:11:20.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39831</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>13:29:55.474 13:29:53.782</TD><TD>+47:11:39.76 +47:11:39.78</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>13:29:58.217</TD><TD>+47:12:14.07</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>13:29:57.053</TD><TD>+47:12:02.09</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>13:29:55.820</TD><TD>+47:11:50.27</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:59.541</TD><TD>+47:12:01.44</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:58.293</TD><TD>+47:11:49.21</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:57.107</TD><TD>+47:11:38.64</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:59.971</TD><TD>+47:11:52.28</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:58.870</TD><TD>+47:11:42.23</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:57.807</TD><TD>+47:11:31.47</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:59.526</TD><TD>+47:11:34.38</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>13:29:54.118 13:29:51.918</TD><TD>+47:11:24.35 +47:11:21.50</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>13:29:55.690</TD><TD>+47:11:25.36</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>13:29:56.859</TD><TD>+47:11:11.81</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>13:29:52.095</TD><TD>+47:11:11.04</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>13:29:54.622</TD><TD>+47:11:13.19</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>13:29:55.750</TD><TD>+47:10:59.80</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>13:29:53.377</TD><TD>+47:11:01.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>13:29:54.593</TD><TD>+47:10:49.22</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.fk5.reg b/tests/xml.fk5.reg
index 6eb1bb9..3a83f03 100644
--- a/tests/xml.fk5.reg
+++ b/tests/xml.fk5.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>202.48705</TD><TD>47.208237</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>202.48309</TD><TD>47.204492</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>202.47783</TD><TD>47.201057</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>202.47309 202.46877 202.46859 202.47291</TD><TD>47.198922 47.199044 47.196108 47.195985</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>202.4684 202.46202</TD><TD>47.194116 47.193946</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>202.46159</TD><TD>47.191504</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>202.45907</TD><TD>47.188886</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39831</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>202.48176 202.47471</TD><TD>47.194165 47.194171</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>202.49319</TD><TD>47.203697</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>202.48834</TD><TD>47.200368</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>202.4832</TD><TD>47.197085</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49871</TD><TD>47.200189</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49351</TD><TD>47.196791</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.48857</TD><TD>47.193854</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.5005</TD><TD>47.197643</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49591</TD><TD>47.194852</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49148</TD><TD>47.191862</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49864</TD><TD>47.19267</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>202.47611 202.46694</TD><TD>47.189884 47.189092</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>202.48266</TD><TD>47.190165</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>202.48753</TD><TD>47.186403</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>202.46768</TD><TD>47.186188</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>202.47821</TD><TD>47.186785</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>202.48291</TD><TD>47.183066</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>202.47302</TD><TD>47.183543</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>202.47809</TD><TD>47.180126</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>202.46965</TD><TD>47.178963</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>202.48643</TD><TD>47.208449</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>202.48247</TD><TD>47.204704</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>202.47721</TD><TD>47.201269</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>202.47248 202.46815 202.46797 202.4723</TD><TD>47.199134 47.199257 47.19632 47.196197</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>202.46778 202.4614</TD><TD>47.194329 47.194158</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>202.46097</TD><TD>47.191716</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>202.45846</TD><TD>47.189099</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39831</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>202.48114 202.47409</TD><TD>47.194378 47.194383</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>202.49257</TD><TD>47.20391</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>202.48772</TD><TD>47.20058</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>202.48258</TD><TD>47.197298</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49809</TD><TD>47.200401</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49289</TD><TD>47.197004</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.48795</TD><TD>47.194067</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49988</TD><TD>47.197856</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49529</TD><TD>47.195065</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49086</TD><TD>47.192074</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49802</TD><TD>47.192883</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>202.47549 202.46632</TD><TD>47.190096 47.189304</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>202.48204</TD><TD>47.190378</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>202.48691</TD><TD>47.186615</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>202.46706</TD><TD>47.1864</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>202.47759</TD><TD>47.186997</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>202.48229</TD><TD>47.183279</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>202.47241</TD><TD>47.183755</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>202.47747</TD><TD>47.180338</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.galactic.hms.reg b/tests/xml.galactic.hms.reg
index 1f1c76e..74fd720 100644
--- a/tests/xml.galactic.hms.reg
+++ b/tests/xml.galactic.hms.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>+104:50:10.908</TD><TD>+68:32:38.464</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>+104:50:20.096</TD><TD>+68:32:54.718</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>+104:50:38.471</TD><TD>+68:33:11.247</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+104:50:58.854 +104:51:25.768 +104:51:15.116 +104:50:48.199</TD><TD>+68:33:22.977 +68:33:26.871 +68:33:36.710 +68:33:32.816</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>+104:51:08.330 +104:51:46.639</TD><TD>+68:33:43.453 +68:33:50.350</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>+104:51:39.534</TD><TD>+68:33:58.818</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>+104:51:44.421</TD><TD>+68:34:09.924</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>113.38935</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+104:49:46.822 +104:50:29.960</TD><TD>+68:33:29.997 +68:33:36.996</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>+104:49:15.203</TD><TD>+68:32:47.274</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>+104:49:31.493</TD><TD>+68:33:03.053</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>+104:49:49.713</TD><TD>+68:33:18.959</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+104:48:27.434</TD><TD>+68:32:53.313</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+104:48:45.571</TD><TD>+68:33:09.663</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+104:49:03.986</TD><TD>+68:33:24.243</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+104:48:06.279</TD><TD>+68:32:59.893</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+104:48:23.111</TD><TD>+68:33:13.643</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+104:48:38.174</TD><TD>+68:33:27.889</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+104:47:57.663</TD><TD>+68:33:18.094</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>+104:50:04.231 +104:50:57.113</TD><TD>+68:33:49.703 +68:34:01.425</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+104:49:25.285</TD><TD>+68:33:42.254</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+104:48:40.416</TD><TD>+68:33:49.773</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>164.97125 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>+104:50:40.959</TD><TD>+68:34:10.243</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+104:49:38.951</TD><TD>+68:33:57.801</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+104:48:55.286</TD><TD>+68:34:05.346</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+104:49:57.683</TD><TD>+68:34:13.628</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+104:49:13.002</TD><TD>+68:34:19.822</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>+104:49:59.987</TD><TD>+68:34:32.051</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>+104:50:15.532</TD><TD>+68:32:38.380</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>+104:50:24.720</TD><TD>+68:32:54.634</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>+104:50:43.097</TD><TD>+68:33:11.163</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+104:51:03.480 +104:51:30.395 +104:51:19.743 +104:50:52.826</TD><TD>+68:33:22.893 +68:33:26.787 +68:33:36.626 +68:33:32.732</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>+104:51:12.957 +104:51:51.267</TD><TD>+68:33:43.369 +68:33:50.265</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>+104:51:44.162</TD><TD>+68:33:58.733</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>+104:51:49.050</TD><TD>+68:34:09.839</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>113.38935</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+104:49:51.449 +104:50:34.587</TD><TD>+68:33:29.913 +68:33:36.913</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>+104:49:19.827</TD><TD>+68:32:47.191</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>+104:49:36.118</TD><TD>+68:33:02.969</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>+104:49:54.339</TD><TD>+68:33:18.875</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+104:48:32.059</TD><TD>+68:32:53.230</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+104:48:50.197</TD><TD>+68:33:09.580</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+104:49:08.613</TD><TD>+68:33:24.159</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+104:48:10.904</TD><TD>+68:32:59.810</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+104:48:27.737</TD><TD>+68:33:13.560</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+104:48:42.801</TD><TD>+68:33:27.806</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+104:48:02.289</TD><TD>+68:33:18.011</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>+104:50:08.859 +104:51:01.742</TD><TD>+68:33:49.619 +68:34:01.341</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+104:49:29.913</TD><TD>+68:33:42.170</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+104:48:45.044</TD><TD>+68:33:49.690</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>164.97125 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>+104:50:45.588</TD><TD>+68:34:10.159</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+104:49:43.580</TD><TD>+68:33:57.717</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+104:48:59.915</TD><TD>+68:34:05.263</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+104:50:02.312</TD><TD>+68:34:13.544</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+104:49:17.632</TD><TD>+68:34:19.739</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.galactic.reg b/tests/xml.galactic.reg
index 1dd97d4..76036aa 100644
--- a/tests/xml.galactic.reg
+++ b/tests/xml.galactic.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>104.83636</TD><TD>68.544018</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>104.83892</TD><TD>68.548533</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>104.84402</TD><TD>68.553124</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>104.84968 104.85716 104.8542 104.84672</TD><TD>68.556382 68.557464 68.560197 68.559116</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>104.85231 104.86296</TD><TD>68.56207 68.563986</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>104.86098</TD><TD>68.566338</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>104.86234</TD><TD>68.569423</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>113.38935</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>104.82967 104.84166</TD><TD>68.558332 68.560277</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>104.82089</TD><TD>68.546465</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>104.82541</TD><TD>68.550848</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>104.83048</TD><TD>68.555266</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>104.80762</TD><TD>68.548142</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>104.81266</TD><TD>68.552684</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>104.81777</TD><TD>68.556734</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>104.80174</TD><TD>68.54997</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>104.80642</TD><TD>68.55379</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>104.8106</TD><TD>68.557747</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>104.79935</TD><TD>68.555026</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>104.83451 104.8492</TD><TD>68.563806 68.567063</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>104.82369</TD><TD>68.561737</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>104.81123</TD><TD>68.563826</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>164.97125 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>104.84471</TD><TD>68.569512</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>104.82749</TD><TD>68.566056</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>104.81536</TD><TD>68.568152</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>104.83269</TD><TD>68.570452</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>104.82028</TD><TD>68.572173</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>104.83333</TD><TD>68.57557</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>104.83765</TD><TD>68.543994</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>104.8402</TD><TD>68.54851</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>104.8453</TD><TD>68.553101</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>104.85097 104.85844 104.85548 104.84801</TD><TD>68.556359 68.557441 68.560174 68.559092</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>104.8536 104.86424</TD><TD>68.562047 68.563963</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>104.86227</TD><TD>68.566315</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>104.86363</TD><TD>68.5694</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>113.38935</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>104.83096 104.84294</TD><TD>68.558309 68.560253</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>104.82217</TD><TD>68.546442</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>104.8267</TD><TD>68.550825</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>104.83176</TD><TD>68.555243</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>104.80891</TD><TD>68.548119</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>104.81394</TD><TD>68.552661</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>104.81906</TD><TD>68.556711</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>104.80303</TD><TD>68.549947</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>104.8077</TD><TD>68.553767</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>104.81189</TD><TD>68.557724</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>104.80064</TD><TD>68.555003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>104.83579 104.85048</TD><TD>68.563783 68.567039</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>104.82498</TD><TD>68.561714</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>104.81251</TD><TD>68.563803</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>164.97125 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>104.846</TD><TD>68.569488</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>104.82877</TD><TD>68.566033</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>104.81664</TD><TD>68.568129</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>104.83398</TD><TD>68.570429</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>113.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>104.82156</TD><TD>68.57215</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>158.38935</TD><TD>158.38935 203.38935 293.38935 23.389346</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.icrs.hms.reg b/tests/xml.icrs.hms.reg
index e182c5b..3be2bdc 100644
--- a/tests/xml.icrs.hms.reg
+++ b/tests/xml.icrs.hms.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>13:29:56.891</TD><TD>+47:12:29.65</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>13:29:55.941</TD><TD>+47:12:16.17</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>13:29:54.679</TD><TD>+47:12:03.80</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>13:29:53.543 13:29:52.505 13:29:52.462 13:29:53.499</TD><TD>+47:11:56.12 +47:11:56.56 +47:11:45.99 +47:11:45.55</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>13:29:52.415 13:29:50.885</TD><TD>+47:11:38.82 +47:11:38.21</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>13:29:50.781</TD><TD>+47:11:29.41</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>13:29:50.178</TD><TD>+47:11:19.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39831</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>13:29:55.623 13:29:53.930</TD><TD>+47:11:38.99 +47:11:39.02</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>13:29:58.365</TD><TD>+47:12:13.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>13:29:57.201</TD><TD>+47:12:01.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>13:29:55.969</TD><TD>+47:11:49.51</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:59.689</TD><TD>+47:12:00.68</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:58.442</TD><TD>+47:11:48.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:57.256</TD><TD>+47:11:37.88</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:30:00.120</TD><TD>+47:11:51.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:59.018</TD><TD>+47:11:41.47</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:57.955</TD><TD>+47:11:30.70</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>13:29:59.674</TD><TD>+47:11:33.61</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>13:29:54.266 13:29:52.066</TD><TD>+47:11:23.58 +47:11:20.73</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>13:29:55.839</TD><TD>+47:11:24.59</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>13:29:57.008</TD><TD>+47:11:11.05</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>13:29:52.244</TD><TD>+47:11:10.28</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>13:29:54.770</TD><TD>+47:11:12.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>13:29:55.899</TD><TD>+47:10:59.04</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>13:29:53.525</TD><TD>+47:11:00.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>13:29:54.741</TD><TD>+47:10:48.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>13:29:52.715</TD><TD>+47:10:44.27</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>13:29:56.743</TD><TD>+47:12:30.42</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>13:29:55.792</TD><TD>+47:12:16.94</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>13:29:54.530</TD><TD>+47:12:04.57</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>13:29:53.394 13:29:52.357 13:29:52.314 13:29:53.351</TD><TD>+47:11:56.88 +47:11:57.33 +47:11:46.75 +47:11:46.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>13:29:52.267 13:29:50.737</TD><TD>+47:11:39.58 +47:11:38.97</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>13:29:50.632</TD><TD>+47:11:30.18</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>13:29:50.030</TD><TD>+47:11:20.76</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39832</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>13:29:55.474 13:29:53.782</TD><TD>+47:11:39.76 +47:11:39.78</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>13:29:58.217</TD><TD>+47:12:14.08</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>13:29:57.053</TD><TD>+47:12:02.09</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>13:29:55.820</TD><TD>+47:11:50.27</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:59.541</TD><TD>+47:12:01.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:58.293</TD><TD>+47:11:49.22</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:57.108</TD><TD>+47:11:38.64</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:59.971</TD><TD>+47:11:52.28</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:58.870</TD><TD>+47:11:42.24</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:57.807</TD><TD>+47:11:31.47</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>13:29:59.526</TD><TD>+47:11:34.38</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>13:29:54.118 13:29:51.918</TD><TD>+47:11:24.35 +47:11:21.50</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>13:29:55.691</TD><TD>+47:11:25.36</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39832 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>13:29:56.859</TD><TD>+47:11:11.82</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802198 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>13:29:52.095</TD><TD>+47:11:11.04</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>13:29:54.622</TD><TD>+47:11:13.19</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983198</TD><TD>317.39832 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>13:29:55.751</TD><TD>+47:10:59.81</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983198</TD><TD>2.3983198 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>13:29:53.377</TD><TD>+47:11:01.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983198</TD><TD>317.39832 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>13:29:54.593</TD><TD>+47:10:49.22</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983198</TD><TD>2.3983198 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.icrs.reg b/tests/xml.icrs.reg
index d437f19..d6e5c96 100644
--- a/tests/xml.icrs.reg
+++ b/tests/xml.icrs.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>202.48705</TD><TD>47.208237</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>202.48309</TD><TD>47.204492</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>202.47783</TD><TD>47.201057</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>202.47309 202.46877 202.46859 202.47291</TD><TD>47.198922 47.199044 47.196108 47.195985</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>202.4684 202.46202</TD><TD>47.194116 47.193946</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>202.46159</TD><TD>47.191504</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>202.45907</TD><TD>47.188886</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39831</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>202.48176 202.47471</TD><TD>47.194165 47.194171</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>202.49319</TD><TD>47.203697</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>202.48834</TD><TD>47.200368</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>202.4832</TD><TD>47.197085</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49871</TD><TD>47.200189</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49351</TD><TD>47.196791</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.48857</TD><TD>47.193854</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.5005</TD><TD>47.197643</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49591</TD><TD>47.194852</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49148</TD><TD>47.191862</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>202.49864</TD><TD>47.19267</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>202.47611 202.46694</TD><TD>47.189884 47.189092</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>202.48266</TD><TD>47.190165</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>202.48753</TD><TD>47.186403</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>202.46768</TD><TD>47.186188</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>202.47821</TD><TD>47.186785</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>202.48291</TD><TD>47.183066</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>202.47302</TD><TD>47.183543</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>317.39831 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>202.47809</TD><TD>47.180126</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983109</TD><TD>2.3983109 47.398311 137.39831 227.39831</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>202.46965</TD><TD>47.178963</TD><TD></TD><TD></TD><TD>1.9820003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>202.48643</TD><TD>47.208449</TD><TD></TD><TD></TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>202.48247</TD><TD>47.204705</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>202.47721</TD><TD>47.20127</TD><TD></TD><TD></TD><TD>15.856003</TD><TD>7.9280014</TD><TD></TD><TD></TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>202.47248 202.46815 202.46797 202.4723</TD><TD>47.199135 47.199257 47.19632 47.196198</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>202.46778 202.4614</TD><TD>47.194329 47.194159</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>202.46097</TD><TD>47.191716</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>202.45846</TD><TD>47.189099</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>317.39832</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>202.48114 202.47409</TD><TD>47.194378 47.194384</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>202.49257</TD><TD>47.20391</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1.9820003 3.9640007 5.946001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>202.48772</TD><TD>47.200581</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>202.48259</TD><TD>47.197298</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983198</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49809</TD><TD>47.200401</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49289</TD><TD>47.197004</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.48795</TD><TD>47.194067</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49988</TD><TD>47.197856</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49529</TD><TD>47.195065</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49086</TD><TD>47.192075</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>202.49802</TD><TD>47.192883</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>202.47549 202.46632</TD><TD>47.190097 47.189305</TD><TD>3.9640007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>202.48204</TD><TD>47.190378</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>317.39832 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>202.48691</TD><TD>47.186615</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 2.9730005 5.946001</TD><TD></TD><TD></TD><TD>8.9802198 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>202.46706</TD><TD>47.186401</TD><TD></TD><TD></TD><TD>7.9280014</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>202.47759</TD><TD>47.186998</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983198</TD><TD>317.39832 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>202.48229</TD><TD>47.183279</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.9730005 5.946001</TD><TD>1.4865003 2.9730005</TD><TD>2.3983198</TD><TD>2.3983198 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>202.47241</TD><TD>47.183755</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983198</TD><TD>317.39832 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>202.47747</TD><TD>47.180338</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>7.9280014 11.892002</TD><TD>3.9640007 5.946001</TD><TD>2.3983198</TD><TD>2.3983198 47.39832 137.39832 227.39832</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.image.reg b/tests/xml.image.reg
index 846f717..6571464 100644
--- a/tests/xml.image.reg
+++ b/tests/xml.image.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>163</TD><TD>538</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>245</TD><TD>521</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>335</TD><TD>519</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>404.24723 442 479.75277 442</TD><TD>530 567.75275 530 492.24723</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>506 566</TD><TD>505 556</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>600</TD><TD>527</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>655</TD><TD>513</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>384 448</TD><TD>394 453</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>163</TD><TD>426</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>248</TD><TD>422</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>335</TD><TD>421</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>156</TD><TD>333</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>245</TD><TD>331</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>326</TD><TD>333</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>171</TD><TD>284</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>247</TD><TD>285</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>324</TD><TD>282</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>249</TD><TD>233</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>488 581</TD><TD>384 450</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>425</TD><TD>333</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>427</TD><TD>242</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>610</TD><TD>405</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>507</TD><TD>325</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>510</TD><TD>236</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>594</TD><TD>325</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>590</TD><TD>237</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>681</TD><TD>292</TD><TD></TD><TD></TD><TD>10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>166</TD><TD>546</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>248</TD><TD>529</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>338</TD><TD>527</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>407.24723 445 482.75277 445</TD><TD>538 575.75275 538 500.24723</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>509 569</TD><TD>513 564</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>603</TD><TD>535</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>658</TD><TD>521</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>387 451</TD><TD>402 461</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>166</TD><TD>434</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>251</TD><TD>430</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>338</TD><TD>429</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>159</TD><TD>341</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>248</TD><TD>339</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>329</TD><TD>341</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>174</TD><TD>292</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>250</TD><TD>293</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>327</TD><TD>290</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>252</TD><TD>241</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>491 584</TD><TD>392 458</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>428</TD><TD>341</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>430</TD><TD>250</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>613</TD><TD>413</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>510</TD><TD>333</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>513</TD><TD>244</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>597</TD><TD>333</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>593</TD><TD>245</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.ecliptic.hms.reg b/tests/xml.mosaic.ecliptic.hms.reg
index 0a0c1d9..7f0dd1f 100644
--- a/tests/xml.mosaic.ecliptic.hms.reg
+++ b/tests/xml.mosaic.ecliptic.hms.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>+275:41:43.773</TD><TD>+54:45:57.589</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>+275:40:56.041</TD><TD>+54:45:53.192</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>+275:40:04.095</TD><TD>+54:45:53.902</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+275:39:24.458 +275:39:03.682 +275:38:40.920 +275:39:01.697</TD><TD>+54:45:58.616 +54:46:11.747 +54:45:59.761 +54:45:46.630</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>+275:38:25.131 +275:37:51.868</TD><TD>+54:45:51.841 +54:46:09.713</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>+275:37:31.505</TD><TD>+54:46:00.577</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>+275:36:59.426</TD><TD>+54:45:56.747</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+275:39:32.548 +275:38:57.206</TD><TD>+54:45:13.067 +54:45:33.665</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>+275:41:40.788</TD><TD>+54:45:20.333</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>+275:40:51.684</TD><TD>+54:45:20.306</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>+275:40:01.506</TD><TD>+54:45:21.303</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:41:42.345</TD><TD>+54:44:49.289</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:40:50.999</TD><TD>+54:44:49.989</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:40:04.369</TD><TD>+54:44:51.892</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:41:32.396</TD><TD>+54:44:33.220</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:40:48.627</TD><TD>+54:44:34.718</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:40:04.174</TD><TD>+54:44:34.896</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:40:46.096</TD><TD>+54:44:17.451</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>+275:38:32.337 +275:37:40.451</TD><TD>+54:45:11.318 +54:45:34.677</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+275:39:07.311</TD><TD>+54:44:53.398</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+275:39:03.767</TD><TD>+54:44:23.157</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>+275:37:22.559</TD><TD>+54:45:20.143</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+275:38:19.840</TD><TD>+54:44:51.978</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+275:38:15.782</TD><TD>+54:44:22.417</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+275:37:29.697</TD><TD>+54:44:53.290</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+275:37:29.709</TD><TD>+54:44:23.956</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>+275:36:38.697</TD><TD>+54:44:43.618</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>+275:49:26.999</TD><TD>+54:48:27.679</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>+275:48:39.203</TD><TD>+54:48:23.333</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>+275:47:47.207</TD><TD>+54:48:24.098</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+275:47:07.544 +275:46:46.788 +275:46:23.965 +275:46:44.721</TD><TD>+54:48:28.854 +54:48:42.007 +54:48:30.045 +54:48:16.892</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>+275:46:08.134 +275:45:34.893</TD><TD>+54:48:22.142 +54:48:40.049</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>+275:45:14.480</TD><TD>+54:48:30.935</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>+275:44:42.356</TD><TD>+54:48:27.138</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+275:47:15.497 +275:46:40.184</TD><TD>+54:47:43.297 +54:48:03.932</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>+275:49:23.892</TD><TD>+54:47:50.426</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>+275:48:34.737</TD><TD>+54:47:50.452</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>+275:47:44.511</TD><TD>+54:47:51.501</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:49:25.352</TD><TD>+54:47:19.381</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:48:33.956</TD><TD>+54:47:20.136</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:47:47.284</TD><TD>+54:47:22.088</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:49:15.342</TD><TD>+54:47:03.323</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:48:31.532</TD><TD>+54:47:04.867</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:47:47.035</TD><TD>+54:47:05.093</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+275:48:28.944</TD><TD>+54:46:47.603</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>+275:46:15.218 +275:45:23.353</TD><TD>+54:47:41.611 +54:48:05.025</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+275:46:50.171</TD><TD>+54:47:23.654</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+275:46:46.527</TD><TD>+54:46:53.417</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>+275:45:05.397</TD><TD>+54:47:50.510</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+275:46:02.647</TD><TD>+54:47:22.285</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+275:45:58.491</TD><TD>+54:46:52.728</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+275:45:12.456</TD><TD>+54:47:23.649</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+275:45:12.375</TD><TD>+54:46:54.315</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>+275:44:21.373</TD><TD>+54:47:14.031</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>+275:41:56.645</TD><TD>+54:45:59.579</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>+275:41:08.911</TD><TD>+54:45:55.184</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>+275:40:16.965</TD><TD>+54:45:55.895</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+275:39:37.328 +275:39:16.553 +275:38:53.790 +275:39:14.565</TD><TD>+54:46:00.610 +54:46:13.742 +54:46:01.756 +54:45:48.625</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>+275:38:37.999 +275:38:04.737</TD><TD>+54:45:53.837 +54:46:11.709</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>+275:37:44.373</TD><TD>+54:46:02.575</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>+275:37:12.294</TD><TD>+54:45:58.745</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+275:39:45.414 +275:39:10.074</TD><TD>+54:45:15.061 +54:45:35.660</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>+275:41:53.657</TD><TD>+54:45:22.323</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>+275:41:04.552</TD><TD>+54:45:22.298</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>+275:40:14.373</TD><TD>+54:45:23.296</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:41:55.211</TD><TD>+54:44:51.279</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:41:03.864</TD><TD>+54:44:51.981</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:40:17.234</TD><TD>+54:44:53.885</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:41:45.260</TD><TD>+54:44:35.210</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:41:01.490</TD><TD>+54:44:36.710</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:40:17.038</TD><TD>+54:44:36.889</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:40:58.958</TD><TD>+54:44:19.443</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>+275:38:45.202 +275:37:53.317</TD><TD>+54:45:13.313 +54:45:36.674</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+275:39:20.175</TD><TD>+54:44:55.392</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+275:39:16.628</TD><TD>+54:44:25.151</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>+275:37:35.424</TD><TD>+54:45:22.141</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+275:38:32.703</TD><TD>+54:44:53.974</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+275:38:28.642</TD><TD>+54:44:24.413</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+275:37:42.560</TD><TD>+54:44:55.287</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+275:37:42.569</TD><TD>+54:44:25.953</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>+275:49:30.767</TD><TD>+54:48:31.242</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>+275:48:42.970</TD><TD>+54:48:26.897</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>+275:47:50.972</TD><TD>+54:48:27.662</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+275:47:11.308 +275:46:50.552 +275:46:27.728 +275:46:48.485</TD><TD>+54:48:32.418 +54:48:45.571 +54:48:33.609 +54:48:20.456</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>+275:46:11.897 +275:45:38.656</TD><TD>+54:48:25.707 +54:48:43.613</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>+275:45:18.242</TD><TD>+54:48:34.500</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>+275:44:46.117</TD><TD>+54:48:30.703</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+275:47:19.261 +275:46:43.948</TD><TD>+54:47:46.861 +54:48:07.496</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>+275:49:27.659</TD><TD>+54:47:53.989</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>+275:48:38.503</TD><TD>+54:47:54.015</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>+275:47:48.276</TD><TD>+54:47:55.065</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:49:29.118</TD><TD>+54:47:22.944</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:48:37.721</TD><TD>+54:47:23.699</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:47:51.047</TD><TD>+54:47:25.652</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:49:19.107</TD><TD>+54:47:06.886</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:48:35.297</TD><TD>+54:47:08.431</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:47:50.798</TD><TD>+54:47:08.656</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+275:48:32.708</TD><TD>+54:46:51.166</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>+275:46:18.980 +275:45:27.114</TD><TD>+54:47:45.175 +54:48:08.590</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+275:46:53.934</TD><TD>+54:47:27.218</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+275:46:50.289</TD><TD>+54:46:56.981</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>+275:45:09.157</TD><TD>+54:47:54.075</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+275:46:06.408</TD><TD>+54:47:25.849</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+275:46:02.251</TD><TD>+54:46:56.293</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+275:45:16.217</TD><TD>+54:47:27.214</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+275:45:16.134</TD><TD>+54:46:57.880</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.ecliptic.reg b/tests/xml.mosaic.ecliptic.reg
index a495962..0f5b6b6 100644
--- a/tests/xml.mosaic.ecliptic.reg
+++ b/tests/xml.mosaic.ecliptic.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>275.69549</TD><TD>54.765997</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>275.68223</TD><TD>54.764776</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>275.6678</TD><TD>54.764973</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>275.65679 275.65102 275.6447 275.65047</TD><TD>54.766282 54.76993 54.7666 54.762953</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>275.64031 275.63107</TD><TD>54.7644 54.769365</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>275.62542</TD><TD>54.766827</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>275.61651</TD><TD>54.765763</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>275.65904 275.64922</TD><TD>54.75363 54.759351</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>275.69466</TD><TD>54.755648</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>275.68102</TD><TD>54.755641</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>275.66709</TD><TD>54.755917</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.6951</TD><TD>54.747025</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.68083</TD><TD>54.747219</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.66788</TD><TD>54.747748</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.69233</TD><TD>54.742561</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.68017</TD><TD>54.742977</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.66783</TD><TD>54.743027</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.67947</TD><TD>54.738181</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>275.64232 275.6279</TD><TD>54.753144 54.759632</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>275.65203</TD><TD>54.748166</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>275.65105</TD><TD>54.739766</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>275.62293</TD><TD>54.755595</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>275.63884</TD><TD>54.747772</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>275.63772</TD><TD>54.73956</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>275.62492</TD><TD>54.748136</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>275.62492</TD><TD>54.739988</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>275.61075</TD><TD>54.745449</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>275.82417</TD><TD>54.807689</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>275.81089</TD><TD>54.806482</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>275.79645</TD><TD>54.806694</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>275.78543 275.77966 275.77332 275.77909</TD><TD>54.808015 54.811669 54.808346 54.804692</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>275.76893 275.75969</TD><TD>54.806151 54.811125</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>275.75402</TD><TD>54.808593</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>275.7451</TD><TD>54.807538</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>275.78764 275.77783</TD><TD>54.79536 54.801092</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>275.8233</TD><TD>54.797341</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>275.80965</TD><TD>54.797348</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>275.7957</TD><TD>54.797639</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.82371</TD><TD>54.788717</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.80943</TD><TD>54.788927</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.79647</TD><TD>54.789469</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.82093</TD><TD>54.784256</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.80876</TD><TD>54.784685</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.7964</TD><TD>54.784748</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>275.80804</TD><TD>54.77989</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>275.77089 275.75649</TD><TD>54.794892 54.801396</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>275.7806</TD><TD>54.789904</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>275.77959</TD><TD>54.781505</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>275.7515</TD><TD>54.797364</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>275.7674</TD><TD>54.789524</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>275.76625</TD><TD>54.781313</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>275.75346</TD><TD>54.789903</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>275.75344</TD><TD>54.781754</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>275.73927</TD><TD>54.787231</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>275.69907</TD><TD>54.76655</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>275.68581</TD><TD>54.765329</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>275.67138</TD><TD>54.765526</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>275.66037 275.6546 275.64827 275.65405</TD><TD>54.766836 54.770484 54.767154 54.763507</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>275.64389 275.63465</TD><TD>54.764955 54.769919</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>275.62899</TD><TD>54.767382</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>275.62008</TD><TD>54.766318</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>275.66262 275.6528</TD><TD>54.754184 54.759906</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>275.69824</TD><TD>54.756201</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>275.6846</TD><TD>54.756194</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>275.67066</TD><TD>54.756471</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.69867</TD><TD>54.747578</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.68441</TD><TD>54.747772</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.67145</TD><TD>54.748301</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.69591</TD><TD>54.743114</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.68375</TD><TD>54.74353</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.6714</TD><TD>54.74358</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.68304</TD><TD>54.738734</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>275.64589 275.63148</TD><TD>54.753698 54.760187</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>275.6556</TD><TD>54.74872</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>275.65462</TD><TD>54.74032</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>275.62651</TD><TD>54.75615</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>275.64242</TD><TD>54.748326</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>275.64129</TD><TD>54.740115</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>275.62849</TD><TD>54.748691</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>275.62849</TD><TD>54.740543</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>275.82521</TD><TD>54.808678</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>275.81194</TD><TD>54.807471</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>275.79749</TD><TD>54.807684</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>275.78647 275.78071 275.77437 275.78013</TD><TD>54.809005 54.812659 54.809336 54.805682</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>275.76997 275.76074</TD><TD>54.807141 54.812115</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>275.75507</TD><TD>54.809583</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>275.74614</TD><TD>54.808529</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>2.5210862</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>275.78868 275.77887</TD><TD>54.79635 54.802082</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>275.82435</TD><TD>54.79833</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>275.8107</TD><TD>54.798338</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>275.79674</TD><TD>54.798629</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.82476</TD><TD>54.789707</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.81048</TD><TD>54.789916</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.79751</TD><TD>54.790459</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.82197</TD><TD>54.785246</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.8098</TD><TD>54.785675</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.79744</TD><TD>54.785738</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>275.80909</TD><TD>54.780879</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>275.77194 275.75753</TD><TD>54.795882 54.802386</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>275.78165</TD><TD>54.790894</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>275.78064</TD><TD>54.782495</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>54.102986 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>275.75254</TD><TD>54.798354</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>275.76845</TD><TD>54.790514</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>275.76729</TD><TD>54.782303</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>275.7545</TD><TD>54.790893</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>2.5210862 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>275.75448</TD><TD>54.782745</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>47.521086</TD><TD>47.521086 92.521086 182.52109 272.52109</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.fk4.hms.reg b/tests/xml.mosaic.fk4.hms.reg
index 907c779..8f4e222 100644
--- a/tests/xml.mosaic.fk4.hms.reg
+++ b/tests/xml.mosaic.fk4.hms.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>18:13:31.474</TD><TD>+31:23:07.12</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>18:13:29.339</TD><TD>+31:23:01.61</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>18:13:26.999</TD><TD>+31:23:01.10</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:13:25.199 18:13:24.223 18:13:23.236 18:13:24.212</TD><TD>+31:23:04.89 +31:23:17.53 +31:23:05.02 +31:22:52.39</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>18:13:22.550 18:13:20.997</TD><TD>+31:22:56.74 +31:23:13.83</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>18:13:20.109</TD><TD>+31:23:04.23</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>18:13:18.676</TD><TD>+31:22:59.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:13:25.707 18:13:24.051</TD><TD>+31:22:19.57 +31:22:39.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>18:13:31.458</TD><TD>+31:22:29.82</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>18:13:29.247</TD><TD>+31:22:28.65</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>18:13:26.985</TD><TD>+31:22:28.47</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:31.627</TD><TD>+31:21:58.84</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:29.312</TD><TD>+31:21:58.34</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:27.207</TD><TD>+31:21:59.15</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:31.229</TD><TD>+31:21:42.55</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:29.254</TD><TD>+31:21:43.03</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:27.252</TD><TD>+31:21:42.17</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:29.194</TD><TD>+31:21:25.71</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:13:23.002 18:13:20.592</TD><TD>+31:22:16.42 +31:22:38.56</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:13:24.633</TD><TD>+31:21:59.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:13:24.568</TD><TD>+31:21:29.03</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>18:13:19.832</TD><TD>+31:22:23.62</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:13:22.500</TD><TD>+31:21:56.81</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:13:22.410</TD><TD>+31:21:27.17</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:13:20.238</TD><TD>+31:21:56.96</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:13:20.330</TD><TD>+31:21:27.65</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>18:13:17.972</TD><TD>+31:21:46.11</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>18:13:51.837</TD><TD>+31:25:48.08</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>18:13:49.701</TD><TD>+31:25:42.59</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>18:13:47.360</TD><TD>+31:25:42.11</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:13:45.560 18:13:44.583 18:13:43.595 18:13:44.572</TD><TD>+31:25:45.92 +31:25:58.56 +31:25:46.07 +31:25:33.42</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>18:13:42.909 18:13:41.355</TD><TD>+31:25:37.80 +31:25:54.90</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>18:13:40.466</TD><TD>+31:25:45.31</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>18:13:39.033</TD><TD>+31:25:40.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:13:46.065 18:13:44.409</TD><TD>+31:25:00.59 +31:25:20.36</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>18:13:51.819</TD><TD>+31:25:10.79</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>18:13:49.607</TD><TD>+31:25:09.63</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>18:13:47.344</TD><TD>+31:25:09.48</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:51.986</TD><TD>+31:24:39.80</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:49.671</TD><TD>+31:24:39.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:47.564</TD><TD>+31:24:40.16</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:51.588</TD><TD>+31:24:23.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:49.611</TD><TD>+31:24:24.01</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:47.608</TD><TD>+31:24:23.17</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:13:49.551</TD><TD>+31:24:06.70</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:13:43.358 18:13:40.949</TD><TD>+31:24:57.47 +31:25:19.63</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:13:44.989</TD><TD>+31:24:40.36</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:13:44.923</TD><TD>+31:24:10.06</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>18:13:40.188</TD><TD>+31:25:04.70</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:13:42.855</TD><TD>+31:24:37.86</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:13:42.763</TD><TD>+31:24:08.23</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:13:40.592</TD><TD>+31:24:38.03</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:13:40.682</TD><TD>+31:24:08.72</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>18:13:38.324</TD><TD>+31:24:27.21</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>18:13:32.047</TD><TD>+31:23:09.41</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>18:13:29.912</TD><TD>+31:23:03.90</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>18:13:27.572</TD><TD>+31:23:03.40</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:13:25.772 18:13:24.796 18:13:23.809 18:13:24.786</TD><TD>+31:23:07.18 +31:23:19.82 +31:23:07.32 +31:22:54.68</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>18:13:23.123 18:13:21.570</TD><TD>+31:22:59.04 +31:23:16.12</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>18:13:20.682</TD><TD>+31:23:06.52</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>18:13:19.250</TD><TD>+31:23:01.96</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:13:26.280 18:13:24.624</TD><TD>+31:22:21.86 +31:22:41.62</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>18:13:32.031</TD><TD>+31:22:32.11</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>18:13:29.820</TD><TD>+31:22:30.94</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>18:13:27.558</TD><TD>+31:22:30.76</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:32.200</TD><TD>+31:22:01.13</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:29.885</TD><TD>+31:22:00.63</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:27.780</TD><TD>+31:22:01.44</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:31.802</TD><TD>+31:21:44.84</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:29.827</TD><TD>+31:21:45.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:27.824</TD><TD>+31:21:44.46</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:29.767</TD><TD>+31:21:28.00</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:13:23.575 18:13:21.165</TD><TD>+31:22:18.71 +31:22:40.85</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:13:25.206</TD><TD>+31:22:01.62</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:13:25.141</TD><TD>+31:21:31.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>18:13:20.405</TD><TD>+31:22:25.92</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:13:23.073</TD><TD>+31:21:59.10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:13:22.983</TD><TD>+31:21:29.47</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:13:20.811</TD><TD>+31:21:59.25</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:13:20.903</TD><TD>+31:21:29.94</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>18:13:51.995</TD><TD>+31:25:51.73</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>18:13:49.859</TD><TD>+31:25:46.24</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>18:13:47.517</TD><TD>+31:25:45.76</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:13:45.718 18:13:44.741 18:13:43.753 18:13:44.729</TD><TD>+31:25:49.57 +31:26:02.21 +31:25:49.72 +31:25:37.07</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>18:13:43.066 18:13:41.513</TD><TD>+31:25:41.45 +31:25:58.55</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>18:13:40.624</TD><TD>+31:25:48.96</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>18:13:39.191</TD><TD>+31:25:44.40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:13:46.223 18:13:44.567</TD><TD>+31:25:04.24 +31:25:24.01</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>18:13:51.977</TD><TD>+31:25:14.44</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>18:13:49.765</TD><TD>+31:25:13.28</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>18:13:47.502</TD><TD>+31:25:13.13</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:52.144</TD><TD>+31:24:43.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:49.828</TD><TD>+31:24:42.97</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:47.722</TD><TD>+31:24:43.81</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:51.746</TD><TD>+31:24:27.17</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:49.769</TD><TD>+31:24:27.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:47.766</TD><TD>+31:24:26.82</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:13:49.709</TD><TD>+31:24:10.35</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:13:43.516 18:13:41.107</TD><TD>+31:25:01.12 +31:25:23.28</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:13:45.147</TD><TD>+31:24:44.01</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:13:45.080</TD><TD>+31:24:13.71</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>18:13:40.345</TD><TD>+31:25:08.35</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:13:43.012</TD><TD>+31:24:41.51</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:13:42.921</TD><TD>+31:24:11.88</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:13:40.749</TD><TD>+31:24:41.68</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:13:40.840</TD><TD>+31:24:12.37</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.fk4.reg b/tests/xml.mosaic.fk4.reg
index 12f51b3..e915a52 100644
--- a/tests/xml.mosaic.fk4.reg
+++ b/tests/xml.mosaic.fk4.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>273.38114</TD><TD>31.385311</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>273.37225</TD><TD>31.38378</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>273.36249</TD><TD>31.38364</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.355 273.35093 273.34682 273.35089</TD><TD>31.384692 31.388202 31.384729 31.381218</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>273.34396 273.33749</TD><TD>31.382429 31.387175</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>273.33379</TD><TD>31.384509</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>273.32782</TD><TD>31.383239</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.35711 273.35021</TD><TD>31.372102 31.377591</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>273.38107</TD><TD>31.374951</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>273.37186</TD><TD>31.374624</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>273.36244</TD><TD>31.374575</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.38178</TD><TD>31.366345</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.37213</TD><TD>31.366205</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.36336</TD><TD>31.366431</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.38012</TD><TD>31.36182</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.37189</TD><TD>31.361952</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.36355</TD><TD>31.361713</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.37164</TD><TD>31.357143</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.34584 273.3358</TD><TD>31.371228 31.377377</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.35264</TD><TD>31.36648</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.35237</TD><TD>31.358063</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>273.33263</TD><TD>31.373228</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.34375</TD><TD>31.36578</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.34337</TD><TD>31.357549</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.33432</TD><TD>31.365821</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.33471</TD><TD>31.357679</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>273.32488</TD><TD>31.362809</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>273.46599</TD><TD>31.430023</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>273.45709</TD><TD>31.428498</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>273.44733</TD><TD>31.428365</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.43983 273.43576 273.43165 273.43572</TD><TD>31.429421 31.432934 31.429463 31.42595</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>273.42879 273.42231</TD><TD>31.427165 31.431916</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>273.41861</TD><TD>31.429252</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>273.41264</TD><TD>31.427987</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.44194 273.43504</TD><TD>31.41683 31.422323</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>273.46591</TD><TD>31.419663</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>273.4567</TD><TD>31.419343</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>273.44727</TD><TD>31.4193</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.46661</TD><TD>31.411057</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.45696</TD><TD>31.410923</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.44818</TD><TD>31.411155</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.46495</TD><TD>31.406533</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.45671</TD><TD>31.40667</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.44837</TD><TD>31.406436</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.45646</TD><TD>31.401861</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.43066 273.42062</TD><TD>31.415963 31.422119</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.43745</TD><TD>31.411211</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.43718</TD><TD>31.402794</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>273.41745</TD><TD>31.417972</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.42856</TD><TD>31.410516</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.42818</TD><TD>31.402285</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.41913</TD><TD>31.410564</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.41951</TD><TD>31.402422</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>273.40968</TD><TD>31.407558</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>273.38353</TD><TD>31.385947</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>273.37463</TD><TD>31.384417</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>273.36488</TD><TD>31.384277</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.35739 273.35332 273.3492 273.35327</TD><TD>31.385329 31.388839 31.385365 31.381855</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>273.34635 273.33987</TD><TD>31.383066 31.387812</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>273.33617</TD><TD>31.385146</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>273.33021</TD><TD>31.383877</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.3595 273.3526</TD><TD>31.372739 31.378228</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>273.38346</TD><TD>31.375587</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>273.37425</TD><TD>31.375261</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>273.36482</TD><TD>31.375212</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.38416</TD><TD>31.366981</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.37452</TD><TD>31.366842</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.36575</TD><TD>31.367068</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.38251</TD><TD>31.362457</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.37428</TD><TD>31.362588</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.36594</TD><TD>31.362349</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.37403</TD><TD>31.357779</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.34823 273.33819</TD><TD>31.371865 31.378014</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.35502</TD><TD>31.367117</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.35475</TD><TD>31.3587</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>273.33502</TD><TD>31.373866</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.34614</TD><TD>31.366416</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.34576</TD><TD>31.358185</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.33671</TD><TD>31.366458</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.3371</TD><TD>31.358316</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>273.46665</TD><TD>31.431037</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>273.45775</TD><TD>31.429512</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>273.44799</TD><TD>31.429379</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.44049 273.43642 273.4323 273.43637</TD><TD>31.430435 31.433948 31.430477 31.426964</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>273.42944 273.42297</TD><TD>31.428179 31.43293</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>273.41927</TD><TD>31.430266</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>273.4133</TD><TD>31.429001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0.26226242</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.44259 273.4357</TD><TD>31.417844 31.423337</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>273.46657</TD><TD>31.420677</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>273.45735</TD><TD>31.420357</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>273.44792</TD><TD>31.420314</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.46727</TD><TD>31.412071</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.45762</TD><TD>31.411937</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.44884</TD><TD>31.412169</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.46561</TD><TD>31.407547</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.45737</TD><TD>31.407684</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.44902</TD><TD>31.40745</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.45712</TD><TD>31.402875</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.43132 273.42128</TD><TD>31.416977 31.423133</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.43811</TD><TD>31.412225</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.43783</TD><TD>31.403809</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.844162 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>273.41811</TD><TD>31.418987</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.42922</TD><TD>31.41153</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.42884</TD><TD>31.4033</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.41979</TD><TD>31.411578</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>0.26226242 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.42017</TD><TD>31.403436</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>45.262262</TD><TD>45.262262 90.262262 180.26226 270.26226</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.fk5.hms.reg b/tests/xml.mosaic.fk5.hms.reg
index 8fe2f3d..41a6ce3 100644
--- a/tests/xml.mosaic.fk5.hms.reg
+++ b/tests/xml.mosaic.fk5.hms.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>18:15:24.583</TD><TD>+31:24:10.38</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>18:15:22.450</TD><TD>+31:24:04.71</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>18:15:20.109</TD><TD>+31:24:04.04</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:18.308 18:15:17.326 18:15:16.344 18:15:17.326</TD><TD>+31:24:07.69 +31:24:20.26 +31:24:07.68 +31:23:55.12</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:15.662 18:15:14.100</TD><TD>+31:23:59.35 +31:24:16.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>18:15:13.216</TD><TD>+31:24:06.66</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>18:15:11.786</TD><TD>+31:24:01.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:18.836 18:15:17.171</TD><TD>+31:23:22.41 +31:23:42.05</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>18:15:24.583</TD><TD>+31:23:33.08</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>18:15:22.372</TD><TD>+31:23:31.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>18:15:20.110</TD><TD>+31:23:31.40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:24.765</TD><TD>+31:23:02.11</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:22.451</TD><TD>+31:23:01.44</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:20.345</TD><TD>+31:23:02.10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:24.375</TD><TD>+31:22:45.80</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:22.399</TD><TD>+31:22:46.12</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:20.397</TD><TD>+31:22:45.12</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:22.348</TD><TD>+31:22:28.81</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:16.131 18:15:13.712</TD><TD>+31:23:19.06 +31:23:41.03</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:17.770</TD><TD>+31:23:02.09</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:17.719</TD><TD>+31:22:31.79</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>18:15:12.958</TD><TD>+31:23:26.04</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:15.638</TD><TD>+31:22:59.41</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:15.561</TD><TD>+31:22:29.78</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:13.376</TD><TD>+31:22:59.40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:13.481</TD><TD>+31:22:30.10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>18:15:11.114</TD><TD>+31:22:48.39</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>18:15:44.878</TD><TD>+31:26:52.82</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>18:15:42.744</TD><TD>+31:26:47.18</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>18:15:40.402</TD><TD>+31:26:46.52</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:38.600 18:15:37.618 18:15:36.635 18:15:37.618</TD><TD>+31:26:50.20 +31:27:02.77 +31:26:50.21 +31:26:37.63</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:35.952 18:15:34.391</TD><TD>+31:26:41.88 +31:26:58.87</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>18:15:33.506</TD><TD>+31:26:49.22</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>18:15:32.075</TD><TD>+31:26:44.56</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:39.126 18:15:37.461</TD><TD>+31:26:04.91 +31:26:24.56</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>18:15:44.876</TD><TD>+31:26:15.52</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>18:15:42.665</TD><TD>+31:26:14.21</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>18:15:40.401</TD><TD>+31:26:13.89</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:45.057</TD><TD>+31:25:44.55</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:42.741</TD><TD>+31:25:43.91</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:40.634</TD><TD>+31:25:44.58</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:44.666</TD><TD>+31:25:28.24</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:42.689</TD><TD>+31:25:28.59</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:40.685</TD><TD>+31:25:27.60</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:42.636</TD><TD>+31:25:11.27</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:36.420 18:15:34.000</TD><TD>+31:26:01.59 +31:26:23.57</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:38.058</TD><TD>+31:25:44.60</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:38.005</TD><TD>+31:25:14.30</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>18:15:33.246</TD><TD>+31:26:08.59</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:35.925</TD><TD>+31:25:41.94</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:35.846</TD><TD>+31:25:12.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:33.661</TD><TD>+31:25:41.95</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:33.765</TD><TD>+31:25:12.65</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>18:15:31.398</TD><TD>+31:25:30.97</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>18:15:25.155</TD><TD>+31:24:12.71</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>18:15:23.022</TD><TD>+31:24:07.05</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>18:15:20.681</TD><TD>+31:24:06.37</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:18.880 18:15:17.898 18:15:16.916 18:15:17.898</TD><TD>+31:24:10.03 +31:24:22.59 +31:24:10.02 +31:23:57.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:16.234 18:15:14.673</TD><TD>+31:24:01.69 +31:24:18.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>18:15:13.789</TD><TD>+31:24:09.00</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>18:15:12.358</TD><TD>+31:24:04.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:19.408 18:15:17.743</TD><TD>+31:23:24.74 +31:23:44.38</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>18:15:25.155</TD><TD>+31:23:35.41</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>18:15:22.945</TD><TD>+31:23:34.08</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>18:15:20.682</TD><TD>+31:23:33.74</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:25.337</TD><TD>+31:23:04.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:23.023</TD><TD>+31:23:03.78</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:20.917</TD><TD>+31:23:04.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:24.948</TD><TD>+31:22:48.13</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:22.971</TD><TD>+31:22:48.46</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:20.969</TD><TD>+31:22:47.45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:22.920</TD><TD>+31:22:31.14</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:16.703 18:15:14.284</TD><TD>+31:23:21.40 +31:23:43.36</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:18.342</TD><TD>+31:23:04.42</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:18.291</TD><TD>+31:22:34.12</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>18:15:13.530</TD><TD>+31:23:28.37</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:16.210</TD><TD>+31:23:01.75</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:16.133</TD><TD>+31:22:32.11</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:13.947</TD><TD>+31:23:01.73</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:14.053</TD><TD>+31:22:32.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>18:15:45.034</TD><TD>+31:26:56.48</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>18:15:42.900</TD><TD>+31:26:50.84</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>18:15:40.558</TD><TD>+31:26:50.19</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:38.756 18:15:37.774 18:15:36.792 18:15:37.774</TD><TD>+31:26:53.86 +31:27:06.44 +31:26:53.87 +31:26:41.29</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:36.108 18:15:34.547</TD><TD>+31:26:45.55 +31:27:02.53</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>18:15:33.663</TD><TD>+31:26:52.88</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>18:15:32.231</TD><TD>+31:26:48.22</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:39.282 18:15:37.617</TD><TD>+31:26:08.57 +31:26:28.22</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>18:15:45.033</TD><TD>+31:26:19.19</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>18:15:42.821</TD><TD>+31:26:17.87</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>18:15:40.557</TD><TD>+31:26:17.55</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:45.213</TD><TD>+31:25:48.22</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:42.898</TD><TD>+31:25:47.57</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:40.790</TD><TD>+31:25:48.25</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:44.822</TD><TD>+31:25:31.90</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:42.845</TD><TD>+31:25:32.25</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:40.842</TD><TD>+31:25:31.26</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:42.792</TD><TD>+31:25:14.93</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:36.576 18:15:34.157</TD><TD>+31:26:05.25 +31:26:27.24</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:38.215</TD><TD>+31:25:48.26</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:38.162</TD><TD>+31:25:17.96</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>18:15:33.402</TD><TD>+31:26:12.25</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:36.081</TD><TD>+31:25:45.61</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:36.002</TD><TD>+31:25:15.97</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:33.818</TD><TD>+31:25:45.61</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:33.921</TD><TD>+31:25:16.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.fk5.reg b/tests/xml.mosaic.fk5.reg
index 7d7aede..0680a40 100644
--- a/tests/xml.mosaic.fk5.reg
+++ b/tests/xml.mosaic.fk5.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>273.85243</TD><TD>31.402883</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>273.84354</TD><TD>31.401309</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>273.83379</TD><TD>31.401122</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.82628 273.82219 273.8181 273.82219</TD><TD>31.402137 31.405628 31.402134 31.398644</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>273.81526 273.80875</TD><TD>31.399821 31.404535</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>273.80507</TD><TD>31.401851</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>273.79911</TD><TD>31.400553</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.82848 273.82154</TD><TD>31.389558 31.395013</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>273.85243</TD><TD>31.392523</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>273.84322</TD><TD>31.392152</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>273.83379</TD><TD>31.392057</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.85319</TD><TD>31.383921</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.84355</TD><TD>31.383734</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.83477</TD><TD>31.383917</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.85156</TD><TD>31.379388</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.84333</TD><TD>31.379479</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.83499</TD><TD>31.3792</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.84311</TD><TD>31.374669</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.81721 273.80713</TD><TD>31.388629 31.39473</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.82404</TD><TD>31.383914</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.82383</TD><TD>31.375496</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>273.80399</TD><TD>31.390565</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.81516</TD><TD>31.383171</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.81484</TD><TD>31.374938</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.80573</TD><TD>31.383166</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.80617</TD><TD>31.375027</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>273.79631</TD><TD>31.380109</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>273.93699</TD><TD>31.448006</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>273.9281</TD><TD>31.446438</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>273.91834</TD><TD>31.446257</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.91083 273.90674 273.90265 273.90674</TD><TD>31.447277 31.45077 31.447279 31.443786</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>273.8998 273.8933</TD><TD>31.444968 31.449687</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>273.88961</TD><TD>31.447005</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>273.88365</TD><TD>31.445711</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.91302 273.90609</TD><TD>31.434696 31.440156</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>273.93698</TD><TD>31.437646</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>273.92777</TD><TD>31.43728</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>273.91834</TD><TD>31.437192</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.93774</TD><TD>31.429043</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.92809</TD><TD>31.428863</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.91931</TD><TD>31.429051</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.93611</TD><TD>31.424511</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.92787</TD><TD>31.424608</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.91952</TD><TD>31.424334</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.92765</TD><TD>31.419798</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.90175 273.89167</TD><TD>31.433775 31.439882</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.90858</TD><TD>31.429055</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.90836</TD><TD>31.420638</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>273.88852</TD><TD>31.43572</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.89969</TD><TD>31.428318</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.89936</TD><TD>31.420085</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.89026</TD><TD>31.42832</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.89069</TD><TD>31.42018</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>273.88082</TD><TD>31.425268</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>273.85481</TD><TD>31.403531</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>273.84593</TD><TD>31.401957</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>273.83617</TD><TD>31.40177</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.82867 273.82457 273.82048 273.82458</TD><TD>31.402785 31.406276 31.402783 31.399292</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>273.81764 273.81114</TD><TD>31.400469 31.405184</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>273.80745</TD><TD>31.4025</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>273.80149</TD><TD>31.401202</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.83087 273.82393</TD><TD>31.390206 31.395661</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>273.85481</TD><TD>31.393171</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>273.8456</TD><TD>31.3928</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>273.83617</TD><TD>31.392705</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.85557</TD><TD>31.384568</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.84593</TD><TD>31.384382</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.83715</TD><TD>31.384565</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.85395</TD><TD>31.380036</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.84571</TD><TD>31.380127</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.83737</TD><TD>31.379848</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.8455</TD><TD>31.375317</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.8196 273.80952</TD><TD>31.389277 31.395378</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.82643</TD><TD>31.384562</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.82621</TD><TD>31.376145</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>273.80638</TD><TD>31.391214</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.81754</TD><TD>31.383819</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.81722</TD><TD>31.375586</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.80811</TD><TD>31.383815</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.80855</TD><TD>31.375675</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>273.93764</TD><TD>31.449023</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>273.92875</TD><TD>31.447455</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>273.91899</TD><TD>31.447274</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.91149 273.90739 273.9033 273.90739</TD><TD>31.448294 31.451788 31.448297 31.444803</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>273.90045 273.89395</TD><TD>31.445985 31.450704</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>273.89026</TD><TD>31.448022</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>273.8843</TD><TD>31.446728</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93978</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.91367 273.90674</TD><TD>31.435713 31.441173</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>273.93764</TD><TD>31.438663</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>273.92842</TD><TD>31.438297</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>273.91899</TD><TD>31.438209</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.93839</TD><TD>31.43006</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.92874</TD><TD>31.42988</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.91996</TD><TD>31.430069</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.93676</TD><TD>31.425528</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.92852</TD><TD>31.425625</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.92017</TD><TD>31.425351</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.9283</TD><TD>31.420815</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.9024 273.89232</TD><TD>31.434792 31.440899</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.90923</TD><TD>31.430072</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.90901</TD><TD>31.421655</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521683 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>273.88917</TD><TD>31.436737</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.90034</TD><TD>31.429335</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.90001</TD><TD>31.421103</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.89091</TD><TD>31.429337</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>359.93978 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.89134</TD><TD>31.421197</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939783</TD><TD>44.939783 89.939783 179.93978 269.93978</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.galactic.hms.reg b/tests/xml.mosaic.galactic.hms.reg
index 8b8299e..46bc131 100644
--- a/tests/xml.mosaic.galactic.hms.reg
+++ b/tests/xml.mosaic.galactic.hms.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>+58:28:16.326</TD><TD>+20:53:10.919</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>+58:28:00.717</TD><TD>+20:53:34.689</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>+58:27:49.170</TD><TD>+20:54:02.658</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+58:27:44.490 +58:27:52.588 +58:27:35.364 +58:27:27.267</TD><TD>+20:54:25.594 +20:54:41.683 +20:54:49.248 +20:54:33.158</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>+58:27:23.807 +58:27:33.659</TD><TD>+20:54:54.647 +20:55:19.202</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>+58:27:19.823</TD><TD>+20:55:26.579</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>+58:27:08.478</TD><TD>+20:55:42.228</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+58:27:01.331 +58:27:13.380</TD><TD>+20:54:03.894 +20:54:30.606</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>+58:27:38.771</TD><TD>+20:52:58.275</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>+58:27:27.158</TD><TD>+20:53:24.451</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>+58:27:16.308</TD><TD>+20:53:51.593</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:27:08.435</TD><TD>+20:52:45.581</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:26:57.008</TD><TD>+20:53:13.236</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:26:47.887</TD><TD>+20:53:38.836</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:26:50.193</TD><TD>+20:52:44.746</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:26:41.342</TD><TD>+20:53:08.667</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:26:31.028</TD><TD>+20:53:32.450</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:26:23.665</TD><TD>+20:53:03.421</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>+58:26:45.405 +58:26:56.295</TD><TD>+20:54:35.345 +20:55:11.932</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+58:26:35.919</TD><TD>+20:54:09.849</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+58:26:05.163</TD><TD>+20:54:00.198</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>+58:26:37.697</TD><TD>+20:55:15.935</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+58:26:23.322</TD><TD>+20:54:34.633</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+58:25:53.114</TD><TD>+20:54:25.520</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+58:26:12.803</TD><TD>+20:55:01.887</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+58:25:43.775</TD><TD>+20:54:50.693</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>+58:25:51.215</TD><TD>+20:55:25.412</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>+58:32:34.114</TD><TD>+20:50:01.593</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>+58:32:18.522</TD><TD>+20:50:25.370</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>+58:32:06.992</TD><TD>+20:50:53.344</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+58:32:02.325 +58:32:10.427 +58:31:53.213 +58:31:45.111</TD><TD>+20:51:16.281 +20:51:32.367 +20:51:39.939 +20:51:23.853</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>+58:31:41.663 +58:31:51.523</TD><TD>+20:51:45.344 +20:52:09.894</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>+58:31:37.695</TD><TD>+20:52:17.277</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>+58:31:26.362</TD><TD>+20:52:32.931</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+58:31:19.170 +58:31:31.227</TD><TD>+20:50:54.600 +20:51:21.307</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>+58:31:56.566</TD><TD>+20:49:48.965</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>+58:31:44.969</TD><TD>+20:50:15.146</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>+58:31:34.136</TD><TD>+20:50:42.292</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:31:26.234</TD><TD>+20:49:36.283</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:31:14.824</TD><TD>+20:50:03.943</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:31:05.719</TD><TD>+20:50:29.547</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:31:07.998</TD><TD>+20:49:35.457</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:30:59.162</TD><TD>+20:49:59.381</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:30:48.863</TD><TD>+20:50:23.168</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>+58:30:41.489</TD><TD>+20:49:54.142</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>+58:31:03.265 +58:31:14.169</TD><TD>+20:51:26.057 +20:52:02.640</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+58:30:53.770</TD><TD>+20:51:00.565</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>+58:30:23.020</TD><TD>+20:50:50.926</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>+58:30:55.579</TD><TD>+20:52:06.650</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+58:30:41.189</TD><TD>+20:51:25.355</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>+58:30:10.988</TD><TD>+20:51:16.254</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+58:30:30.686</TD><TD>+20:51:52.612</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>+58:30:01.664</TD><TD>+20:51:41.431</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>+58:30:09.117</TD><TD>+20:52:16.147</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>+58:28:21.331</TD><TD>+20:53:04.817</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>+58:28:05.723</TD><TD>+20:53:28.587</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>+58:27:54.177</TD><TD>+20:53:56.556</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+58:27:49.497 +58:27:57.595 +58:27:40.371 +58:27:32.273</TD><TD>+20:54:19.492 +20:54:35.581 +20:54:43.146 +20:54:27.056</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>+58:27:28.814 +58:27:38.666</TD><TD>+20:54:48.546 +20:55:13.101</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>+58:27:24.830</TD><TD>+20:55:20.478</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>+58:27:13.486</TD><TD>+20:55:36.127</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+58:27:06.337 +58:27:18.386</TD><TD>+20:53:57.793 +20:54:24.505</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>+58:27:43.777</TD><TD>+20:52:52.173</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>+58:27:32.164</TD><TD>+20:53:18.350</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>+58:27:21.314</TD><TD>+20:53:45.492</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:27:13.441</TD><TD>+20:52:39.479</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:27:02.014</TD><TD>+20:53:07.134</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:26:52.894</TD><TD>+20:53:32.735</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:26:55.199</TD><TD>+20:52:38.645</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:26:46.348</TD><TD>+20:53:02.566</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:26:36.035</TD><TD>+20:53:26.349</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:26:28.672</TD><TD>+20:52:57.320</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>+58:26:50.412 +58:27:01.303</TD><TD>+20:54:29.243 +20:55:05.831</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+58:26:40.926</TD><TD>+20:54:03.748</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+58:26:10.170</TD><TD>+20:53:54.097</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>+58:26:42.705</TD><TD>+20:55:09.833</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+58:26:28.330</TD><TD>+20:54:28.532</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+58:25:58.122</TD><TD>+20:54:19.419</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+58:26:17.810</TD><TD>+20:54:55.786</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+58:25:48.783</TD><TD>+20:54:44.592</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>+58:32:38.525</TD><TD>+20:50:00.954</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>+58:32:22.933</TD><TD>+20:50:24.730</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>+58:32:11.404</TD><TD>+20:50:52.704</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>+58:32:06.737 +58:32:14.840 +58:31:57.626 +58:31:49.523</TD><TD>+20:51:15.642 +20:51:31.728 +20:51:39.299 +20:51:23.213</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>+58:31:46.075 +58:31:55.935</TD><TD>+20:51:44.704 +20:52:09.255</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>+58:31:42.108</TD><TD>+20:52:16.637</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>+58:31:30.774</TD><TD>+20:52:32.291</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>+58:31:23.582 +58:31:35.640</TD><TD>+20:50:53.961 +20:51:20.667</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>+58:32:00.978</TD><TD>+20:49:48.325</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>+58:31:49.381</TD><TD>+20:50:14.507</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>+58:31:38.547</TD><TD>+20:50:41.653</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:31:30.646</TD><TD>+20:49:35.644</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:31:19.236</TD><TD>+20:50:03.304</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:31:10.131</TD><TD>+20:50:28.908</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:31:12.410</TD><TD>+20:49:34.817</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:31:03.573</TD><TD>+20:49:58.742</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:30:53.275</TD><TD>+20:50:22.529</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>+58:30:45.900</TD><TD>+20:49:53.503</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>+58:31:07.677 +58:31:18.581</TD><TD>+20:51:25.418 +20:52:02.000</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+58:30:58.182</TD><TD>+20:50:59.926</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>+58:30:27.432</TD><TD>+20:50:50.288</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>+58:30:59.992</TD><TD>+20:52:06.011</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+58:30:45.602</TD><TD>+20:51:24.716</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>+58:30:15.400</TD><TD>+20:51:15.615</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+58:30:35.099</TD><TD>+20:51:51.974</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>+58:30:06.076</TD><TD>+20:51:40.792</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.galactic.reg b/tests/xml.mosaic.galactic.reg
index 796c521..db66ec3 100644
--- a/tests/xml.mosaic.galactic.reg
+++ b/tests/xml.mosaic.galactic.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>58.471202</TD><TD>20.886366</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>58.466866</TD><TD>20.892969</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>58.463658</TD><TD>20.900738</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>58.462358 58.464608 58.459823 58.457574</TD><TD>20.907109 20.911579 20.91368 20.909211</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>58.456613 58.45935</TD><TD>20.91518 20.922001</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>58.455506</TD><TD>20.92405</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>58.452355</TD><TD>20.928397</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>58.45037 58.453717</TD><TD>20.901082 20.908502</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>58.46077</TD><TD>20.882854</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>58.457544</TD><TD>20.890125</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>58.45453</TD><TD>20.897665</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.452343</TD><TD>20.879328</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.449169</TD><TD>20.88701</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.446635</TD><TD>20.894121</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.447276</TD><TD>20.879096</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.444817</TD><TD>20.885741</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.441952</TD><TD>20.892347</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.439907</TD><TD>20.884284</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>58.445946 58.448971</TD><TD>20.909818 20.919981</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>58.443311</TD><TD>20.902736</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>58.434767</TD><TD>20.900055</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>58.443805</TD><TD>20.921093</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>58.439812</TD><TD>20.90962</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>58.431421</TD><TD>20.907089</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>58.43689</TD><TD>20.917191</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>58.428826</TD><TD>20.914081</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>58.430893</TD><TD>20.923726</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>58.542809</TD><TD>20.833776</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>58.538478</TD><TD>20.84038</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>58.535276</TD><TD>20.848151</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>58.533979 58.53623 58.531448 58.529197</TD><TD>20.854523 20.858991 20.861094 20.856626</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>58.52824 58.530979</TD><TD>20.862595 20.869415</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>58.527137</TD><TD>20.871466</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>58.523989</TD><TD>20.875814</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>58.521992 58.525341</TD><TD>20.8485 20.855918</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>58.532379</TD><TD>20.830268</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>58.529158</TD><TD>20.837541</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>58.526149</TD><TD>20.845081</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.523954</TD><TD>20.826745</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.520784</TD><TD>20.834429</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.518255</TD><TD>20.841541</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.518888</TD><TD>20.826516</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.516434</TD><TD>20.833161</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.513573</TD><TD>20.839769</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>58.511525</TD><TD>20.831706</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>58.517573 58.520602</TD><TD>20.857238 20.8674</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>58.514936</TD><TD>20.850157</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>58.506394</TD><TD>20.84748</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>58.515439</TD><TD>20.868514</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>58.511441</TD><TD>20.857043</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>58.503052</TD><TD>20.854515</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>58.508524</TD><TD>20.864615</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>58.500462</TD><TD>20.861509</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>58.502533</TD><TD>20.871152</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>58.472592</TD><TD>20.884671</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>58.468256</TD><TD>20.891274</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>58.465049</TD><TD>20.899043</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>58.463749 58.465999 58.461214 58.458965</TD><TD>20.905414 20.909884 20.911985 20.907516</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>58.458004 58.460741</TD><TD>20.913485 20.920306</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>58.456897</TD><TD>20.922355</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>58.453746</TD><TD>20.926702</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>58.45176 58.455107</TD><TD>20.899387 20.906807</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>58.46216</TD><TD>20.881159</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>58.458934</TD><TD>20.88843</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>58.455921</TD><TD>20.89597</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.453734</TD><TD>20.877633</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.450559</TD><TD>20.885315</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.448026</TD><TD>20.892426</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.448666</TD><TD>20.877401</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.446208</TD><TD>20.884046</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.443343</TD><TD>20.890652</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.441298</TD><TD>20.882589</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>58.447337 58.450362</TD><TD>20.908123 20.918286</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>58.444702</TD><TD>20.901041</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>58.436158</TD><TD>20.89836</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>58.445196</TD><TD>20.919398</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>58.441203</TD><TD>20.907926</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>58.432812</TD><TD>20.905394</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>58.438281</TD><TD>20.915496</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>58.430218</TD><TD>20.912387</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>58.544035</TD><TD>20.833598</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>58.539704</TD><TD>20.840203</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>58.536501</TD><TD>20.847973</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>58.535205 58.537456 58.532674 58.530423</TD><TD>20.854345 20.858813 20.860917 20.856448</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>58.529465 58.532204</TD><TD>20.862418 20.869237</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>58.528363</TD><TD>20.871288</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>58.525215</TD><TD>20.875636</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>70.143383</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>58.523217 58.526567</TD><TD>20.848322 20.855741</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>58.533605</TD><TD>20.83009</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>58.530384</TD><TD>20.837363</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>58.527374</TD><TD>20.844904</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.525179</TD><TD>20.826568</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.52201</TD><TD>20.834251</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.519481</TD><TD>20.841363</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.520114</TD><TD>20.826338</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.517659</TD><TD>20.832984</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.514798</TD><TD>20.839591</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>58.51275</TD><TD>20.831529</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>58.518799 58.521828</TD><TD>20.85706 20.867222</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>58.516162</TD><TD>20.84998</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>58.50762</TD><TD>20.847302</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>121.72528 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>58.516664</TD><TD>20.868336</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>58.512667</TD><TD>20.856865</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>58.504278</TD><TD>20.854338</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>58.50975</TD><TD>20.864437</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>70.143383 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>58.501688</TD><TD>20.861331</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>115.14338</TD><TD>115.14338 160.14338 250.14338 340.14338</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.icrs.hms.reg b/tests/xml.mosaic.icrs.hms.reg
index 7bb16c2..62c67d6 100644
--- a/tests/xml.mosaic.icrs.hms.reg
+++ b/tests/xml.mosaic.icrs.hms.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>18:15:24.581</TD><TD>+31:24:10.36</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>18:15:22.449</TD><TD>+31:24:04.69</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>18:15:20.108</TD><TD>+31:24:04.02</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:18.307 18:15:17.324 18:15:16.343 18:15:17.325</TD><TD>+31:24:07.67 +31:24:20.24 +31:24:07.66 +31:23:55.10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:15.660 18:15:14.099</TD><TD>+31:23:59.33 +31:24:16.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>18:15:13.215</TD><TD>+31:24:06.64</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>18:15:11.785</TD><TD>+31:24:01.97</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:18.835 18:15:17.170</TD><TD>+31:23:22.39 +31:23:42.03</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>18:15:24.582</TD><TD>+31:23:33.06</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>18:15:22.371</TD><TD>+31:23:31.73</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>18:15:20.109</TD><TD>+31:23:31.38</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:24.764</TD><TD>+31:23:02.09</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:22.450</TD><TD>+31:23:01.42</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:20.343</TD><TD>+31:23:02.08</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:24.374</TD><TD>+31:22:45.78</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:22.398</TD><TD>+31:22:46.10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:20.396</TD><TD>+31:22:45.10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:22.346</TD><TD>+31:22:28.79</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:16.130 18:15:13.711</TD><TD>+31:23:19.04 +31:23:41.01</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:17.769</TD><TD>+31:23:02.07</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:17.718</TD><TD>+31:22:31.77</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>18:15:12.957</TD><TD>+31:23:26.02</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:15.637</TD><TD>+31:22:59.39</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:15.560</TD><TD>+31:22:29.76</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:13.374</TD><TD>+31:22:59.38</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:13.480</TD><TD>+31:22:30.08</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>18:15:11.113</TD><TD>+31:22:48.37</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>18:15:44.877</TD><TD>+31:26:52.80</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>18:15:42.743</TD><TD>+31:26:47.15</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>18:15:40.401</TD><TD>+31:26:46.50</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:38.599 18:15:37.617 18:15:36.634 18:15:37.616</TD><TD>+31:26:50.18 +31:27:02.75 +31:26:50.19 +31:26:37.61</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:35.951 18:15:34.390</TD><TD>+31:26:41.86 +31:26:58.85</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>18:15:33.505</TD><TD>+31:26:49.20</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>18:15:32.074</TD><TD>+31:26:44.54</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:39.125 18:15:37.460</TD><TD>+31:26:04.89 +31:26:24.54</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>18:15:44.875</TD><TD>+31:26:15.50</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>18:15:42.663</TD><TD>+31:26:14.19</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>18:15:40.400</TD><TD>+31:26:13.87</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:45.056</TD><TD>+31:25:44.53</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:42.740</TD><TD>+31:25:43.89</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:40.633</TD><TD>+31:25:44.56</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:44.665</TD><TD>+31:25:28.22</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:42.688</TD><TD>+31:25:28.57</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:40.684</TD><TD>+31:25:27.58</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>18:15:42.635</TD><TD>+31:25:11.25</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:36.419 18:15:33.999</TD><TD>+31:26:01.57 +31:26:23.55</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:38.057</TD><TD>+31:25:44.58</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>18:15:38.004</TD><TD>+31:25:14.28</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>18:15:33.244</TD><TD>+31:26:08.57</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:35.924</TD><TD>+31:25:41.92</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>18:15:35.845</TD><TD>+31:25:12.29</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:33.660</TD><TD>+31:25:41.93</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>18:15:33.764</TD><TD>+31:25:12.63</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>18:15:31.397</TD><TD>+31:25:30.95</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>18:15:25.154</TD><TD>+31:24:12.69</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>18:15:23.021</TD><TD>+31:24:07.03</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>18:15:20.680</TD><TD>+31:24:06.35</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:18.879 18:15:17.897 18:15:16.915 18:15:17.897</TD><TD>+31:24:10.01 +31:24:22.57 +31:24:10.00 +31:23:57.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:16.233 18:15:14.671</TD><TD>+31:24:01.67 +31:24:18.64</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>18:15:13.787</TD><TD>+31:24:08.98</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>18:15:12.357</TD><TD>+31:24:04.31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:19.407 18:15:17.742</TD><TD>+31:23:24.72 +31:23:44.36</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>18:15:25.154</TD><TD>+31:23:35.39</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>18:15:22.943</TD><TD>+31:23:34.06</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>18:15:20.681</TD><TD>+31:23:33.72</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:25.336</TD><TD>+31:23:04.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:23.022</TD><TD>+31:23:03.76</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:20.915</TD><TD>+31:23:04.41</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:24.946</TD><TD>+31:22:48.11</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:22.970</TD><TD>+31:22:48.44</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:20.968</TD><TD>+31:22:47.43</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:22.918</TD><TD>+31:22:31.12</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:16.702 18:15:14.283</TD><TD>+31:23:21.38 +31:23:43.34</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:18.341</TD><TD>+31:23:04.40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:18.290</TD><TD>+31:22:34.10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>18:15:13.529</TD><TD>+31:23:28.35</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:16.209</TD><TD>+31:23:01.73</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:16.132</TD><TD>+31:22:32.09</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:13.946</TD><TD>+31:23:01.71</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:14.052</TD><TD>+31:22:32.41</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>18:15:45.033</TD><TD>+31:26:56.46</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>18:15:42.899</TD><TD>+31:26:50.82</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>18:15:40.557</TD><TD>+31:26:50.17</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>18:15:38.755 18:15:37.773 18:15:36.790 18:15:37.773</TD><TD>+31:26:53.84 +31:27:06.42 +31:26:53.85 +31:26:41.27</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>18:15:36.107 18:15:34.546</TD><TD>+31:26:45.53 +31:27:02.51</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>18:15:33.661</TD><TD>+31:26:52.86</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>18:15:32.230</TD><TD>+31:26:48.20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>18:15:39.281 18:15:37.616</TD><TD>+31:26:08.55 +31:26:28.20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>18:15:45.031</TD><TD>+31:26:19.17</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>18:15:42.820</TD><TD>+31:26:17.85</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>18:15:40.556</TD><TD>+31:26:17.53</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:45.212</TD><TD>+31:25:48.20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:42.896</TD><TD>+31:25:47.55</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:40.789</TD><TD>+31:25:48.23</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:44.821</TD><TD>+31:25:31.88</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:42.844</TD><TD>+31:25:32.23</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:40.841</TD><TD>+31:25:31.24</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>18:15:42.791</TD><TD>+31:25:14.91</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>18:15:36.575 18:15:34.155</TD><TD>+31:26:05.23 +31:26:27.22</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:38.213</TD><TD>+31:25:48.24</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>18:15:38.160</TD><TD>+31:25:17.94</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>18:15:33.401</TD><TD>+31:26:12.23</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:36.080</TD><TD>+31:25:45.59</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>18:15:36.001</TD><TD>+31:25:15.95</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:33.816</TD><TD>+31:25:45.59</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>18:15:33.920</TD><TD>+31:25:16.29</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.icrs.reg b/tests/xml.mosaic.icrs.reg
index 1a84884..b0bc528 100644
--- a/tests/xml.mosaic.icrs.reg
+++ b/tests/xml.mosaic.icrs.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>273.85242</TD><TD>31.402877</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>273.84354</TD><TD>31.401303</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>273.83378</TD><TD>31.401116</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.82628 273.82218 273.8181 273.82219</TD><TD>31.402132 31.405622 31.402129 31.398638</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>273.81525 273.80875</TD><TD>31.399815 31.40453</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>273.80506</TD><TD>31.401845</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>273.7991</TD><TD>31.400547</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.82848 273.82154</TD><TD>31.389552 31.395007</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>273.85242</TD><TD>31.392517</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>273.84321</TD><TD>31.392146</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>273.83379</TD><TD>31.392051</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.85318</TD><TD>31.383915</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.84354</TD><TD>31.383728</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.83476</TD><TD>31.383912</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.85156</TD><TD>31.379382</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.84333</TD><TD>31.379473</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.83498</TD><TD>31.379194</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.84311</TD><TD>31.374663</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.81721 273.80713</TD><TD>31.388623 31.394724</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.82404</TD><TD>31.383908</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.82382</TD><TD>31.375491</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>273.80399</TD><TD>31.39056</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.81515</TD><TD>31.383165</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.81483</TD><TD>31.374932</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.80573</TD><TD>31.383161</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.80617</TD><TD>31.375021</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>273.7963</TD><TD>31.380103</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>273.93699</TD><TD>31.448</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>273.9281</TD><TD>31.446432</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>273.91834</TD><TD>31.446251</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.91083 273.90674 273.90264 273.90673</TD><TD>31.447271 31.450765 31.447274 31.44378</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>273.8998 273.89329</TD><TD>31.444962 31.449681</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>273.8896</TD><TD>31.446999</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>273.88364</TD><TD>31.445705</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.91302 273.90608</TD><TD>31.434691 31.44015</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>273.93698</TD><TD>31.43764</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>273.92776</TD><TD>31.437275</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>273.91833</TD><TD>31.437186</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.93773</TD><TD>31.429037</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.92808</TD><TD>31.428857</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.9193</TD><TD>31.429046</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.9361</TD><TD>31.424505</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.92786</TD><TD>31.424602</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.91952</TD><TD>31.424328</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>273.92764</TD><TD>31.419792</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.90174 273.89166</TD><TD>31.433769 31.439876</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.90857</TD><TD>31.42905</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>273.90835</TD><TD>31.420632</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>273.88852</TD><TD>31.435714</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.89968</TD><TD>31.428312</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>273.89935</TD><TD>31.42008</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.89025</TD><TD>31.428314</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>273.89068</TD><TD>31.420174</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>273.88082</TD><TD>31.425263</TD><TD></TD><TD></TD><TD>3.33</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>273.85481</TD><TD>31.403525</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>273.84592</TD><TD>31.401951</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>273.83617</TD><TD>31.401764</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.82866 273.82457 273.82048 273.82457</TD><TD>31.40278 31.406271 31.402777 31.399286</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>273.81764 273.81113</TD><TD>31.400463 31.405178</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>273.80745</TD><TD>31.402494</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>273.80149</TD><TD>31.401196</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.83086 273.82392</TD><TD>31.3902 31.395656</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>273.85481</TD><TD>31.393165</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>273.8456</TD><TD>31.392794</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>273.83617</TD><TD>31.392699</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.85557</TD><TD>31.384563</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.84592</TD><TD>31.384376</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.83715</TD><TD>31.38456</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.85394</TD><TD>31.38003</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.84571</TD><TD>31.380121</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.83737</TD><TD>31.379842</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.84549</TD><TD>31.375311</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.81959 273.80951</TD><TD>31.389272 31.395372</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.82642</TD><TD>31.384557</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.82621</TD><TD>31.376139</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>273.80637</TD><TD>31.391209</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.81754</TD><TD>31.383813</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.81722</TD><TD>31.375581</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.80811</TD><TD>31.383809</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.80855</TD><TD>31.37567</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>273.93764</TD><TD>31.449017</TD><TD></TD><TD></TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>273.92875</TD><TD>31.447449</TD><TD></TD><TD></TD><TD>13.32</TD><TD>6.66</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>273.91899</TD><TD>31.447268</TD><TD></TD><TD></TD><TD>26.64</TD><TD>13.32</TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>273.91148 273.90739 273.90329 273.90739</TD><TD>31.448289 31.451782 31.448291 31.444798</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>273.90045 273.89394</TD><TD>31.445979 31.450698</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>273.89026</TD><TD>31.448016</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>273.88429</TD><TD>31.446722</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>359.93979</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>273.91367 273.90673</TD><TD>31.435708 31.441168</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>273.93763</TD><TD>31.438657</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3.33 6.66 9.99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>273.92842</TD><TD>31.438292</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>273.91898</TD><TD>31.438203</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.93838</TD><TD>31.430054</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.92874</TD><TD>31.429874</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.91995</TD><TD>31.430063</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.93675</TD><TD>31.425523</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.92852</TD><TD>31.425619</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.92017</TD><TD>31.425345</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>273.9283</TD><TD>31.420809</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>273.90239 273.89231</TD><TD>31.434786 31.440894</TD><TD>6.66</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.90922</TD><TD>31.430067</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>273.909</TD><TD>31.421649</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 4.995 9.99</TD><TD></TD><TD></TD><TD>51.521686 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>273.88917</TD><TD>31.436732</TD><TD></TD><TD></TD><TD>13.32</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.90033</TD><TD>31.429329</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>273.9</TD><TD>31.421097</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>4.995 9.99</TD><TD>2.4975 4.995</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.8909</TD><TD>31.429331</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>359.93979 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>273.89133</TD><TD>31.421191</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>13.32 19.98</TD><TD>6.66 9.99</TD><TD>44.939786</TD><TD>44.939786 89.939786 179.93979 269.93979</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.image.reg b/tests/xml.mosaic.image.reg
index f48a215..cdcf755 100644
--- a/tests/xml.mosaic.image.reg
+++ b/tests/xml.mosaic.image.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>119</TD><TD>1956</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>201</TD><TD>1939</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>291</TD><TD>1937</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>360.24723 398 435.75277 398</TD><TD>1948 1985.7528 1948 1910.2472</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>462 522</TD><TD>1923 1974</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>556</TD><TD>1945</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>611</TD><TD>1931</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>340 404</TD><TD>1812 1871</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>119</TD><TD>1844</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>204</TD><TD>1840</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>291</TD><TD>1839</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>112</TD><TD>1751</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>201</TD><TD>1749</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>282</TD><TD>1751</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>127</TD><TD>1702</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>203</TD><TD>1703</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>280</TD><TD>1700</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>205</TD><TD>1651</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>444 537</TD><TD>1802 1868</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>381</TD><TD>1751</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>383</TD><TD>1660</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>566</TD><TD>1823</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>463</TD><TD>1743</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>466</TD><TD>1654</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>550</TD><TD>1743</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>546</TD><TD>1655</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>637</TD><TD>1710</TD><TD></TD><TD></TD><TD>10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>1471</TD><TD>352</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>1553</TD><TD>335</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>1643</TD><TD>333</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>1712.2472 1750 1787.7528 1750</TD><TD>344 381.75275 344 306.24723</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>1814 1874</TD><TD>319 370</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>1908</TD><TD>341</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>1963</TD><TD>327</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>1692 1756</TD><TD>208 267</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>1471</TD><TD>240</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>1556</TD><TD>236</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>1643</TD><TD>235</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1464</TD><TD>147</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1553</TD><TD>145</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1634</TD><TD>147</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1479</TD><TD>98</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1555</TD><TD>99</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1632</TD><TD>96</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1557</TD><TD>47</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>1796 1889</TD><TD>198 264</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>1733</TD><TD>147</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>1735</TD><TD>56</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>1918</TD><TD>219</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>1815</TD><TD>139</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>1818</TD><TD>50</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>1902</TD><TD>139</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>1898</TD><TD>51</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>1989</TD><TD>106</TD><TD></TD><TD></TD><TD>10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>97</TD><TD>1963</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>179</TD><TD>1946</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>269</TD><TD>1944</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>338.24723 376 413.75277 376</TD><TD>1955 1992.7528 1955 1917.2472</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>440 500</TD><TD>1930 1981</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>534</TD><TD>1952</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>589</TD><TD>1938</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>318 382</TD><TD>1819 1878</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>97</TD><TD>1851</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>182</TD><TD>1847</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>269</TD><TD>1846</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>90</TD><TD>1758</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>179</TD><TD>1756</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>260</TD><TD>1758</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>105</TD><TD>1709</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>181</TD><TD>1710</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>258</TD><TD>1707</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>183</TD><TD>1658</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>422 515</TD><TD>1809 1875</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>359</TD><TD>1758</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>361</TD><TD>1667</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>544</TD><TD>1830</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>441</TD><TD>1750</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>444</TD><TD>1661</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>528</TD><TD>1750</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>524</TD><TD>1662</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>1465</TD><TD>363</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>1547</TD><TD>346</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>1637</TD><TD>344</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>1706.2472 1744 1781.7528 1744</TD><TD>355 392.75275 355 317.24723</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>1808 1868</TD><TD>330 381</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>1902</TD><TD>352</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>1957</TD><TD>338</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>1686 1750</TD><TD>219 278</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>1465</TD><TD>251</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>1550</TD><TD>247</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>1637</TD><TD>246</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1458</TD><TD>158</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1547</TD><TD>156</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1628</TD><TD>158</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1473</TD><TD>109</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1549</TD><TD>110</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1626</TD><TD>107</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1551</TD><TD>58</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>1790 1883</TD><TD>209 275</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>1727</TD><TD>158</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>1729</TD><TD>67</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>1912</TD><TD>230</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>1809</TD><TD>150</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>1812</TD><TD>61</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>1896</TD><TD>150</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>1892</TD><TD>62</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.mosaic.physical.reg b/tests/xml.mosaic.physical.reg
index 13a1469..0b438ef 100644
--- a/tests/xml.mosaic.physical.reg
+++ b/tests/xml.mosaic.physical.reg
@@ -43,60 +43,58 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>88</TD><TD>1956</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>170</TD><TD>1939</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>260</TD><TD>1937</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>329.24723 367 404.75277 367</TD><TD>1948 1985.7528 1948 1910.2472</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>431 491</TD><TD>1923 1974</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>525</TD><TD>1945</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>580</TD><TD>1931</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>309 373</TD><TD>1812 1871</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>88</TD><TD>1844</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>173</TD><TD>1840</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>260</TD><TD>1839</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>81</TD><TD>1751</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>170</TD><TD>1749</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>251</TD><TD>1751</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>96</TD><TD>1702</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>172</TD><TD>1703</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>249</TD><TD>1700</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>174</TD><TD>1651</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>413 506</TD><TD>1802 1868</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>350</TD><TD>1751</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>352</TD><TD>1660</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>535</TD><TD>1823</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>432</TD><TD>1743</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>435</TD><TD>1654</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>519</TD><TD>1743</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>515</TD><TD>1655</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>606</TD><TD>1710</TD><TD></TD><TD></TD><TD>10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle</TD><TD>1470</TD><TD>336</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>1552</TD><TD>319</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>1642</TD><TD>317</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>1711.2472 1749 1786.7528 1749</TD><TD>328 365.75275 328 290.24723</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>1813 1873</TD><TD>303 354</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>1907</TD><TD>325</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>1962</TD><TD>311</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>1691 1755</TD><TD>192 251</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>1470</TD><TD>224</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>1555</TD><TD>220</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>1642</TD><TD>219</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1463</TD><TD>131</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1552</TD><TD>129</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1633</TD><TD>131</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1478</TD><TD>82</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1554</TD><TD>83</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1631</TD><TD>80</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>1556</TD><TD>31</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>1795 1888</TD><TD>182 248</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>1732</TD><TD>131</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>1734</TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>1917</TD><TD>203</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>1814</TD><TD>123</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>1817</TD><TD>34</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>1901</TD><TD>123</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>1897</TD><TD>35</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>1988</TD><TD>90</TD><TD></TD><TD></TD><TD>10</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>66</TD><TD>1963</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>148</TD><TD>1946</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>238</TD><TD>1944</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>307.24723 345 382.75277 345</TD><TD>1955 1992.7528 1955 1917.2472</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>409 469</TD><TD>1930 1981</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>503</TD><TD>1952</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>558</TD><TD>1938</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>287 351</TD><TD>1819 1878</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>66</TD><TD>1851</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>151</TD><TD>1847</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>238</TD><TD>1846</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>59</TD><TD>1758</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>148</TD><TD>1756</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>229</TD><TD>1758</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>74</TD><TD>1709</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>150</TD><TD>1710</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>227</TD><TD>1707</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>152</TD><TD>1658</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>391 484</TD><TD>1809 1875</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>328</TD><TD>1758</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>330</TD><TD>1667</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>513</TD><TD>1830</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>410</TD><TD>1750</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>413</TD><TD>1661</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>497</TD><TD>1750</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>493</TD><TD>1662</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>1</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>1464</TD><TD>347</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>1546</TD><TD>330</TD><TD></TD><TD></TD><TD>40</TD><TD>20</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>1636</TD><TD>328</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>1705.2472 1743 1780.7528 1743</TD><TD>339 376.75275 339 301.24723</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>1807 1867</TD><TD>314 365</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>1901</TD><TD>336</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>1956</TD><TD>322</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>1685 1749</TD><TD>203 262</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>1464</TD><TD>235</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>10 20 30</TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>1549</TD><TD>231</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>1636</TD><TD>230</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1457</TD><TD>142</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1546</TD><TD>140</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1627</TD><TD>142</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1472</TD><TD>93</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1548</TD><TD>94</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1625</TD><TD>91</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>1550</TD><TD>42</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>1789 1882</TD><TD>193 259</TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>1726</TD><TD>142</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>1728</TD><TD>51</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 15 30</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>1911</TD><TD>214</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>1808</TD><TD>134</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>1811</TD><TD>45</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>15 30</TD><TD>7.5 15</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>1895</TD><TD>134</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>1891</TD><TD>46</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>40 60</TD><TD>20 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD>3</TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xml.physical.reg b/tests/xml.physical.reg
index 3d93f6e..c50a615 100644
--- a/tests/xml.physical.reg
+++ b/tests/xml.physical.reg
@@ -43,33 +43,32 @@
 <FIELD ID="comment" name="comment" datatype="char" arraysize="*"/>
 <DATA>
 <TABLEDATA>
-<TR><TD>circle</TD><TD>325</TD><TD>1075</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
-<TR><TD>ellipse</TD><TD>489</TD><TD>1041</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>box</TD><TD>669</TD><TD>1037</TD><TD></TD><TD></TD><TD>160</TD><TD>80</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>polygon</TD><TD></TD><TD></TD><TD>807.49446 883 958.50554 883</TD><TD>1059 1134.5055 1059 983.49446</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>line</TD><TD></TD><TD></TD><TD>1011 1131</TD><TD>1009 1111</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>vector</TD><TD>1199</TD><TD>1053</TD><TD></TD><TD></TD><TD>80</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>text</TD><TD>1309</TD><TD>1025</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ruler</TD><TD></TD><TD></TD><TD>767 895</TD><TD>787 905</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>annulus</TD><TD>325</TD><TD>851</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>20 40 60</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>ellipseannulus</TD><TD>495</TD><TD>843</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>30 60</TD><TD>15 30</TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>boxannulus</TD><TD>669</TD><TD>841</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>80 120</TD><TD>40 60</TD><TD>45</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>311</TD><TD>665</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>489</TD><TD>661</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>651</TD><TD>665</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>341</TD><TD>567</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>493</TD><TD>569</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>647</TD><TD>563</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>point</TD><TD>497</TD><TD>465</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>projection</TD><TD></TD><TD></TD><TD>975 1161</TD><TD>767 899</TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>849</TD><TD>665</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 30 60</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>panda</TD><TD>853</TD><TD>483</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 30 60</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>compass</TD><TD>1219</TD><TD>809</TD><TD></TD><TD></TD><TD>80</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>1013</TD><TD>649</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>30 60</TD><TD>15 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>epanda</TD><TD>1019</TD><TD>471</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>30 60</TD><TD>15 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>1187</TD><TD>649</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>80 120</TD><TD>40 60</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>bpanda</TD><TD>1179</TD><TD>473</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>80 120</TD><TD>40 60</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
-<TR><TD>circle3d</TD><TD>1361</TD><TD>583</TD><TD></TD><TD></TD><TD>20</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle3d</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>circle</TD><TD>331</TD><TD>1091</TD><TD></TD><TD></TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>pink</TD><TD>3</TD><TD>Circle</TD><TD>times 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD>foo foo bar</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>This is a Comment</TD></TR>
+<TR><TD>ellipse</TD><TD>495</TD><TD>1057</TD><TD></TD><TD></TD><TD>80</TD><TD>40</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>#0ff</TD><TD>1</TD><TD>Ellipse</TD><TD>helvetica 10 normal italic</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>box</TD><TD>675</TD><TD>1053</TD><TD></TD><TD></TD><TD>160</TD><TD>80</TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>yellow</TD><TD>1</TD><TD>Box</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>polygon</TD><TD></TD><TD></TD><TD>813.49446 889 964.50554 889</TD><TD>1075 1150.5055 1075 999.49446</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Polygon</TD><TD>courier 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>line</TD><TD></TD><TD></TD><TD>1017 1137</TD><TD>1025 1127</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>cyan</TD><TD>1</TD><TD>Line</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>0</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>vector</TD><TD>1205</TD><TD>1069</TD><TD></TD><TD></TD><TD>80</TD><TD></TD><TD></TD><TD></TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>1</TD><TD>Vector</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>text</TD><TD>1315</TD><TD>1041</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0</TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Region</TD><TD>helvetica 14 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>1</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ruler</TD><TD></TD><TD></TD><TD>773 901</TD><TD>803 921</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>white</TD><TD>1</TD><TD>Ruler</TD><TD>helvetica 12 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>physical</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>annulus</TD><TD>331</TD><TD>867</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>20 40 60</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>ellipseannulus</TD><TD>501</TD><TD>859</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>30 60</TD><TD>15 30</TD><TD>45</TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Ellipse Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>boxannulus</TD><TD>675</TD><TD>857</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>80 120</TD><TD>40 60</TD><TD>45</TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Box Annulus</TD><TD>helvetica 10 bold roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>317</TD><TD>681</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Circle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>circle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>495</TD><TD>677</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>red</TD><TD>3</TD><TD>Box Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>box</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>657</TD><TD>681</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Diamond Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>diamond</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>347</TD><TD>583</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>blue</TD><TD>1</TD><TD>Cross Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>cross</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>499</TD><TD>585</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>X Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>x</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>653</TD><TD>579</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>magenta</TD><TD>1</TD><TD>Arrow Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>arrow</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>point</TD><TD>503</TD><TD>481</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>BoxCircle Point</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>boxcircle</TD><TD>11</TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>projection</TD><TD></TD><TD></TD><TD>981 1167</TD><TD>783 915</TD><TD>40</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Projection</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>855</TD><TD>681</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 30 60</TD><TD></TD><TD></TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>panda</TD><TD>859</TD><TD>499</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>0 30 60</TD><TD></TD><TD></TD><TD>51.5819 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Panda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>compass</TD><TD>1225</TD><TD>825</TD><TD></TD><TD></TD><TD>80</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>green</TD><TD>1</TD><TD>Compass</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD>physical</TD><TD>N</TD><TD>E</TD><TD>1</TD><TD>1</TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>1019</TD><TD>665</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>30 60</TD><TD>15 30</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>epanda</TD><TD>1025</TD><TD>487</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>30 60</TD><TD>15 30</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Epanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>1193</TD><TD>665</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>80 120</TD><TD>40 60</TD><TD>45</TD><TD>0 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
+<TR><TD>bpanda</TD><TD>1185</TD><TD>489</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD>80 120</TD><TD>40 60</TD><TD>45</TD><TD>45 90 180 270</TD><TD></TD><TD>green</TD><TD>1</TD><TD>Bpanda 2</TD><TD>helvetica 10 normal roman</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>1</TD><TD>1</TD><TD>0</TD><TD>8,3</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
diff --git a/tests/xpa.sh b/tests/xpa.sh
index 7ab26fd..2f3adca 100755
--- a/tests/xpa.sh
+++ b/tests/xpa.sh
@@ -579,6 +579,24 @@ xpaset -p ds9 single
 testit $tt
 fi
 
+if [ "$1" = "export" -o -z "$1" ]; then
+tt="export"
+xpaset -p ds9 export foo.fits
+xpaset -p ds9 export foo.gif
+xpaset -p ds9 export foo.tif
+xpaset -p ds9 export foo.tif none
+xpaset -p ds9 export foo.jpg
+xpaset -p ds9 export foo.jpg 100
+xpaset -p ds9 export foo.png
+xpaset -p ds9 export foo.ppm
+
+# backward compatability
+xpaset -p ds9 savefits foo.fits
+
+rm -f foo.fits foo.gif foo.tif foo.jpg foo.png foo.ppm
+testit $tt
+fi
+
 if [ "$1" = "file" -o -z "$1" ]; then
 tt="file"
 xpaget ds9 file >> ${tt}.out
@@ -965,6 +983,17 @@ sleep "$delay"
 testit $tt
 fi
 
+if [ "$1" = "import" -o -z "$1" ]; then
+tt="import"
+xpaset -p ds9 frame new
+xpaset -p ds9 image rose.jpg
+xpaset -p ds9 frame delete
+xpaset -p ds9 frame new rgb
+xpaset -p ds9 image rose.tif
+xpaset -p ds9 frame delete
+testit $tt
+fi
+
 if [ "$1" = "lock" -o -z "$1" ]; then
 tt="lock"
 xpaget ds9 lock frame >> ${tt}.out
@@ -1602,22 +1631,44 @@ xpaset -p ds9 frame reset
 testit $tt
 fi
 
-if [ "$1" = "saveas" ]; then
-tt="saveas"
+if [ "$1" = "saveimage" ]; then
+tt="saveimage"
+xpaset -p ds9 saveimage foo.fits
+xpaset -p ds9 saveimage foo.gif
+xpaset -p ds9 saveimage foo.tif
+xpaset -p ds9 saveimage foo.tif none
+xpaset -p ds9 saveimage foo.jpg
+xpaset -p ds9 saveimage foo.jpg 100
+xpaset -p ds9 saveimage foo.png
+xpaset -p ds9 saveimage foo.ppm
+
+# backward compatibility
 xpaset -p ds9 saveimage fits foo.fits
-xpaset -p ds9 saveimage jpeg foo.jpeg
-xpaset -p ds9 saveimage jpeg 100 foo.jpeg
+xpaset -p ds9 saveimage jpeg foo.jpg
+xpaset -p ds9 saveimage jpeg 100 foo.jpg
 xpaset -p ds9 saveimage tiff foo.tif
 xpaset -p ds9 saveimage tiff deflate foo.tif
 xpaset -p ds9 saveimage png foo.png
 xpaset -p ds9 saveimage ppm foo.ppm
-xpaset -p ds9 saveimage mpeg foo.mpg
-xpaset -p ds9 saveimage mpeg 31 foo.mpg
 
-xpaset -p ds9 savefits foo.fits
-xpaset -p ds9 savempeg foo.mpg
+testit $tt
 rm -f foo.fits foo.jpeg foo.tif foo.png foo.ppm foo.mpg foo.mpg
+fi
+
+if [ "$1" = "savempeg" ]; then
+tt="savempeg"
+
+xpaset -p ds9 savempeg slice foo.mpg
+xpaset -p ds9 savempeg frame foo.mpg
+xpaset -p ds9 frame new 3d
+xpaset -p ds9 savempeg 3d foo.mpg number 1 azfrom 0 azto 0 elfrom 0 elto 0 slfrom 1 slto 1 repeat 1
+xpaset -p ds9 frame delete
+
+# backward compatibility
+xpaset -p ds9 savempeg foo.mpg
+
 testit $tt
+rm -f foo.mpg
 fi
 
 if [ "$1" = "scale" -o -z "$1" ]; then
diff --git a/tests/xy.ecliptic.hms.reg b/tests/xy.ecliptic.hms.reg
index 279f40b..c5321ee 100644
--- a/tests/xy.ecliptic.hms.reg
+++ b/tests/xy.ecliptic.hms.reg
@@ -1,27 +1,26 @@
-+175:06:47.329 +50:57:10.157
-+175:06:47.329 +50:56:53.559
-+175:06:42.199 +50:56:36.012
-+175:06:31.981 +50:56:15.689
-+175:06:25.828 +50:55:57.465
-+175:06:17.565 +50:55:42.728
-+175:06:23.624 +50:55:33.666
-+175:07:06.440 +50:56:16.450
-+175:07:21.832 +50:57:05.650
-+175:07:17.633 +50:56:48.993
-+175:07:12.383 +50:56:32.069
-+175:07:50.928 +50:57:03.264
-+175:07:45.855 +50:56:45.911
-+175:07:40.062 +50:56:30.273
-+175:08:05.063 +50:56:58.379
-+175:07:59.895 +50:56:43.670
-+175:07:55.897 +50:56:28.607
-+175:08:15.784 +50:56:41.187
-+175:07:00.874 +50:55:53.191
-+175:07:33.735 +50:56:11.060
-+175:08:01.631 +50:56:07.007
-+175:06:59.749 +50:55:38.055
-+175:07:30.960 +50:55:54.824
-+175:07:58.173 +50:55:50.658
-+175:07:25.403 +50:55:37.941
-+175:07:52.752 +50:55:35.173
-+175:07:30.006 +50:55:19.728
++175:06:44.609 +50:57:09.897
++175:06:44.610 +50:56:53.299
++175:06:39.479 +50:56:35.752
++175:06:29.262 +50:56:15.428
++175:06:23.109 +50:55:57.205
++175:06:14.847 +50:55:42.467
++175:06:20.905 +50:55:33.406
++175:07:03.721 +50:56:16.189
++175:07:19.112 +50:57:05.390
++175:07:14.913 +50:56:48.733
++175:07:09.664 +50:56:31.809
++175:07:48.208 +50:57:03.004
++175:07:43.135 +50:56:45.651
++175:07:37.342 +50:56:30.013
++175:08:02.343 +50:56:58.119
++175:07:57.176 +50:56:43.411
++175:07:53.177 +50:56:28.347
++175:08:13.064 +50:56:40.927
++175:06:58.156 +50:55:52.930
++175:07:31.016 +50:56:10.800
++175:07:58.912 +50:56:06.747
++175:06:57.031 +50:55:37.795
++175:07:28.241 +50:55:54.564
++175:07:55.454 +50:55:50.398
++175:07:22.684 +50:55:37.680
++175:07:50.034 +50:55:34.913
diff --git a/tests/xy.ecliptic.reg b/tests/xy.ecliptic.reg
index 53165bd..5757233 100644
--- a/tests/xy.ecliptic.reg
+++ b/tests/xy.ecliptic.reg
@@ -1,27 +1,26 @@
- 175.11315 50.952821 
- 175.11315 50.948211 
- 175.11172 50.943337 
- 175.10888 50.937691 
- 175.10717 50.932629 
- 175.10488 50.928535 
- 175.10656 50.926018 
- 175.11846 50.937903 
- 175.12273 50.951569 
- 175.12156 50.946943 
- 175.12011 50.942241 
- 175.13081 50.950907 
- 175.1294 50.946087 
- 175.12779 50.941742 
- 175.13474 50.94955 
- 175.1333 50.945464 
- 175.13219 50.94128 
- 175.13772 50.944774 
- 175.11691 50.931442 
- 175.12604 50.936406 
- 175.13379 50.93528 
- 175.1166 50.927238 
- 175.12527 50.931896 
- 175.13283 50.930738 
- 175.12372 50.927206 
- 175.13132 50.926437 
- 175.125 50.922147 
+ 175.11239 50.952749 
+ 175.11239 50.948139 
+ 175.11097 50.943264 
+ 175.10813 50.937619 
+ 175.10642 50.932557 
+ 175.10412 50.928463 
+ 175.10581 50.925946 
+ 175.1177 50.93783 
+ 175.12198 50.951497 
+ 175.12081 50.94687 
+ 175.11935 50.942169 
+ 175.13006 50.950834 
+ 175.12865 50.946014 
+ 175.12704 50.94167 
+ 175.13398 50.949478 
+ 175.13255 50.945392 
+ 175.13144 50.941207 
+ 175.13696 50.944702 
+ 175.11615 50.93137 
+ 175.12528 50.936333 
+ 175.13303 50.935208 
+ 175.11584 50.927165 
+ 175.12451 50.931823 
+ 175.13207 50.930666 
+ 175.12297 50.927133 
+ 175.13056 50.926365 
diff --git a/tests/xy.fk4.hms.reg b/tests/xy.fk4.hms.reg
index b0decf9..ccfa121 100644
--- a/tests/xy.fk4.hms.reg
+++ b/tests/xy.fk4.hms.reg
@@ -1,27 +1,26 @@
-13:27:50.533 +47:27:57.00
-13:27:49.574 +47:27:43.54
-13:27:48.303 +47:27:31.21
-13:27:46.615 +47:27:18.50
-13:27:45.253 +47:27:06.00
-13:27:43.986 +47:26:57.10
-13:27:43.769 +47:26:47.52
-13:27:48.395 +47:27:06.41
-13:27:52.010 +47:27:40.61
-13:27:50.837 +47:27:28.66
-13:27:49.595 +47:27:16.88
-13:27:53.337 +47:27:27.95
-13:27:52.080 +47:27:15.75
-13:27:50.886 +47:27:05.21
-13:27:53.767 +47:27:18.77
-13:27:52.658 +47:27:08.75
-13:27:51.587 +47:26:58.02
-13:27:53.315 +47:27:00.88
-13:27:46.772 +47:26:49.60
-13:27:49.458 +47:26:51.97
-13:27:50.629 +47:26:38.39
-13:27:45.842 +47:26:37.75
-13:27:48.381 +47:26:39.83
-13:27:49.512 +47:26:26.41
-13:27:47.127 +47:26:28.19
-13:27:48.345 +47:26:15.86
-13:27:46.308 +47:26:11.73
+13:27:50.384 +47:27:57.76
+13:27:49.426 +47:27:44.31
+13:27:48.154 +47:27:31.98
+13:27:46.466 +47:27:19.27
+13:27:45.104 +47:27:06.77
+13:27:43.838 +47:26:57.87
+13:27:43.620 +47:26:48.29
+13:27:48.246 +47:27:07.18
+13:27:51.861 +47:27:41.38
+13:27:50.688 +47:27:29.43
+13:27:49.447 +47:27:17.65
+13:27:53.189 +47:27:28.71
+13:27:51.931 +47:27:16.52
+13:27:50.737 +47:27:05.98
+13:27:53.618 +47:27:19.54
+13:27:52.509 +47:27:09.52
+13:27:51.438 +47:26:58.79
+13:27:53.166 +47:27:01.65
+13:27:46.623 +47:26:50.37
+13:27:49.309 +47:26:52.74
+13:27:50.481 +47:26:39.16
+13:27:45.693 +47:26:38.52
+13:27:48.233 +47:26:40.60
+13:27:49.363 +47:26:27.18
+13:27:46.979 +47:26:28.96
+13:27:48.197 +47:26:16.63
diff --git a/tests/xy.fk4.reg b/tests/xy.fk4.reg
index 1c4db85..d715e0a 100644
--- a/tests/xy.fk4.reg
+++ b/tests/xy.fk4.reg
@@ -1,27 +1,26 @@
- 201.96055 47.465832 
- 201.95656 47.462095 
- 201.95126 47.458669 
- 201.94423 47.45514 
- 201.93855 47.451667 
- 201.93328 47.449195 
- 201.93237 47.446533 
- 201.95164 47.45178 
- 201.96671 47.461282 
- 201.96182 47.457961 
- 201.95665 47.454688 
- 201.97224 47.457763 
- 201.967 47.454375 
- 201.96202 47.451447 
- 201.97403 47.455214 
- 201.96941 47.452432 
- 201.96495 47.449449 
- 201.97214 47.450245 
- 201.94488 47.447112 
- 201.95608 47.447769 
- 201.96096 47.443997 
- 201.94101 47.443819 
- 201.95159 47.444397 
- 201.9563 47.44067 
- 201.94636 47.441164 
- 201.95144 47.437738 
- 201.94295 47.436591 
+ 201.95993 47.466046 
+ 201.95594 47.462308 
+ 201.95064 47.458883 
+ 201.94361 47.455354 
+ 201.93794 47.451881 
+ 201.93266 47.449409 
+ 201.93175 47.446747 
+ 201.95102 47.451993 
+ 201.96609 47.461495 
+ 201.9612 47.458175 
+ 201.95603 47.454902 
+ 201.97162 47.457976 
+ 201.96638 47.454589 
+ 201.9614 47.451661 
+ 201.97341 47.455428 
+ 201.96879 47.452645 
+ 201.96433 47.449663 
+ 201.97152 47.450458 
+ 201.94426 47.447326 
+ 201.95546 47.447982 
+ 201.96034 47.444211 
+ 201.94039 47.444033 
+ 201.95097 47.444611 
+ 201.95568 47.440883 
+ 201.94574 47.441378 
+ 201.95082 47.437951 
diff --git a/tests/xy.fk5.hms.reg b/tests/xy.fk5.hms.reg
index 30316c0..97799a1 100644
--- a/tests/xy.fk5.hms.reg
+++ b/tests/xy.fk5.hms.reg
@@ -1,27 +1,26 @@
-13:29:56.891 +47:12:29.65
-13:29:55.941 +47:12:16.17
-13:29:54.679 +47:12:03.80
-13:29:53.002 +47:11:51.05
-13:29:51.650 +47:11:38.51
-13:29:50.392 +47:11:29.58
-13:29:50.178 +47:11:19.99
-13:29:54.776 +47:11:39.01
-13:29:58.365 +47:12:13.31
-13:29:57.201 +47:12:01.32
-13:29:55.969 +47:11:49.51
-13:29:59.689 +47:12:00.68
-13:29:58.442 +47:11:48.45
-13:29:57.256 +47:11:37.88
-13:30:00.120 +47:11:51.52
-13:29:59.018 +47:11:41.47
-13:29:57.955 +47:11:30.70
-13:29:59.674 +47:11:33.61
-13:29:53.166 +47:11:22.16
-13:29:55.839 +47:11:24.59
-13:29:57.008 +47:11:11.05
-13:29:52.244 +47:11:10.28
-13:29:54.770 +47:11:12.43
-13:29:55.899 +47:10:59.04
-13:29:53.525 +47:11:00.75
-13:29:54.741 +47:10:48.45
-13:29:52.715 +47:10:44.27
+13:29:56.743 +47:12:30.42
+13:29:55.792 +47:12:16.94
+13:29:54.530 +47:12:04.57
+13:29:52.854 +47:11:51.82
+13:29:51.502 +47:11:39.28
+13:29:50.244 +47:11:30.34
+13:29:50.030 +47:11:20.75
+13:29:54.628 +47:11:39.77
+13:29:58.217 +47:12:14.07
+13:29:57.053 +47:12:02.09
+13:29:55.820 +47:11:50.27
+13:29:59.541 +47:12:01.44
+13:29:58.293 +47:11:49.21
+13:29:57.107 +47:11:38.64
+13:29:59.971 +47:11:52.28
+13:29:58.870 +47:11:42.23
+13:29:57.807 +47:11:31.47
+13:29:59.526 +47:11:34.38
+13:29:53.018 +47:11:22.92
+13:29:55.690 +47:11:25.36
+13:29:56.859 +47:11:11.81
+13:29:52.095 +47:11:11.04
+13:29:54.622 +47:11:13.19
+13:29:55.750 +47:10:59.80
+13:29:53.377 +47:11:01.52
+13:29:54.593 +47:10:49.22
diff --git a/tests/xy.fk5.reg b/tests/xy.fk5.reg
index 15b0ebc..276f17b 100644
--- a/tests/xy.fk5.reg
+++ b/tests/xy.fk5.reg
@@ -1,27 +1,26 @@
- 202.48705 47.208237 
- 202.48309 47.204492 
- 202.47783 47.201057 
- 202.47084 47.197515 
- 202.46521 47.194031 
- 202.45997 47.19155 
- 202.45907 47.188886 
- 202.47823 47.194168 
- 202.49319 47.203697 
- 202.48834 47.200368 
- 202.4832 47.197085 
- 202.49871 47.200189 
- 202.49351 47.196791 
- 202.48857 47.193854 
- 202.5005 47.197643 
- 202.49591 47.194852 
- 202.49148 47.191862 
- 202.49864 47.19267 
- 202.47152 47.189488 
- 202.48266 47.190165 
- 202.48753 47.186403 
- 202.46768 47.186188 
- 202.47821 47.186785 
- 202.48291 47.183066 
- 202.47302 47.183543 
- 202.47809 47.180126 
- 202.46965 47.178963 
+ 202.48643 47.208449 
+ 202.48247 47.204704 
+ 202.47721 47.201269 
+ 202.47022 47.197727 
+ 202.46459 47.194244 
+ 202.45935 47.191762 
+ 202.45846 47.189099 
+ 202.47762 47.19438 
+ 202.49257 47.20391 
+ 202.48772 47.20058 
+ 202.48258 47.197298 
+ 202.49809 47.200401 
+ 202.49289 47.197004 
+ 202.48795 47.194067 
+ 202.49988 47.197856 
+ 202.49529 47.195065 
+ 202.49086 47.192074 
+ 202.49802 47.192883 
+ 202.47091 47.189701 
+ 202.48204 47.190378 
+ 202.48691 47.186615 
+ 202.46706 47.1864 
+ 202.47759 47.186997 
+ 202.48229 47.183279 
+ 202.47241 47.183755 
+ 202.47747 47.180338 
diff --git a/tests/xy.galactic.hms.reg b/tests/xy.galactic.hms.reg
index e1647f4..68734ab 100644
--- a/tests/xy.galactic.hms.reg
+++ b/tests/xy.galactic.hms.reg
@@ -1,27 +1,26 @@
-+104:50:10.908 +68:32:38.464
-+104:50:20.096 +68:32:54.718
-+104:50:38.471 +68:33:11.247
-+104:51:06.984 +68:33:29.844
-+104:51:27.484 +68:33:46.902
-+104:51:49.621 +68:34:00.276
-+104:51:44.421 +68:34:09.924
-+104:50:08.390 +68:33:33.497
-+104:49:15.203 +68:32:47.274
-+104:49:31.493 +68:33:03.053
-+104:49:49.713 +68:33:18.959
-+104:48:27.434 +68:32:53.313
-+104:48:45.571 +68:33:09.663
-+104:49:03.986 +68:33:24.243
-+104:48:06.279 +68:32:59.893
-+104:48:23.111 +68:33:13.643
-+104:48:38.174 +68:33:27.889
-+104:47:57.663 +68:33:18.094
-+104:50:30.670 +68:33:55.564
-+104:49:25.285 +68:33:42.254
-+104:48:40.416 +68:33:49.773
-+104:50:40.959 +68:34:10.243
-+104:49:38.951 +68:33:57.801
-+104:48:55.286 +68:34:05.346
-+104:49:57.683 +68:34:13.628
-+104:49:13.002 +68:34:19.822
-+104:49:59.987 +68:34:32.051
++104:50:15.532 +68:32:38.380
++104:50:24.720 +68:32:54.634
++104:50:43.097 +68:33:11.163
++104:51:11.611 +68:33:29.759
++104:51:32.111 +68:33:46.817
++104:51:54.250 +68:34:00.191
++104:51:49.050 +68:34:09.839
++104:50:13.017 +68:33:33.413
++104:49:19.827 +68:32:47.191
++104:49:36.118 +68:33:02.969
++104:49:54.339 +68:33:18.875
++104:48:32.059 +68:32:53.230
++104:48:50.197 +68:33:09.580
++104:49:08.613 +68:33:24.159
++104:48:10.904 +68:32:59.810
++104:48:27.737 +68:33:13.560
++104:48:42.801 +68:33:27.806
++104:48:02.289 +68:33:18.011
++104:50:35.298 +68:33:55.481
++104:49:29.913 +68:33:42.170
++104:48:45.044 +68:33:49.690
++104:50:45.588 +68:34:10.159
++104:49:43.580 +68:33:57.717
++104:48:59.915 +68:34:05.263
++104:50:02.312 +68:34:13.544
++104:49:17.632 +68:34:19.739
diff --git a/tests/xy.galactic.reg b/tests/xy.galactic.reg
index 084382d..6eeb9fd 100644
--- a/tests/xy.galactic.reg
+++ b/tests/xy.galactic.reg
@@ -1,27 +1,26 @@
- 104.83636 68.544018 
- 104.83892 68.548533 
- 104.84402 68.553124 
- 104.85194 68.55829 
- 104.85763 68.563028 
- 104.86378 68.566743 
- 104.86234 68.569423 
- 104.83566 68.559305 
- 104.82089 68.546465 
- 104.82541 68.550848 
- 104.83048 68.555266 
- 104.80762 68.548142 
- 104.81266 68.552684 
- 104.81777 68.556734 
- 104.80174 68.54997 
- 104.80642 68.55379 
- 104.8106 68.557747 
- 104.79935 68.555026 
- 104.84185 68.565435 
- 104.82369 68.561737 
- 104.81123 68.563826 
- 104.84471 68.569512 
- 104.82749 68.566056 
- 104.81536 68.568152 
- 104.83269 68.570452 
- 104.82028 68.572173 
- 104.83333 68.57557 
+ 104.83765 68.543994 
+ 104.8402 68.54851 
+ 104.8453 68.553101 
+ 104.85323 68.558267 
+ 104.85892 68.563005 
+ 104.86507 68.56672 
+ 104.86363 68.5694 
+ 104.83695 68.559281 
+ 104.82217 68.546442 
+ 104.8267 68.550825 
+ 104.83176 68.555243 
+ 104.80891 68.548119 
+ 104.81394 68.552661 
+ 104.81906 68.556711 
+ 104.80303 68.549947 
+ 104.8077 68.553767 
+ 104.81189 68.557724 
+ 104.80064 68.555003 
+ 104.84314 68.565411 
+ 104.82498 68.561714 
+ 104.81251 68.563803 
+ 104.846 68.569488 
+ 104.82877 68.566033 
+ 104.81664 68.568129 
+ 104.83398 68.570429 
+ 104.82156 68.57215 
diff --git a/tests/xy.icrs.hms.reg b/tests/xy.icrs.hms.reg
index 30316c0..58923ce 100644
--- a/tests/xy.icrs.hms.reg
+++ b/tests/xy.icrs.hms.reg
@@ -1,27 +1,26 @@
-13:29:56.891 +47:12:29.65
-13:29:55.941 +47:12:16.17
-13:29:54.679 +47:12:03.80
-13:29:53.002 +47:11:51.05
-13:29:51.650 +47:11:38.51
-13:29:50.392 +47:11:29.58
-13:29:50.178 +47:11:19.99
-13:29:54.776 +47:11:39.01
-13:29:58.365 +47:12:13.31
-13:29:57.201 +47:12:01.32
-13:29:55.969 +47:11:49.51
-13:29:59.689 +47:12:00.68
-13:29:58.442 +47:11:48.45
-13:29:57.256 +47:11:37.88
-13:30:00.120 +47:11:51.52
-13:29:59.018 +47:11:41.47
-13:29:57.955 +47:11:30.70
-13:29:59.674 +47:11:33.61
-13:29:53.166 +47:11:22.16
-13:29:55.839 +47:11:24.59
-13:29:57.008 +47:11:11.05
-13:29:52.244 +47:11:10.28
-13:29:54.770 +47:11:12.43
-13:29:55.899 +47:10:59.04
-13:29:53.525 +47:11:00.75
-13:29:54.741 +47:10:48.45
-13:29:52.715 +47:10:44.27
+13:29:56.743 +47:12:30.42
+13:29:55.792 +47:12:16.94
+13:29:54.530 +47:12:04.57
+13:29:52.854 +47:11:51.82
+13:29:51.502 +47:11:39.28
+13:29:50.244 +47:11:30.34
+13:29:50.030 +47:11:20.76
+13:29:54.628 +47:11:39.77
+13:29:58.217 +47:12:14.08
+13:29:57.053 +47:12:02.09
+13:29:55.820 +47:11:50.27
+13:29:59.541 +47:12:01.45
+13:29:58.293 +47:11:49.22
+13:29:57.108 +47:11:38.64
+13:29:59.971 +47:11:52.28
+13:29:58.870 +47:11:42.24
+13:29:57.807 +47:11:31.47
+13:29:59.526 +47:11:34.38
+13:29:53.018 +47:11:22.92
+13:29:55.691 +47:11:25.36
+13:29:56.859 +47:11:11.82
+13:29:52.095 +47:11:11.04
+13:29:54.622 +47:11:13.19
+13:29:55.751 +47:10:59.81
+13:29:53.377 +47:11:01.52
+13:29:54.593 +47:10:49.22
diff --git a/tests/xy.icrs.reg b/tests/xy.icrs.reg
index 15b0ebc..d0c440a 100644
--- a/tests/xy.icrs.reg
+++ b/tests/xy.icrs.reg
@@ -1,27 +1,26 @@
- 202.48705 47.208237 
- 202.48309 47.204492 
- 202.47783 47.201057 
- 202.47084 47.197515 
- 202.46521 47.194031 
- 202.45997 47.19155 
- 202.45907 47.188886 
- 202.47823 47.194168 
- 202.49319 47.203697 
- 202.48834 47.200368 
- 202.4832 47.197085 
- 202.49871 47.200189 
- 202.49351 47.196791 
- 202.48857 47.193854 
- 202.5005 47.197643 
- 202.49591 47.194852 
- 202.49148 47.191862 
- 202.49864 47.19267 
- 202.47152 47.189488 
- 202.48266 47.190165 
- 202.48753 47.186403 
- 202.46768 47.186188 
- 202.47821 47.186785 
- 202.48291 47.183066 
- 202.47302 47.183543 
- 202.47809 47.180126 
- 202.46965 47.178963 
+ 202.48643 47.208449 
+ 202.48247 47.204705 
+ 202.47721 47.20127 
+ 202.47023 47.197727 
+ 202.46459 47.194244 
+ 202.45935 47.191762 
+ 202.45846 47.189099 
+ 202.47762 47.194381 
+ 202.49257 47.20391 
+ 202.48772 47.200581 
+ 202.48259 47.197298 
+ 202.49809 47.200401 
+ 202.49289 47.197004 
+ 202.48795 47.194067 
+ 202.49988 47.197856 
+ 202.49529 47.195065 
+ 202.49086 47.192075 
+ 202.49802 47.192883 
+ 202.47091 47.189701 
+ 202.48204 47.190378 
+ 202.48691 47.186615 
+ 202.46706 47.186401 
+ 202.47759 47.186998 
+ 202.48229 47.183279 
+ 202.47241 47.183755 
+ 202.47747 47.180338 
diff --git a/tests/xy.image.reg b/tests/xy.image.reg
index 234426a..af66ee0 100644
--- a/tests/xy.image.reg
+++ b/tests/xy.image.reg
@@ -1,27 +1,26 @@
- 163 538 
- 245 521 
- 335 519 
- 442 530 
- 536 530.5 
- 614.14214 541.14214 
- 655 513 
- 416 423.5 
- 163 426 
- 248 422 
- 335 421 
- 156 333 
- 245 331 
- 326 333 
- 171 284 
- 247 285 
- 324 282 
- 249 233 
- 534.5 417 
- 425 333 
- 427 242 
- 610 405 
- 507 325 
- 510 236 
- 594 325 
- 590 237 
- 681 292 
+ 166 546 
+ 248 529 
+ 338 527 
+ 445 538 
+ 539 538.5 
+ 617.14214 549.14214 
+ 658 521 
+ 419 431.5 
+ 166 434 
+ 251 430 
+ 338 429 
+ 159 341 
+ 248 339 
+ 329 341 
+ 174 292 
+ 250 293 
+ 327 290 
+ 252 241 
+ 537.5 425 
+ 428 341 
+ 430 250 
+ 613 413 
+ 510 333 
+ 513 244 
+ 597 333 
+ 593 245 
diff --git a/tests/xy.physical.reg b/tests/xy.physical.reg
index 6990c40..12c1fd1 100644
--- a/tests/xy.physical.reg
+++ b/tests/xy.physical.reg
@@ -1,27 +1,26 @@
- 325 1075 
- 489 1041 
- 669 1037 
- 883 1059 
- 1071 1060 
- 1227.2843 1081.2843 
- 1309 1025 
- 831 846 
- 325 851 
- 495 843 
- 669 841 
- 311 665 
- 489 661 
- 651 665 
- 341 567 
- 493 569 
- 647 563 
- 497 465 
- 1068 833 
- 849 665 
- 853 483 
- 1219 809 
- 1013 649 
- 1019 471 
- 1187 649 
- 1179 473 
- 1361 583 
+ 331 1091 
+ 495 1057 
+ 675 1053 
+ 889 1075 
+ 1077 1076 
+ 1233.2843 1097.2843 
+ 1315 1041 
+ 837 862 
+ 331 867 
+ 501 859 
+ 675 857 
+ 317 681 
+ 495 677 
+ 657 681 
+ 347 583 
+ 499 585 
+ 653 579 
+ 503 481 
+ 1074 849 
+ 855 681 
+ 859 499 
+ 1225 825 
+ 1019 665 
+ 1025 487 
+ 1193 665 
+ 1185 489 
diff --git a/tkmpeg/tkmpeg.C b/tkmpeg/tkmpeg.C
index 0b284ab..ecd28f7 100644
--- a/tkmpeg/tkmpeg.C
+++ b/tkmpeg/tkmpeg.C
@@ -100,7 +100,11 @@ TkMPEG::TkMPEG(Tcl_Interp* intp)
       str >> quality;
     }
 
-    if(!ezMPEG_Init(&ms, argv[2], width, height, fps, gop, quality)) {
+    // width and height must be a multiple of 16
+    int ww = int(width/16.+1)*16;
+    int hh = int(height/16.+1)*16;
+
+    if(!ezMPEG_Init(&ms, argv[2], ww, hh, fps, gop, quality)) {
       Tcl_AppendResult(interp, "ezMPEG_Init ", ezMPEG_GetLastError(&ms), NULL);
       return TCL_ERROR;
     }
@@ -134,24 +138,31 @@ int TkMPEG::add(int argc, const char* argv[])
     return TCL_ERROR;
   }
 
-  int w = ms.hsize*16;
-  int h = ms.vsize*16;
+  int ww = ms.hsize*16;
+  int hh = ms.vsize*16;
 
-  unsigned char* pict = new unsigned char[w*h*3];
+  unsigned char* pict = new unsigned char[ww*hh*3];
   if (!pict) {
     Tcl_AppendResult(interp, "unable to alloc memory", NULL);
     return TCL_ERROR;
   }
-  memset(pict,0,w*h*3);
+  memset(pict,0,ww*hh*3);
   
   unsigned char* src = block.pixelPtr;
   unsigned char* dst = pict;
 
-  for (int j=0; j<h; j++)
-    for (int i=0; i<w; i++) {
-      *dst++ = src[(j*width+i)*block.pixelSize+block.offset[0]];
-      *dst++ = src[(j*width+i)*block.pixelSize+block.offset[1]];
-      *dst++ = src[(j*width+i)*block.pixelSize+block.offset[2]];
+  for (int jj=0; jj<hh; jj++)
+    for (int ii=0; ii<ww; ii++) {
+      if (jj<height && ii<width) {
+	*dst++ = src[(jj*width+ii)*block.pixelSize+block.offset[0]];
+	*dst++ = src[(jj*width+ii)*block.pixelSize+block.offset[1]];
+	*dst++ = src[(jj*width+ii)*block.pixelSize+block.offset[2]];
+      }
+      else {
+	*dst++ = 255;
+	*dst++ = 255;
+	*dst++ = 255;
+      }
     }
 
   if(!ezMPEG_Add(&ms, pict)) {

-- 
image display tool for astronomy



More information about the debian-science-commits mailing list