Index: /trunk/Ohana/src/opihi/cmd.astro/imfit.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/imfit.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/cmd.astro/imfit.c	(revision 9275)
@@ -138,13 +138,7 @@
     free (out[0].header.buffer);
     free (out[0].matrix.buffer);
+
     strcpy (out[0].file, "(empty)");
-    out[0].header.bitpix = -32;
-    out[0].header.bscale = 1.0;
-    out[0].header.bzero  = 0.0;
-    out[0].header.unsign = FALSE;
-    out[0].header.Naxes = 2;
-    out[0].header.Naxis[0] = 2*nx;
-    out[0].header.Naxis[1] = 2*ny;
-    CreateBuffer (out);
+    CreateBuffer (out, 2*nx, 2*ny, -32, 0.0, 1.0);
 
     /* four panels: 1) raw image. 2) fit  3) raw - fit   4) ?? */
Index: /trunk/Ohana/src/opihi/cmd.data/create.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/create.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/cmd.data/create.c	(revision 9275)
@@ -1,5 +1,3 @@
 # include "data.h"
-
-int imcreate (int argc, char **argv);
 
 int create (int argc, char **argv) {
@@ -8,9 +6,4 @@
   float start, end, delta;
   Vector *vec;
-  
-  if ((N = get_argument (argc, argv, "-image"))) {
-    remove_argument (N, &argc, argv);
-    return (imcreate (argc, argv));
-  }
   
   if ((argc != 5) && (argc != 4)) {
@@ -43,37 +36,2 @@
   return (TRUE);
 }
-
-
-int imcreate (int argc, char **argv) {
-  
-  Buffer *buf;
-
-  if (argc != 4) {
-    gprint (GP_ERR, "USAGE: create -image buffer Nx Ny\n");
-    return (FALSE);
-  }
-
-  if ((buf = SelectBuffer (argv[1], ANYBUFFER, TRUE)) == NULL) return (FALSE);
-  gfits_free_matrix (&buf[0].matrix);
-  gfits_free_header (&buf[0].header);
-
-  buf[0].bitpix = 16;
-  buf[0].unsign = FALSE;
-  buf[0].bscale = 1.0;
-  buf[0].bzero  = 0x8000;
-
-  buf[0].header.bitpix = -32;
-  buf[0].header.unsign = FALSE;
-  buf[0].header.bscale = 1.0;
-  buf[0].header.bzero  = 0.0;
-
-  buf[0].header.Naxes = 2;
-  buf[0].header.Naxis[0] = atoi (argv[2]);
-  buf[0].header.Naxis[1] = atoi (argv[3]);
-
-  gfits_create_header (&buf[0].header);
-  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
-
-  return (TRUE);
-
-}
Index: /trunk/Ohana/src/opihi/cmd.data/dimenup.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/dimenup.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/cmd.data/dimenup.c	(revision 9275)
@@ -24,19 +24,7 @@
   }
 
-  buf[0].matrix.Naxis[0] = Nx;
-  buf[0].matrix.Naxis[1] = Ny;
-
-  /* I should encapsulate this in a create_default_buffer */
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  buf[0].header.bitpix = buf[0].bitpix = -32;
-  buf[0].header.unsign = buf[0].unsign = FALSE;
-  buf[0].header.bscale = buf[0].bscale = 1.0;
-  buf[0].header.bzero  = buf[0].bzero  = 0.0;
-  buf[0].header.Naxes = 2;
-  buf[0].header.Naxis[0] = Nx;
-  buf[0].header.Naxis[1] = Ny;
-  gfits_create_header (&buf[0].header);
-  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
+  CreateBuffer (buf, Nx, Ny, -32, 0.0, 1.0);
 
   out = (float *) buf[0].matrix.buffer;
Index: /trunk/Ohana/src/opihi/cmd.data/gridify.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 9275)
@@ -40,22 +40,8 @@
   Ny = (Ymax - Ymin) / dY + 1;
   
-  /* these steps are a standard 'createbuffer', define? */
-  bf[0].bitpix = -32;
-  bf[0].unsign = FALSE;
-  bf[0].bscale = 1.0;
-  bf[0].bzero  = 0.0;
+  gfits_free_matrix (&bf[0].matrix);
+  gfits_free_header (&bf[0].header);
+  CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0);
   strcpy (bf[0].file, "(empty)");
-
-  bf[0].header.bitpix = bf[0].bitpix;
-  bf[0].header.bscale = bf[0].bscale;
-  bf[0].header.bzero  = bf[0].bzero; 
-  bf[0].header.unsign = bf[0].unsign;
-  bf[0].header.Naxes = 2;
-  bf[0].header.Naxis[0] = Nx;
-  bf[0].header.Naxis[1] = Ny;
-  free (bf[0].header.buffer);  /* ALLOCATEd in SelectBuffer */
-  free (bf[0].matrix.buffer);  /* ALLOCATEd in SelectBuffer */
-  gfits_create_header (&bf[0].header);
-  gfits_create_matrix (&bf[0].header, &bf[0].matrix);
 
   ALLOCATE (val, float, Nx*Ny);
Index: /trunk/Ohana/src/opihi/cmd.data/mcreate.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/mcreate.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/cmd.data/mcreate.c	(revision 9275)
@@ -15,22 +15,8 @@
   Ny = atof (argv[3]);
 
-  buf[0].matrix.Naxis[0] = Nx;
-  buf[0].matrix.Naxis[1] = Ny;
-
   /* I should encapsulate this in a create_default_buffer */
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  buf[0].header.bitpix = buf[0].bitpix = -32;
-  buf[0].header.unsign = buf[0].unsign = FALSE;
-  buf[0].header.bscale = buf[0].bscale = 1.0;
-  buf[0].header.bzero  = buf[0].bzero  = 0.0;
-  buf[0].header.Naxes = 2;
-  buf[0].header.Naxis[0] = Nx;
-  buf[0].header.Naxis[1] = Ny;
-  gfits_create_header (&buf[0].header);
-  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
+  CreateBuffer (buf, Nx, Ny, -32, 1.0, 0.0);
   return (TRUE);
-
 }
-
-
Index: /trunk/Ohana/src/opihi/cmd.data/vgrid.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/vgrid.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/cmd.data/vgrid.c	(revision 9275)
@@ -34,22 +34,8 @@
   Ny = (Ymax - Ymin) / dY + 1;
   
-  /* these steps are a standard 'createbuffer', define? */
-  bf[0].bitpix = -32;
-  bf[0].unsign = FALSE;
-  bf[0].bscale = 1.0;
-  bf[0].bzero  = 0.0;
+  gfits_free_matrix (&bf[0].matrix);
+  gfits_free_header (&bf[0].header);
+  CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0);
   strcpy (bf[0].file, "(empty)");
-
-  bf[0].header.bitpix = bf[0].bitpix;
-  bf[0].header.bscale = bf[0].bscale;
-  bf[0].header.bzero  = bf[0].bzero; 
-  bf[0].header.unsign = bf[0].unsign;
-  bf[0].header.Naxes = 2;
-  bf[0].header.Naxis[0] = Nx;
-  bf[0].header.Naxis[1] = Ny;
-  free (bf[0].header.buffer);  /* ALLOCATEd in SelectBuffer */
-  free (bf[0].matrix.buffer);  /* ALLOCATEd in SelectBuffer */
-  gfits_create_header (&bf[0].header);
-  gfits_create_matrix (&bf[0].header, &bf[0].matrix);
 
   ALLOCATE (val, float, Nx*Ny);
Index: /trunk/Ohana/src/opihi/dimm/camera.c
===================================================================
--- /trunk/Ohana/src/opihi/dimm/camera.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/dimm/camera.c	(revision 9275)
@@ -107,13 +107,6 @@
     gfits_free_matrix (&buf[0].matrix);
     gfits_free_header (&buf[0].header);
-    buf[0].header.bitpix = buf[0].bitpix = 16;
-    buf[0].header.unsign = buf[0].unsign = FALSE;
-    buf[0].header.bscale = buf[0].bscale = 1.0;
-    buf[0].header.bzero  = buf[0].bzero  = 0.0;
-    buf[0].header.Naxes = 2;
-    buf[0].header.Naxis[0] = dx;
-    buf[0].header.Naxis[1] = dy;
-    gfits_create_header (&buf[0].header);
-    gfits_create_matrix (&buf[0].header, &buf[0].matrix);
+    CreateBuffer (buf, dx, dy, -32, 0.0, 1.0);
+    strcpy (buf[0].file, "(empty)");
 
     ReadOut (x, y, dx, dy, 1, buf[0].matrix.buffer);
Index: /trunk/Ohana/src/opihi/dvo/fitcolors.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 9275)
@@ -138,19 +138,10 @@
   /* output is a named buffer */
   if ((buf = SelectBuffer (argv[1], ANYVECTOR, TRUE)) == NULL) goto usage;
-  buf[0].matrix.Naxis[0] = NP;
-  buf[0].matrix.Naxis[1] = NP;
-
-  /* I should encapsulate this in a create_default_buffer */
+
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  buf[0].header.bitpix = buf[0].bitpix = -32;
-  buf[0].header.unsign = buf[0].unsign = FALSE;
-  buf[0].header.bscale = buf[0].bscale = 1.0;
-  buf[0].header.bzero  = buf[0].bzero  = 0.0;
-  buf[0].header.Naxes = 2;
-  buf[0].header.Naxis[0] = NP;
-  buf[0].header.Naxis[1] = NP;
-  gfits_create_header (&buf[0].header);
-  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
+  CreateBuffer (buf, NP, NP, -32, 0.0, 1.0);
+  strcpy (buf[0].file, "(empty)");
+
   out = (float *) buf[0].matrix.buffer;
   /* we set a default flag value of -1 */
Index: /trunk/Ohana/src/opihi/dvo/skycoverage.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/skycoverage.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/dvo/skycoverage.c	(revision 9275)
@@ -75,19 +75,8 @@
   Ny = 180/pixscale;
 
-  buf[0].matrix.Naxis[0] = Nx;
-  buf[0].matrix.Naxis[1] = Ny;
-
-  /* I should encapsulate this in a create_default_buffer */
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  buf[0].header.bitpix = buf[0].bitpix = -32;
-  buf[0].header.unsign = buf[0].unsign = FALSE;
-  buf[0].header.bscale = buf[0].bscale = 1.0;
-  buf[0].header.bzero  = buf[0].bzero  = 0.0;
-  buf[0].header.Naxes = 2;
-  buf[0].header.Naxis[0] = Nx;
-  buf[0].header.Naxis[1] = Ny;
-  gfits_create_header (&buf[0].header);
-  gfits_create_matrix (&buf[0].header, &buf[0].matrix);
+  CreateBuffer (buf, Nx, Ny, -32, 0.0, 1.0);
+  strcpy (buf[0].file, "(empty)");
 
   coords.crval1 = 180;
Index: /trunk/Ohana/src/opihi/include/dvomath.h
===================================================================
--- /trunk/Ohana/src/opihi/include/dvomath.h	(revision 9274)
+++ /trunk/Ohana/src/opihi/include/dvomath.h	(revision 9275)
@@ -105,5 +105,5 @@
 int           IsBufferPtr           PROTO((Buffer *buf));
 int           PrintBuffers          PROTO((int Long));
-int           CreateBuffer          PROTO((Buffer *buf));
+int           CreateBuffer          PROTO((Buffer *buf, int Nx, int Ny, int bitpix, float bzero, float bscale));
 Buffer       *SelectBuffer          PROTO((char *name, int mode, int verbose));
 void          dump_buffers          PROTO((int n));  /* deprecated? */
Index: /trunk/Ohana/src/opihi/lib.shell/BufferOps.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 9274)
+++ /trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 9275)
@@ -69,12 +69,9 @@
 }
 
-int CreateBuffer (Buffer *buf) {
+int CreateBuffer (Buffer *buf, int Nx, int Ny, int bitpix, float bzero, float bscale) {
 
   /* store the default output values */
-  buf[0].bitpix = buf[0].header.bitpix;
-  buf[0].unsign = buf[0].header.unsign;
-  buf[0].bzero  = buf[0].header.bzero;
-  buf[0].bscale = buf[0].header.bscale;
-  
+  gfits_init_header (&buf[0].header);
+
   /* assign the necessary internal values */
   buf[0].header.bitpix   = -32;
@@ -82,4 +79,13 @@
   buf[0].header.bzero    = 0;
   buf[0].header.bscale   = 1;
+  
+  buf[0].header.Naxes = 2;
+  buf[0].header.Naxis[0] = Nx;
+  buf[0].header.Naxis[1] = Ny;
+
+  buf[0].bitpix = bitpix;
+  buf[0].unsign = FALSE;
+  buf[0].bzero  = bzero;
+  buf[0].bscale = bscale;
   
   /* make some test of the validity of the values */
