diff --git a/src/cdi_int.c b/src/cdi_int.c
index a915d736c3da12f28175c47668da1e2f887ec9b2..53d2afa77119aaf1fb3f98e110c53f79063f690a 100644
--- a/src/cdi_int.c
+++ b/src/cdi_int.c
@@ -389,12 +389,6 @@ const char *strfiletype(int filetype)
 }
 
 
-int streamSize(void)
-{
-  return reshCountType ( &streamOps );
-}
-
-
 void cdiDefGlobal(const char *string, int val)
 {
   if      ( strcmp(string, "REGULARGRID")      == 0 ) cdiDataUnreduced = val;
diff --git a/src/cdi_int.h b/src/cdi_int.h
index 858d3edba44c8e6175001c03f0683217533a9552..9fa869e502b366e5cdadc752873de04ae0a178d5 100644
--- a/src/cdi_int.h
+++ b/src/cdi_int.h
@@ -318,8 +318,7 @@ int     cdiInqAccesstype(int streamID);
 
 int     getByteswap(int byteorder);
 
-int     streamSize ();
-void    streamGetIndexList ( int, int * );
+void cdiStreamGetIndexList(unsigned numIDs, int IDs[numIDs]);
 
 
 void  cdiInitialize(void);
diff --git a/src/grid.c b/src/grid.c
index 63e7e7a458ac600872a892f643beb5005dc0094b..a30557c27accf4cbcef4d00352b188396c939d23 100644
--- a/src/grid.c
+++ b/src/grid.c
@@ -201,9 +201,9 @@ void grid_copy(grid_t *gridptr2, grid_t *gridptr1)
   gridptr2->self = gridID2;
 }
 
-int gridSize(void)
+unsigned cdiGridCount(void)
 {
-  return reshCountType ( &gridOps );
+  return reshCountType(&gridOps);
 }
 
 // used also in CDO
@@ -3860,9 +3860,9 @@ void gridInqUUID(int gridID, unsigned char uuid[CDI_UUID_SIZE])
 }
 
 
-void gridGetIndexList ( int ngrids, int * gridIndexList )
+void cdiGridGetIndexList(unsigned ngrids, int * gridIndexList)
 {
-  reshGetResHListOfType ( ngrids, gridIndexList, &gridOps );
+  reshGetResHListOfType(ngrids, gridIndexList, &gridOps);
 }
 
 
diff --git a/src/grid.h b/src/grid.h
index b85943489f50fcce9406e35df6ca92673eded907..4e447211de17b43ec5cc329c4cc46b7b87c6123e 100644
--- a/src/grid.h
+++ b/src/grid.h
@@ -76,7 +76,7 @@ grid_t;
 void grid_init(grid_t *gridptr);
 void grid_free(grid_t *gridptr);
 
-int gridSize(void);
+unsigned cdiGridCount(void);
 
 const double *gridInqXvalsPtr(int gridID);
 const double *gridInqYvalsPtr(int gridID);
@@ -88,7 +88,7 @@ const double *gridInqAreaPtr(int gridID);
 int gridCompare(int gridID, const grid_t *grid);
 int gridGenerate(const grid_t *grid);
 
-void gridGetIndexList( int, int * );
+void cdiGridGetIndexList(unsigned, int * );
 
 void
 gridUnpack(char * unpackBuffer, int unpackBufferSize,
diff --git a/src/institution.c b/src/institution.c
index fcbef8dc94075a68944b5f3ba5e366e33c8bfc7c..081ac84191feb3c73231d27166b7746514003481 100644
--- a/src/institution.c
+++ b/src/institution.c
@@ -88,12 +88,6 @@ void instituteDefaultEntries ( void )
 }
 
 
-int instituteCount ( void )
-{
-  return reshCountType ( &instituteOps );
-}
-
-
 static int
 instituteCompareKernel(institute_t *  ip1, institute_t * ip2)
 {
diff --git a/src/model.c b/src/model.c
index b14181edb3e8c33d5e01a8cdbecf689bc7c89ec9..fdd58e96b9351aa00fbb32444a8954667bc4be4f 100644
--- a/src/model.c
+++ b/src/model.c
@@ -132,11 +132,6 @@ void modelInit(void)
   if ( env ) MODEL_Debug = atoi(env);
 }
 
-int modelSize ( void )
-{
-  return reshCountType ( &modelOps );
-}
-
 struct modelLoc
 {
   char *name;
diff --git a/src/pio_interface.c b/src/pio_interface.c
index 19d3b7d6639b92db54f7d5d9692fe48fa8240aa9..d4c67fb524e0b48507555353a976c1fdceb0877b 100644
--- a/src/pio_interface.c
+++ b/src/pio_interface.c
@@ -155,7 +155,7 @@ in order of vSizes
 
 static void
 varMapGen(int *vSizes, int *sSizes, int *varMapping,
-          int nStreams, int *nodeSizes, int nNodes)
+          unsigned nStreams, int *nodeSizes, int nNodes)
 {
 
   int weightsStreams[nStreams];
@@ -170,9 +170,9 @@ varMapGen(int *vSizes, int *sSizes, int *varMapping,
 
   int buckets[nProcsColl];
 
-  for ( i = 0; i < nStreams; i++ )
+  for (unsigned i = 0; i < nStreams; i++ )
     {
-      nVars += * ( sSizes + i );
+      nVars += sSizes[i];
       weightsStreams[i] = 0;
       for ( j = 0; j < * ( sSizes + i ); j++ )
 	weightsStreams[i] += * ( vSizes + offset++ );
@@ -185,13 +185,13 @@ varMapGen(int *vSizes, int *sSizes, int *varMapping,
   for ( j = 0; j < nNodes; j++ )
     w[j] = ( double ) * ( nodeSizes + j ) / ( double ) nPEs;
 
-  mapProblems ( weightsStreams, streamMapping, nStreams, nNodes, w );
+  mapProblems(weightsStreams, streamMapping, (int)nStreams, nNodes, w);
   free ( w );
 
   for ( i = 0; i < nNodes; i++ )
     {
       nVarsNode = 0;
-      for ( j = 0; j < nStreams; j++ )
+      for (unsigned j = 0; j < nStreams; j++)
 	if ( * ( streamMapping + j ) == i )
 	  nVarsNode += * ( sSizes + j );
 
@@ -201,12 +201,12 @@ varMapGen(int *vSizes, int *sSizes, int *varMapping,
       offset = 0;
       offsetN = 0;
 
-      for ( j = 0; j < nStreams; j++ )
-	if ( * ( streamMapping + j ) == i )
+      for (unsigned j = 0; j < nStreams; j++ )
+	if (streamMapping[j] == i)
 	  for ( k = 0; k < * ( sSizes + j ); k ++ )
-	    * ( weightsVarsNode + offsetN++ ) = * ( vSizes + offset++ );
+	    weightsVarsNode[offsetN++] = vSizes[offset++];
 	else
-	  offset += * ( sSizes + j );
+	  offset += sSizes[j];
 
       for ( j = 0; j < * ( nodeSizes + i ); j ++ )
 	w[j] = 1.0 / ( double ) * ( nodeSizes + i );
@@ -217,7 +217,7 @@ varMapGen(int *vSizes, int *sSizes, int *varMapping,
       offset = 0;
       offsetN = 0;
 
-      for ( j = 0; j < nStreams; j++ )
+      for (unsigned j = 0; j < nStreams; j++)
 	if ( * ( streamMapping + j ) == i )
 	  for ( k = 0; k < * ( sSizes + j ); k ++ )
 	    * ( varMapping + offset ++ ) =
@@ -249,28 +249,28 @@ varMapGen(int *vSizes, int *sSizes, int *varMapping,
 static void
 varsMapNDeco(int nNodes, int *nodeSizes)
 {
-  int nStreams, nVars, * resHs, * streamSizes, * varSizes, * varMapping,
+  int nVars, * resHs, * streamSizes, * varSizes, * varMapping,
     * collectsData;
   int k = 0;
   int nProcsColl = commInqNProcsColl ();
 
   xdebug ( "START, nProcsColl=%d", nProcsColl );
 
-  nStreams = streamSize ();
+  unsigned nStreams = reshCountType(&streamOps);
 
-  resHs       = xmalloc((size_t)nStreams * sizeof (resHs[0]));
-  streamSizes = xmalloc((size_t)nStreams * sizeof (streamSizes[0]));
+  resHs       = xmalloc(nStreams * sizeof (resHs[0]));
+  streamSizes = xmalloc(nStreams * sizeof (streamSizes[0]));
   collectsData = xmalloc((size_t)nProcsColl * sizeof (collectsData[0]));
-  streamGetIndexList ( nStreams, resHs );
+  cdiStreamGetIndexList(nStreams, resHs);
 
-  for (int i = 0; i < nStreams; i++ )
-    streamSizes[i] = streamInqNvars ( * ( resHs + i ));
+  for (unsigned i = 0; i < nStreams; i++ )
+    streamSizes[i] = streamInqNvars(resHs[i]);
 
   nVars = sum_int((size_t)nStreams, streamSizes);
   varSizes   = xcalloc((size_t)nVars, sizeof (varSizes[0]));
   varMapping = xmalloc((size_t)nVars * sizeof (varMapping[0]));
 
-  for (int i = 0; i < nStreams; i++ )
+  for (unsigned i = 0; i < nStreams; i++ )
     {
       int vlistID = streamInqVlist(resHs[i]);
       for (int j = 0; j < streamSizes[i]; j++ )
@@ -283,7 +283,7 @@ varsMapNDeco(int nNodes, int *nodeSizes)
 	      nStreams, nodeSizes, nNodes );
 
   k = 0;
-  for (int i = 0; i < nStreams; i++ )
+  for (unsigned i = 0; i < nStreams; i++ )
     for (int j = 0; j < * ( streamSizes + i ); j++ )
       {
         vlistDefVarIOrank ( streamInqVlist ( * ( resHs + i )), j,
@@ -343,7 +343,7 @@ struct collDesc
 static void
 modelWinDefBufferSizes(void)
 {
-  int collID, nstreams, * streamIndexList, streamNo, nvars, varID;
+  int collID, * streamIndexList, nvars, varID;
   size_t sumWinBufferSize = 0;
   int nProcsColl  = commInqNProcsColl ();
   int rankGlob    = commInqRankGlob ();
@@ -353,11 +353,11 @@ modelWinDefBufferSizes(void)
   xdebug("%s", "START");
   xassert(txWin != NULL);
 
-  nstreams = reshCountType ( &streamOps );
+  unsigned nstreams = reshCountType ( &streamOps );
   streamIndexList = xmalloc((size_t)nstreams * sizeof (streamIndexList[0]));
   collIndex = xcalloc((size_t)nProcsColl, sizeof (collIndex[0]));
   reshGetResHListOfType ( nstreams, streamIndexList, &streamOps );
-  for ( streamNo = 0; streamNo < nstreams; streamNo++ )
+  for (unsigned streamNo = 0; streamNo < nstreams; streamNo++ )
     {
       // memory required for data
       int streamID = streamIndexList[streamNo];
diff --git a/src/pio_server.c b/src/pio_server.c
index 52652fa10ffe4f1b9b5d098501048878c2b7b805..8180d7fd9dcab2b0e31761baa716e8d934d4733a 100644
--- a/src/pio_server.c
+++ b/src/pio_server.c
@@ -76,7 +76,7 @@ void serverWinCleanup ()
 static size_t
 collDefBufferSizes()
 {
-  int nstreams, * streamIndexList, streamNo, vlistID, nvars, varID, iorank;
+  int *streamIndexList, vlistID, nvars, varID, iorank;
   int modelID;
   size_t sumGetBufferSizes = 0;
   int rankGlob = commInqRankGlob ();
@@ -85,10 +85,10 @@ collDefBufferSizes()
 
   xassert(rxWin != NULL);
 
-  nstreams = reshCountType ( &streamOps );
+  unsigned nstreams = reshCountType ( &streamOps );
   streamIndexList = xmalloc((size_t)nstreams * sizeof (streamIndexList[0]));
   reshGetResHListOfType ( nstreams, streamIndexList, &streamOps );
-  for ( streamNo = 0; streamNo < nstreams; streamNo++ )
+  for (unsigned streamNo = 0; streamNo < nstreams; streamNo++)
     {
       // space required for data
       vlistID = streamInqVlist ( streamIndexList[streamNo] );
@@ -575,18 +575,18 @@ buildStreamMap(struct winHeaderEntry *winDict)
   /* join with list of streams written to in total */
   {
     int *streamIDs, *streamIsWritten;
-    int numTotalStreamIDs = streamSize();
-    streamIDs = (int*) xmalloc(2 * sizeof (streamIDs[0]) * (size_t)numTotalStreamIDs);
-    streamGetIndexList(numTotalStreamIDs, streamIDs);
+    unsigned numTotalStreamIDs = reshCountType(&streamOps);
+    streamIDs = xmalloc(2 * sizeof (streamIDs[0]) * (size_t)numTotalStreamIDs);
+    cdiStreamGetIndexList(numTotalStreamIDs, streamIDs);
     streamIsWritten = streamIDs + numTotalStreamIDs;
-    for (int i = 0; i < numTotalStreamIDs; ++i)
+    for (unsigned i = 0; i < numTotalStreamIDs; ++i)
       streamIsWritten[i] = streamIsInList(streamMap, numStreamIDs,
                                           streamIDs[i]);
     /* Find what streams are written to at all on any process */
-    xmpi(MPI_Allreduce(MPI_IN_PLACE, streamIsWritten, numTotalStreamIDs,
+    xmpi(MPI_Allreduce(MPI_IN_PLACE, streamIsWritten, (int)numTotalStreamIDs,
                        MPI_INT, MPI_BOR, commInqCommColl()));
     /* append streams written to on other tasks to mapping */
-    for (int i = 0; i < numTotalStreamIDs; ++i)
+    for (unsigned i = 0; i < numTotalStreamIDs; ++i)
       if (streamIsWritten[i] && !streamIsInList(streamMap, numStreamIDs,
                                                 streamIDs[i]))
         numStreamIDs = inventorizeStream(streamMap, numStreamIDs,
@@ -1096,13 +1096,13 @@ void cdiPioServer(void (*postCommSetupActions)(void))
           if ( nfinished == nProcsModel )
             {
               {
-                int nStreams = streamSize ();
+                unsigned nStreams = reshCountType(&streamOps);
 
                 if ( nStreams > 0 )
                   {
-                    int * resHs = xmalloc((size_t)nStreams * sizeof (resHs[0]));
-                    streamGetIndexList ( nStreams, resHs );
-                    for (int streamNo = 0; streamNo < nStreams; ++streamNo)
+                    int *resHs = xmalloc(nStreams * sizeof (resHs[0]));
+                    cdiStreamGetIndexList(nStreams, resHs);
+                    for (unsigned streamNo = 0; streamNo < nStreams; ++streamNo)
                       streamClose(resHs[streamNo]);
                     free(resHs);
                   }
diff --git a/src/resource_handle.c b/src/resource_handle.c
index f0f2301f6530750644cd154c54beb500f0e9a32a..5c6cfdd13d61b38724b7d43fc49165f19d2ebe95 100644
--- a/src/resource_handle.c
+++ b/src/resource_handle.c
@@ -431,19 +431,17 @@ void *reshGetValue(const char * caller, const char* expressionString, cdiResH re
 
 /**************************************************************/
 
-void reshGetResHListOfType ( int c, int * resHs, const resOps * ops )
+void reshGetResHListOfType(unsigned numIDs, int resHs[numIDs], const resOps *ops)
 {
-  int i, j = 0, nsp;
-
   xassert ( resHs && ops );
 
   LIST_INIT(1);
 
   LIST_LOCK();
 
-  nsp = namespaceGetActive ();
-
-  for ( i = 0; i < resHList[nsp].size && j < c; i++ )
+  int nsp = namespaceGetActive();
+  unsigned j = 0;
+  for (int i = 0; i < resHList[nsp].size && j < numIDs; i++ )
     if ((resHList[nsp].resources[i].status & RESH_IN_USE_BIT)
         && resHList[nsp].resources[i].res.v.ops == ops)
       resHs[j++] = namespaceIdxEncode2(nsp, i);
@@ -500,20 +498,21 @@ cdiResHFilterApply(const resOps *p,
 
 /**************************************************************/
 
-int reshCountType ( const resOps * ops )
+unsigned reshCountType(const resOps *ops)
 {
-  int i, nsp, countType = 0;
+  unsigned countType = 0;
 
-  xassert ( ops );
+  xassert(ops);
 
   LIST_INIT(1);
 
   LIST_LOCK();
 
-  nsp = namespaceGetActive ();
+  int nsp = namespaceGetActive ();
 
   listElem_t *r = resHList[nsp].resources;
-  for ( i = 0; i < resHList[nsp].size; i++ )
+  size_t len = (size_t)resHList[nsp].size;
+  for (size_t i = 0; i < len; i++ )
     countType += ((r[i].status & RESH_IN_USE_BIT) && r[i].res.v.ops == ops);
 
   LIST_UNLOCK();
diff --git a/src/resource_handle.h b/src/resource_handle.h
index aad9a0c5cacc5cebbab568b2375dccc795417f49..b2c376d6b90361ba3a9f3bf1fb86826f758120fc 100644
--- a/src/resource_handle.h
+++ b/src/resource_handle.h
@@ -57,13 +57,13 @@ void   reshRemove ( cdiResH, const resOps * );
 /*> doesn't check resource type */
 void reshDestroy(cdiResH);
 
-int    reshCountType ( const resOps * );
+unsigned reshCountType(const resOps *resTypeOps);
 
 void * reshGetValue(const char* caller, const char* expressionString, cdiResH id, const resOps* ops);
 #define reshGetVal(resH, ops)  reshGetValue(__func__, #resH, resH, ops)
 
 
-void   reshGetResHListOfType ( int, int *, const resOps * );
+void reshGetResHListOfType(unsigned numIDs, int IDs[numIDs], const resOps *ops);
 
 enum cdiApplyRet {
   CDI_APPLY_ERROR = -1,
diff --git a/src/stream.c b/src/stream.c
index 205258b695890af2c66d10f447527ddc13f06a43..1e421516d9ff0c4dc9286c55b4eae134f02a7ac7 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -2174,9 +2174,9 @@ void cdiStreamSetupVlist(stream_t *streamptr, int vlistID, int vlistIDorig)
 }
 
 
-void streamGetIndexList ( int nstreams, int * streamIndexList )
+void cdiStreamGetIndexList(unsigned numIDs, int IDs[numIDs])
 {
-  reshGetResHListOfType ( nstreams, streamIndexList, &streamOps );
+  reshGetResHListOfType(numIDs, IDs, &streamOps);
 }
 
 int streamInqNvars ( int streamID )
@@ -2279,7 +2279,6 @@ void streamPrintP   ( void * streamptr, FILE * fp )
   fprintf ( fp, "vlistIDorig   = %d\n", sp->vlistIDorig );
 }
 
-
 enum {
   streamNint = 11,
 };
diff --git a/src/varscan.c b/src/varscan.c
index d1fd60f0ea9e56ac8434951c65dbe1a078cac4e9..131261ab28eb50300838d7dd7e57411cc6480ce2 100644
--- a/src/varscan.c
+++ b/src/varscan.c
@@ -750,19 +750,17 @@ int varDefGrid(int vlistID, const grid_t *grid, int mode)
    */
   int gridglobdefined = FALSE;
   int griddefined;
-  int ngrids;
   int gridID = CDI_UNDEFID;
-  int index;
   vlist_t *vlistptr;
-  int * gridIndexList, i;
+  int * gridIndexList;
 
   vlistptr = vlist_to_pointer(vlistID);
 
   griddefined = FALSE;
-  ngrids = vlistptr->ngrids;
+  unsigned ngrids = (unsigned)vlistptr->ngrids;
 
   if ( mode == 0 )
-    for ( index = 0; index < ngrids; index++ )
+    for (unsigned index = 0; index < ngrids; index++ )
       {
 	gridID = vlistptr->gridIDs[index];
 	if ( gridID == UNDEFID )
@@ -777,12 +775,12 @@ int varDefGrid(int vlistID, const grid_t *grid, int mode)
 
   if ( ! griddefined )
     {
-      ngrids = gridSize();
+      ngrids = cdiGridCount();
       if ( ngrids > 0 )
         {
           gridIndexList = (int*)xmalloc((size_t)ngrids * sizeof(int));
-          gridGetIndexList ( ngrids, gridIndexList );
-          for ( i = 0; i < ngrids; i++ )
+          cdiGridGetIndexList ( ngrids, gridIndexList );
+          for (unsigned i = 0; i < ngrids; i++ )
             {
               gridID = gridIndexList[i];
               if ( gridCompare(gridID, grid) == 0 )
@@ -791,12 +789,12 @@ int varDefGrid(int vlistID, const grid_t *grid, int mode)
                   break;
                 }
             }
-          if ( gridIndexList ) free ( gridIndexList );
+          free(gridIndexList);
         }
 
-      ngrids = vlistptr->ngrids;
+      ngrids = (unsigned)vlistptr->ngrids;
       if ( mode == 1 )
-	for ( index = 0; index < ngrids; index++ )
+	for (unsigned index = 0; index < ngrids; index++ )
 	  if ( vlistptr->gridIDs[index] == gridID )
 	    {
 	      gridglobdefined = FALSE;
@@ -807,7 +805,7 @@ int varDefGrid(int vlistID, const grid_t *grid, int mode)
   if ( ! griddefined )
     {
       if ( ! gridglobdefined ) gridID = gridGenerate(grid);
-      ngrids = vlistptr->ngrids;
+      ngrids = (unsigned)vlistptr->ngrids;
       vlistptr->gridIDs[ngrids] = gridID;
       vlistptr->ngrids++;
     }
@@ -871,17 +869,15 @@ int varDefZaxis(int vlistID, int zaxistype, int nlevels, double *levels, int lbo
     mode: 0 search in vlist and zaxis table
           1 search in zaxis table
    */
-  int zaxisdefined;
+  int zaxisdefined = 0;
   int nzaxis;
   int zaxisID = UNDEFID;
   int index;
   int zaxisglobdefined = 0;
   vlist_t *vlistptr;
-  int i;
 
   vlistptr = vlist_to_pointer(vlistID);
 
-  zaxisdefined = 0;
   nzaxis = vlistptr->nzaxis;
 
   if ( mode == 0 )
@@ -898,13 +894,14 @@ int varDefZaxis(int vlistID, int zaxistype, int nlevels, double *levels, int lbo
 
   if ( ! zaxisdefined )
     {
-      nzaxis = zaxisSize();
+      reshLock();
+      unsigned nzaxis = cdiZaxisCount();
       if ( nzaxis > 0 )
         {
           int *zaxisIndexList;
           zaxisIndexList = (int *)xmalloc((size_t)nzaxis * sizeof (int));
-          zaxisGetIndexList(nzaxis, zaxisIndexList);
-          for ( i = 0; i < nzaxis; i++ )
+          cdiZaxisGetIndexList ( nzaxis, zaxisIndexList );
+          for (unsigned i = 0; i < nzaxis; i++ )
             {
               zaxisID = zaxisIndexList[i];
               if ( zaxisCompare(zaxisID, zaxistype, nlevels, lbounds, levels, longname, units, ltype1) == 0 )
@@ -913,12 +910,13 @@ int varDefZaxis(int vlistID, int zaxistype, int nlevels, double *levels, int lbo
                   break;
                 }
             }
-          if ( zaxisIndexList ) free ( zaxisIndexList );
+          free(zaxisIndexList);
         }
+      reshUnlock();
 
-      nzaxis = vlistptr->nzaxis;
+      nzaxis = (unsigned)vlistptr->nzaxis;
       if ( mode == 1 )
-	for ( index = 0; index < nzaxis; index++ )
+	for (unsigned index = 0; index < nzaxis; index++ )
 	  if ( vlistptr->zaxisIDs[index] == zaxisID )
 	    {
 	      zaxisglobdefined = FALSE;
diff --git a/src/vlist.c b/src/vlist.c
index 2c49eed4d440ac511a8d25e7c750267d86ae2c69..a9228f43a1a7ebea7cbba1d30111107997fb9054 100644
--- a/src/vlist.c
+++ b/src/vlist.c
@@ -23,8 +23,6 @@ int    cdiNAdditionalGRIBKeys = 0;
 char*  cdiAdditionalGRIBKeys[MAX_OPT_GRIB_ENTRIES];
 #endif
 
-extern void zaxisGetIndexList ( int, int * );
-
 static int VLIST_Debug = 0;
 
 static void vlist_initialize(void);
@@ -445,13 +443,13 @@ int vlist_generate_zaxis(int vlistID, int zaxistype, int nlevels, const double *
 
   if ( ! zaxisdefined )
     {
-      nzaxis = zaxisSize();
+      unsigned nzaxis = cdiZaxisCount();
       if ( nzaxis > 0 )
         {
           int *zaxisIndexList = (int *)xmalloc((size_t)nzaxis * sizeof (int));
           reshLock();
-          zaxisGetIndexList ( nzaxis, zaxisIndexList );
-          for ( int index = 0; index < nzaxis; ++index )
+          cdiZaxisGetIndexList(nzaxis, zaxisIndexList);
+          for (unsigned index = 0; index < nzaxis; ++index)
             {
               zaxisID = zaxisIndexList[index];
               if ( zaxisCompare(zaxisID, zaxistype, nlevels, has_bounds, levels, NULL, NULL, 0) == 0 )
diff --git a/src/zaxis.c b/src/zaxis.c
index fc6c081eaf8a1efb3e2ae6f923e367c3e829dcac..5902593dc7685921feead70a0799a4858a71297d 100644
--- a/src/zaxis.c
+++ b/src/zaxis.c
@@ -172,9 +172,9 @@ void zaxis_copy(zaxis_t *zaxisptr2, zaxis_t *zaxisptr1)
   zaxisptr2->self = zaxisID2;
 }
 
-int zaxisSize(void)
+unsigned cdiZaxisCount(void)
 {
-  return reshCountType ( &zaxisOps );
+  return reshCountType(&zaxisOps);
 }
 
 static int
@@ -1636,9 +1636,9 @@ zaxisPack(void * voidP, void * packBuffer, int packBufferSize,
 }
 
 
-void zaxisGetIndexList ( int nzaxis, int * zaxisResHs )
+void cdiZaxisGetIndexList(unsigned nzaxis, int zaxisResHs[nzaxis])
 {
-  reshGetResHListOfType ( nzaxis, zaxisResHs, &zaxisOps );
+  reshGetResHListOfType(nzaxis, zaxisResHs, &zaxisOps);
 }
 
 #undef ZAXIS_STR_SERIALIZE
diff --git a/src/zaxis.h b/src/zaxis.h
index 133316da007a3f09bbf1f813404ed6803b90be91..d5c9ac8df22b72c0dc20aac4ac5a1f2097686026 100644
--- a/src/zaxis.h
+++ b/src/zaxis.h
@@ -1,11 +1,15 @@
 #ifndef _ZAXIS_H
 #define _ZAXIS_H
 
-int zaxisSize(void);
+unsigned cdiZaxisCount(void);
+
+void cdiZaxisGetIndexList(unsigned numIDs, int IDs[numIDs]);
 
 void
 zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
             int * unpackBufferPos, int originNamespace, void *context,
             int force_id);
 
+void zaxisDefLtype2(int zaxisID, int ltype2);
+
 #endif