diff --git a/.gitattributes b/.gitattributes
index b2dc3537ca998137aee816f951da0a09ff912228..f7ae8f52a5c0090473c078740cfbc8cd54e6089e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3640,7 +3640,7 @@ RTCP/InputProc/src/StationStreams.h -text
 RTCP/InputProc/src/TimeSync.h -text
 RTCP/InputProc/src/newInputSection.cc -text
 RTCP/InputProc/src/shmtest.cc -text
-RTCP/InputProc/src/tRSPTimeStamp.cc -text
+RTCP/InputProc/test/tRSPTimeStamp2.cc -text
 RTCP/Interface/include/Interface/BGPAsm.h -text
 RTCP/Interface/include/Interface/BeamCoordinates.h -text
 RTCP/Interface/include/Interface/BeamFormedData.h -text
diff --git a/RTCP/InputProc/CMakeLists.txt b/RTCP/InputProc/CMakeLists.txt
index 1d8f8ec0b21145683adaeed8b98de73aae1d73ca..18ab5405e0d2971349d32a5fde59c26b876fef46 100644
--- a/RTCP/InputProc/CMakeLists.txt
+++ b/RTCP/InputProc/CMakeLists.txt
@@ -4,10 +4,10 @@ lofar_package(InputProc 1.0
   DEPENDS Common Stream Interface IONProc)
 
 include(LofarFindPackage)
-#lofar_find_package(Boost REQUIRED)
+lofar_find_package(Boost REQUIRED COMPONENTS date_time)
 #lofar_find_package(Libssh2)
 #lofar_find_package(Valgrind)
 #lofar_find_package(Casacore COMPONENTS measures REQUIRED)
 
 add_subdirectory(src)
-#add_subdirectory(test)
+add_subdirectory(test)
diff --git a/RTCP/InputProc/src/CMakeLists.txt b/RTCP/InputProc/src/CMakeLists.txt
index 250df246cb3375e8a879efb717677e7a63bad08a..dc079a180dc02d0325765317a225eb191749efda 100644
--- a/RTCP/InputProc/src/CMakeLists.txt
+++ b/RTCP/InputProc/src/CMakeLists.txt
@@ -1 +1,12 @@
-lofar_add_test(newInputSection newInputSection.cc Generator.cc StationStreams.cc SharedMemory.cc StationID.cc BufferSettings.cc)
+include(LofarPackageVersion)
+
+lofar_add_library(inputproc
+  Package__Version.cc
+  BufferSettings.cc
+  Generator.cc
+  SharedMemory.cc
+  StationID.cc
+  StationStreams.cc
+  )
+
+lofar_add_bin_program(newInputSection newInputSection.cc)
diff --git a/RTCP/InputProc/src/SharedMemory.h b/RTCP/InputProc/src/SharedMemory.h
index bb42aadc831c88d47e19d8e717371c4f9717c5a3..c5e4a299e174732a40dbeaa00febb7d49e1cdcb7 100644
--- a/RTCP/InputProc/src/SharedMemory.h
+++ b/RTCP/InputProc/src/SharedMemory.h
@@ -12,6 +12,10 @@
 namespace LOFAR {
 namespace RTCP {
 
+/*
+ * A memory region manager for shared memory, to be used by
+ * allocators defined in Interface/Allocator.h
+ */
 class SharedMemoryArena: public FixedArena {
 public:
   EXCEPTION_CLASS(TimeOutException, LOFAR::Exception);
@@ -23,6 +27,10 @@ public:
     READWRITE
   };
 
+  /* Create a shared memory region, or attach to an existing one. The timeout
+   * specifies how long the constructor will wait for the memory region to
+   * appear if mode == READ or mode == READWRITE.
+   */
   SharedMemoryArena( key_t key, size_t size, Mode mode = CREATE, time_t timeout = 60 );
   ~SharedMemoryArena();
 
@@ -36,6 +44,9 @@ private:
   int shmid;
 };
 
+/*
+ * Provides an interface for any struct stored as a shared memory region.
+ */
 template<typename T> class SharedStruct {
 public:
   SharedStruct( key_t key, bool create = false, time_t timeout = 60 );
diff --git a/RTCP/InputProc/src/Station.h b/RTCP/InputProc/src/Station.h
index f968b2235c98bb59fe60a4bf32e36357d7c30457..86accef73c72370ee570e33eea7749d037bf8535 100644
--- a/RTCP/InputProc/src/Station.h
+++ b/RTCP/InputProc/src/Station.h
@@ -129,9 +129,10 @@ template<typename T> void Station<T>::processBoard( size_t nr )
 
 template<typename T> void Station<T>::logStatistics()
 {
-  ASSERT(readers.size() == writers.size());
+  ASSERT(readers.size() == nrBoards);
+  ASSERT(writers.size() == nrBoards);
 
-  for (size_t nr = 0; nr < readers.size(); nr++) {
+  for (size_t nr = 0; nr < nrBoards; nr++) {
     if (readers[nr].get())
       readers[nr]->logStatistics();
 
diff --git a/RTCP/InputProc/src/tRSPTimeStamp.cc b/RTCP/InputProc/test/tRSPTimeStamp2.cc
similarity index 55%
rename from RTCP/InputProc/src/tRSPTimeStamp.cc
rename to RTCP/InputProc/test/tRSPTimeStamp2.cc
index e4085cf3f05a5bd1d1d7e3697b2541a555bdceac..7ea31fe4cf35b3e897cc8045c7c124309214ca24 100644
--- a/RTCP/InputProc/src/tRSPTimeStamp.cc
+++ b/RTCP/InputProc/test/tRSPTimeStamp2.cc
@@ -3,6 +3,9 @@
 #include <Common/LofarLogger.h>
 #include <Interface/RSPTimeStamp.h>
 
+using namespace LOFAR;
+using namespace RTCP;
+
 int main( int, char **argv )
 {
   INIT_LOGGER(argv[0]);
@@ -10,18 +13,16 @@ int main( int, char **argv )
   unsigned clock = 200 * 1000 * 1000;
 
   {
-    TimeStamp ts(0,0,clock);
-
-    for (int64 i = 0; i < clock * 3; ++i) {
-      ++ts;
+    TimeStamp ts(0, 0, clock);
 
+    for (int64 i = 0; i < clock * 3; ++i, ++ts) {
       #define REPORT "(ts == " << ts << ", i == " << i << ")"
 
       ASSERTSTR( (int64)ts == i, REPORT );
 
-      ASSERTSTR( ts.getSeqId() == i / clock, REPORT );
+      ASSERTSTR( ts.getSeqId() == 1024 * i / clock, REPORT );
 
-      ASSERTSTR( ts.getBlockId() == i % clock, REPORT );
+      ASSERTSTR( ts.getBlockId() == 1024 * i % clock / 1024, REPORT );
     }
   }
 }