Index: /trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /trunk/Ohana/src/libdvo/include/dvo.h	(revision 39479)
+++ /trunk/Ohana/src/libdvo/include/dvo.h	(revision 39480)
@@ -1144,4 +1144,5 @@
 BoundaryTree *BoundaryTreeLoad(char *filename);
 BoundaryTree *BoundaryTreeRead(Header *headerPHU, Header *headerZone, FILE *f);
+void BoundaryTreeFree(BoundaryTree *tree);
 
 int BoundaryTreeSave(char *filename, BoundaryTree *tree);
@@ -1155,4 +1156,5 @@
 int TessellationPrimaryCellIDs (TessellationTable *tess, int Ntess, int *tessID, int *projID, int *skycellID, double ra, double dec);
 void TessellationTableInit (TessellationTable *tess, int Ntess);
+void TessellationTableFree (TessellationTable *tess, int Ntess);
 
 float dvoOffsetR (Measure *measure, Average *average);
Index: /trunk/Ohana/src/libdvo/src/BoundaryTree.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/BoundaryTree.c	(revision 39479)
+++ /trunk/Ohana/src/libdvo/src/BoundaryTree.c	(revision 39480)
@@ -10,4 +10,44 @@
 
 # define DEBUG 0
+
+void BoundaryTreeFree(BoundaryTree *tree) {
+
+  if (!tree) return;
+
+  for (int i = 0; i < tree->Nzone; i++) {
+    for (int j = 0; j < tree->Nband[i]; j++) {
+      FREE (tree->name[i][j]);
+    }
+    FREE (tree->ra[i]);
+    FREE (tree->dec[i]);
+    FREE (tree->Xo[i]);
+    FREE (tree->Yo[i]);
+    FREE (tree->dX[i]);
+    FREE (tree->dY[i]);
+    FREE (tree->cell[i]);
+    FREE (tree->projID[i]);
+    FREE (tree->name[i]);
+  }
+
+  FREE (tree->ra);
+  FREE (tree->dec);
+  FREE (tree->Xo);
+  FREE (tree->Yo);
+  FREE (tree->dX);
+  FREE (tree->dY);
+  FREE (tree->cell);
+  FREE (tree->projID);
+  FREE (tree->name);
+
+  FREE (tree->Nband);
+  FREE (tree->RA_origin);
+  FREE (tree->RA_offset);
+  FREE (tree->DEC_min);
+  FREE (tree->DEC_max);
+  FREE (tree->DEC_min_raw);
+  FREE (tree->DEC_max_raw);
+
+  return;
+}
 
 BoundaryTree *BoundaryTreeLoad(char *filename) {
Index: /trunk/Ohana/src/libdvo/src/TessellationTable.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/TessellationTable.c	(revision 39479)
+++ /trunk/Ohana/src/libdvo/src/TessellationTable.c	(revision 39480)
@@ -44,4 +44,14 @@
   }
   return;
+}
+
+void TessellationTableFree (TessellationTable *tess, int Ntess) {
+  if (!tess) return;
+
+  for (int i = 0; i < Ntess; i++) {
+    FREE (tess[i].basename);
+    BoundaryTreeFree(tess[i].tree);
+    FREE (tess[i].tree);
+  }
 }
 
@@ -184,4 +194,6 @@
   free(PROJECT_ID_OFF);
   free(SKYCELL_ID_OFF);
+
+  free(BASENAME);
 
   gfits_free_header (&theader);
