diff --git a/src/starsphere/EinsteinS5R3Adapter.cpp b/src/starsphere/EinsteinS5R3Adapter.cpp
index 59aed4906cc7ea988360477691ad3796e743e945..ebf74bda9abfa7b1fd22b58ea04595360db83a16 100644
--- a/src/starsphere/EinsteinS5R3Adapter.cpp
+++ b/src/starsphere/EinsteinS5R3Adapter.cpp
@@ -20,10 +20,12 @@
 
 #include "EinsteinS5R3Adapter.h"
 
+const string EinsteinS5R3Adapter::SharedMemoryIdentifier = "EinsteinHS";
+
 EinsteinS5R3Adapter::EinsteinS5R3Adapter(BOINCClientAdapter *boincClient)
 {
 	this->boincClient = boincClient;
-	
+
 	m_WUSkyPosRightAscension = 0.0;
 	m_WUSkyPosDeclination = 0.0;
 	m_WUFractionDone = 0.0;
@@ -44,10 +46,10 @@ void EinsteinS5R3Adapter::parseApplicationInformation()
 {
 	// get updated application information
 	string info = boincClient->applicationInformation();
-	
+
 	// do we have any data?
 	if(info.length() > 0) {
-		
+
 		// parse data into members
 		if(4 != sscanf(info.c_str(),
 			  		"<graphics_info>\n"
@@ -59,7 +61,7 @@ void EinsteinS5R3Adapter::parseApplicationInformation()
 			  		&m_WUSkyPosDeclination,
 			  		&m_WUFractionDone,
 			  		&m_WUCPUTime))
-		{		 
+		{
 			cerr << "Incompatible shared memory data encountered!" << endl;
 		}
 		else {
diff --git a/src/starsphere/EinsteinS5R3Adapter.h b/src/starsphere/EinsteinS5R3Adapter.h
index 841f3052ceb2f8a4793b5723dbd41cf82b296c33..8c54732ebab9a130a92cb6f4c63ed8add9d8f1fb 100644
--- a/src/starsphere/EinsteinS5R3Adapter.h
+++ b/src/starsphere/EinsteinS5R3Adapter.h
@@ -36,10 +36,10 @@ using namespace std;
 
 /**
  * \brief Adapter class which facilitates communications with the \b Einstein\@Home S5R3 application
- * 
+ *
  * This adapter class can be used to query the \b Einstein\@Home S5R3 application
  * for informational data about the current work unit like search details and progress.
- * 
+ *
  * \author Oliver Bock\n
  * Max-Planck-Institute for Gravitational Physics\n
  * Hannover, Germany
@@ -49,78 +49,81 @@ class EinsteinS5R3Adapter
 public:
 	/**
 	 * \brief Constructor
-	 * 
+	 *
 	 * \param boincClient Pointer to the parent BOINC client adapter instance
 	 */
 	EinsteinS5R3Adapter(BOINCClientAdapter* boincClient);
-	
+
 	/// Destructor
 	virtual ~EinsteinS5R3Adapter();
-	
+
 	/**
 	 * \brief Refreshes dynamic data (e.g. search information)
-	 * 
+	 *
 	 * You want to call this method periodically to refresh any volatile application information
-	 * 	
+	 *
 	 * \see AbstractGraphicsEngine::refreshBOINCInformation
 	 */
 	void refresh();
-	
+
     /**
 	 * \brief Retrieves the right ascension of the currently searched sky position
-	 * 
+	 *
 	 * \return The right ascension (in degrees)
 	 */
     double wuSkyPosRightAscension() const;
-    
+
     /**
 	 * \brief Retrieves the declination of the currently searched sky position
-	 * 
+	 *
 	 * \return The right ascension (in degrees)
 	 */
     double wuSkyPosDeclination() const;
-    
+
     /**
      * \brief Retrieves the completion fraction of the currently active work unit
-     * 
+     *
      * \return The completion fraction (range 0-1)
-     */    
+     */
     double wuFractionDone() const;
-    
+
     /**
      * \brief Retrieves the amount of CPU time consumed for the currently active work unit
      * during the active session
-     * 
+     *
      * \return The accumulated CPU time consumed during this work unit session (in seconds)
      */
     double wuCPUTime() const;
-    
+
+    /// The identifier of the Einstein@Home science application's shared memory area
+    static const string SharedMemoryIdentifier;
+
 private:
-	
+
 	/**
 	 * \brief Parses science application specific information into local attributes
-	 * 
+	 *
 	 * The information is usually transferred via a shared memory area
 	 * which is handled by the parent generic BOINC client adapter.
-	 * 
+	 *
 	 * \see boincClient
 	 */
 	void parseApplicationInformation();
-	
+
 	/// Pointer to the (parent) BOINC client adapter
 	BOINCClientAdapter *boincClient;
-	
+
 	/// Right ascension of the currently searched sky position (in degrees)
 	double m_WUSkyPosRightAscension;
-	
+
 	/// Declination of the currently searched sky position (in degrees)
 	double m_WUSkyPosDeclination;
-	
+
 	/// The completion fraction of the active work unit
 	double m_WUFractionDone;
-	
+
 	/// Amount of CPU time consumed for the work unit during the active session
-	double m_WUCPUTime;	
+	double m_WUCPUTime;
 };
 
 /**
diff --git a/src/starsphere/Starsphere.cpp b/src/starsphere/Starsphere.cpp
index e5e3852a15859e9e1d9edb14f1f5e97d9c871812..62a8bcc5ec9c8c200cab0181ed98673c789ef427 100644
--- a/src/starsphere/Starsphere.cpp
+++ b/src/starsphere/Starsphere.cpp
@@ -30,7 +30,7 @@ Starsphere::Starsphere() : AbstractGraphicsEngine()
 	m_FontLogo2 = 0;
 	m_FontHeader = 0;
 	m_FontText = 0;
-	
+
 	Axes=0, Stars=0, Constellations=0, Pulsars=0;
 	LLOmarker=0, LHOmarker=0, GEOmarker=0, VIRGOmarker=0;
 	sphGrid=0, SNRs=0, SearchMarker=0;
@@ -55,7 +55,7 @@ Starsphere::Starsphere() : AbstractGraphicsEngine()
 
 	rotation_offset = 0.0;
 	rotation_speed = 180.0;
-	
+
 	m_CurrentRightAscension = -1.0;
 	m_CurrentDeclination = -1.0;
 	m_RefreshSearchMarker = true;
@@ -92,7 +92,7 @@ void Starsphere::sphVertex(GLfloat RAdeg, GLfloat DEdeg)
 
 /**
  * Star Marker:
- * Makes a marker for one star at a given position and angular size.  
+ * Makes a marker for one star at a given position and angular size.
  */
 void Starsphere::star_marker(float RAdeg, float DEdeg, float size)
 {
@@ -117,9 +117,9 @@ void Starsphere::make_stars()
 	if(Stars) glDeleteLists(Stars, 1);
 	Stars = glGenLists(1);
 	glNewList(Stars, GL_COMPILE);
-	
+
 		glColor3f(1.0, 1.0, 1.0);
-	
+
 		/**
 		 * At some point in the future star_info[][] will also contain
 		 * star magnitude and the marker size will vary with this.
@@ -141,7 +141,7 @@ void Starsphere::make_stars()
 				star_marker(star_info[i][0], star_info[i][1], mag_size);
 			}
 		}
-		
+
 	glEndList();
 }
 
@@ -157,13 +157,13 @@ void Starsphere::make_pulsars()
 	if(Pulsars) glDeleteLists(Pulsars, 1);
 	Pulsars = glGenLists(1);
 	glNewList(Pulsars, GL_COMPILE);
-	
+
 		glColor3f(0.80, 0.0, 0.85); // _P_ulsars are _P_urple
-	
+
 		for (i=0; i < Npulsars; i++) {
 			star_marker(pulsar_info[i][0], pulsar_info[i][1], mag_size);
 		}
-		
+
 	glEndList();
 }
 
@@ -179,13 +179,13 @@ void Starsphere::make_snrs()
 	if(SNRs) glDeleteLists(SNRs, 1);
 	SNRs = glGenLists(1);
 	glNewList(SNRs, GL_COMPILE);
-	
+
 		glColor3f(0.7, 0.176, 0.0); // _S_NRs are _S_ienna
-	
+
 		for (i=0; i < NSNRs; i++) {
 			star_marker(SNR_info[i][0], SNR_info[i][1], mag_size);
 		}
-		
+
 	glEndList();
 }
 
@@ -201,10 +201,10 @@ void Starsphere::make_constellations()
 	if(Constellations) glDeleteLists(Constellations, 1);
 	Constellations = glGenLists(1);
 	glNewList(Constellations, GL_COMPILE);
-	
+
 		glLineWidth(1.0);
 		glColor3f(0.7, 0.7, 0.0); // light yellow
-	
+
 		glBegin(GL_LINES); // draws lines between *pairs* of vertices
 			for (star_num=0; star_num < Nstars; ++star_num) {
 				sphVertex(star_info[star_num][0], star_info[star_num][1]);
@@ -212,7 +212,7 @@ void Starsphere::make_constellations()
 				sphVertex(star_info[star_num][0], star_info[star_num][1]);
 			}
 		glEnd();
-		
+
 	glEndList();
 }
 
@@ -270,7 +270,7 @@ void Starsphere::make_obs()
 	m_ObservatoryDrawTimeLocal = dtime();
 	time_t local = m_ObservatoryDrawTimeLocal;
 	tm *utc = gmtime(&local);
-	double utcOffset = difftime(local, mktime(utc));	
+	double utcOffset = difftime(local, mktime(utc));
 	double observatoryDrawTimeGMT = m_ObservatoryDrawTimeLocal - utcOffset;
 
 	radius = 1.0*sphRadius; // radius of sphere on which they are drawn
@@ -291,10 +291,10 @@ void Starsphere::make_obs()
 	if(LLOmarker) glDeleteLists(LLOmarker, 1);
 	LLOmarker = glGenLists(1);
 	glNewList(LLOmarker, GL_COMPILE);
-	
+
 		glColor3f(0.0, 1.0, 0.0);
 		glLineWidth(lineSize);
-		
+
 		glBegin(GL_LINE_STRIP);
 			//  North/South arm:
 			sphVertex3D(RAdeg, DEdeg-arm_len_deg, radius);
@@ -302,13 +302,13 @@ void Starsphere::make_obs()
 			// East/West arm:
 			sphVertex3D(RAdeg-arm_len_deg, DEdeg, radius);
 		glEnd();
-		
+
 		// arm joint H2
 		glPointSize((GLfloat) lineSize);
 		glBegin(GL_POINTS);
 			sphVertex3D(RAdeg, DEdeg, radius);
 		glEnd();
-		
+
 	glEndList();
 
 	/**
@@ -325,10 +325,10 @@ void Starsphere::make_obs()
 	if(LHOmarker) glDeleteLists(LHOmarker, 1);
 	LHOmarker = glGenLists(1);
 	glNewList(LHOmarker, GL_COMPILE);
-	
+
 		glColor3f(0.0, 0.0, 1.0);
 		glLineWidth(lineSize);
-		
+
 		glBegin(GL_LINE_STRIP);
 			// North/South arm:
 			sphVertex3D(RAdeg, DEdeg+arm_len_deg, radius);
@@ -336,7 +336,7 @@ void Starsphere::make_obs()
 			// East/West arm:
 			sphVertex3D(RAdeg-arm_len_deg, DEdeg, radius);
 		glEnd();
-		
+
 		glBegin(GL_LINE_STRIP);
 			// North/South arm, H2:
 			sphVertex3D(RAdeg-h2, DEdeg+arm_len_deg/2.0+h2/2.0, radius);
@@ -344,19 +344,19 @@ void Starsphere::make_obs()
 			// East/West arm, H2;
 			sphVertex3D(RAdeg-arm_len_deg/2.0-h2, DEdeg+h2/2.0, radius);
 		glEnd();
-		
+
 		// arm joint H1
 		glPointSize((GLfloat) lineSize);
 		glBegin(GL_POINTS);
 			sphVertex3D(RAdeg, DEdeg, radius);
 		glEnd();
-		
+
 		// arm joint H2
 		glPointSize((GLfloat) lineSize);
 		glBegin(GL_POINTS);
 			sphVertex3D(RAdeg-h2, DEdeg+h2/2.0, radius);
 		glEnd();
-		
+
 	glEndList();
 
 	/**
@@ -374,10 +374,10 @@ void Starsphere::make_obs()
 	if(GEOmarker) glDeleteLists(GEOmarker, 1);
 	GEOmarker = glGenLists(1);
 	glNewList(GEOmarker, GL_COMPILE);
-	
+
 		glColor3f(1.0, 0.0, 0.0);
 		glLineWidth(lineSize);
-		
+
 		glBegin(GL_LINE_STRIP);
 			// North/South arm:
 			sphVertex3D(RAdeg, DEdeg+arm_len_deg, radius);
@@ -385,15 +385,15 @@ void Starsphere::make_obs()
 			// West/East arm:
 			sphVertex3D(RAdeg+arm_len_deg, DEdeg, radius);
 		glEnd();
-		
+
 		// arm joint
 		glPointSize((GLfloat) lineSize);
 		glBegin(GL_POINTS);
 			sphVertex3D(RAdeg, DEdeg, radius);
 		glEnd();
-		
+
 	glEndList();
-	
+
 	/**
 	 *  VIRGO Interferometer:
 	 */
@@ -409,10 +409,10 @@ void Starsphere::make_obs()
 	if(VIRGOmarker) glDeleteLists(VIRGOmarker, 1);
 	VIRGOmarker = glGenLists(1);
 	glNewList(VIRGOmarker, GL_COMPILE);
-	
+
 		glColor3f(1.0, 1.0, 1.0);
 		glLineWidth(lineSize);
-		
+
 		glBegin(GL_LINE_STRIP);
 			// North/South arm:
 			sphVertex3D(RAdeg, DEdeg+arm_len_deg, radius);
@@ -420,13 +420,13 @@ void Starsphere::make_obs()
 			// West/East arm:
 			sphVertex3D(RAdeg-arm_len_deg, DEdeg, radius);
 		glEnd();
-		
+
 		// arm joint
 		glPointSize((GLfloat) lineSize);
 		glBegin(GL_POINTS);
 			sphVertex3D(RAdeg, DEdeg, radius);
 		glEnd();
-	
+
 	glEndList();
 
 	return;
@@ -441,7 +441,7 @@ void Starsphere::make_search_marker(GLfloat RAdeg, GLfloat DEdeg, GLfloat size)
 
 	// r1 is inner circle, r2 is outer circle, r3 is crosshairs
 	r1 = size, r2=3*size, r3=4*size;
-	
+
 	// delete existing, create new (required for windoze)
 	if(SearchMarker) glDeleteLists(SearchMarker, 1);
 	SearchMarker = glGenLists(1);
@@ -449,15 +449,15 @@ void Starsphere::make_search_marker(GLfloat RAdeg, GLfloat DEdeg, GLfloat size)
 
 		// start gunsight drawing
 		glPushMatrix();
-		
+
 		glLineWidth(3.0);
 		glColor3f(1.0, 0.5, 0.0); // Orange
-		
+
 		// First rotate east  to the RA position around y
 		glRotatef(RAdeg, 0.0, 1.0, 0.0);
 		// Then rotate up to DEC position around z (not x)
 		glRotatef(DEdeg, 0.0, 0.0, 1.0);
-	
+
 		// Inner circle
 		glBegin(GL_LINE_LOOP);
 			for (i=0; i<Nstep; i++) {
@@ -467,7 +467,7 @@ void Starsphere::make_search_marker(GLfloat RAdeg, GLfloat DEdeg, GLfloat size)
 				sphVertex(x, y);
 			}
 		glEnd();
-	
+
 		// Outer circle
 		glBegin(GL_LINE_LOOP);
 			for (i=0; i<Nstep; i++) {
@@ -477,7 +477,7 @@ void Starsphere::make_search_marker(GLfloat RAdeg, GLfloat DEdeg, GLfloat size)
 				sphVertex(x, y);
 			}
 		glEnd();
-	
+
 		// Arms that form the gunsight
 		glBegin(GL_LINES);
 			//  North arm:
@@ -493,9 +493,9 @@ void Starsphere::make_search_marker(GLfloat RAdeg, GLfloat DEdeg, GLfloat size)
 			sphVertex(+r1, 0.0);
 			sphVertex(+r3, 0.0);
 		glEnd();
-		
+
 		glPopMatrix();
-		
+
 		// searchlight line out to marker (OFF!)
 		if(false) {
 			glBegin(GL_LINES);
@@ -522,20 +522,20 @@ void Starsphere::make_axes()
 
 		glBegin(GL_LINES);
 			glLineWidth(2.0);
-			
+
 			glColor3f(1.0, 0.0, 0.0);
 			glVertex3f(-axl, 0.0, 0.0);
 			glVertex3f(axl, 0.0, 0.0);
-		
+
 			glColor3f(0.0, 1.0, 0.0);
 			glVertex3f(0.0, -axl, 0.0);
 			glVertex3f(0.0, axl, 0.0);
-		
+
 			glColor3f(0.0, 0.0, 1.0);
 			glVertex3f(0.0, 0.0, -axl);
 			glVertex3f(0.0, 0.0, axl);
 		glEnd();
-	
+
 	glEndList();
 }
 
@@ -553,15 +553,15 @@ void Starsphere::make_globe()
 	glNewList(sphGrid, GL_COMPILE);
 
 		glLineWidth(1.0);
-		
+
 		// Lines of constant Right Ascencion (East Longitude)
 		for (hr=0; hr<24; hr++) {
 			RAdeg=hr*15.0;
 			glColor3f(0.25, 0.25, 0.25);
-			
+
 			// mark median
 			if(hr==0) glColor3f(0.55, 0.55, 0.55);
-			
+
 			glBegin(GL_LINE_STRIP);
 				for (i=0; i<=iMax; i++) {
 					DEdeg = i*180.0/iMax - 90.0;
@@ -569,11 +569,11 @@ void Starsphere::make_globe()
 				}
 			glEnd();
 		}
-	
-		// Lines of constant Declination (Lattitude)	
+
+		// Lines of constant Declination (Lattitude)
 		for (j=1; j<=12; j++) {
 			DEdeg = 90.0 - j*15.0;
-			
+
 			glBegin(GL_LINE_STRIP);
 				for (i=0; i<=iMax; i++) {
 					RAdeg = i*360.0/iMax;
@@ -581,7 +581,7 @@ void Starsphere::make_globe()
 				}
 			glEnd();
 		}
-		
+
 	glEndList();
 }
 
@@ -594,13 +594,13 @@ void Starsphere::resize(const int width, const int height)
 	m_CurrentWidth = width;
 	m_CurrentHeight = height;
 	aspect = (float)width / (float)height;
-	
+
 	// adjust HUD config
 	m_YStartPosTop = height - 25;
 
 	// make sure the search marker is updated (conditional rendering!)
 	m_RefreshSearchMarker = true;
-	
+
 	// adjust aspect ratio and projection
 	glViewport(0, 0, (GLsizei) width, (GLsizei) height);
 	glMatrixMode(GL_PROJECTION);
@@ -616,17 +616,17 @@ void Starsphere::initialize(const int width, const int height, const Resource *f
 {
 	// check whether we initialize the first time or have to recycle (required for windoze)
 	if(!recycle) {
-		
+
 		// store the font resource
 		if(font) m_FontResource = font;
-		
+
 		// initialize the BOINC client adapter
-		m_BoincAdapter.initialize("EinsteinHS");
-		
+		m_BoincAdapter.initialize(EinsteinS5R3Adapter::SharedMemoryIdentifier);
+
 		// inital HUD offset setup
 		m_XStartPosLeft = 5;
 		m_YOffsetLarge = 18;
-		
+
 		setFeature(STARS, true);
 		setFeature(CONSTELLATIONS, true);
 		setFeature(PULSARS, true);
@@ -638,7 +638,7 @@ void Starsphere::initialize(const int width, const int height, const Resource *f
 		setFeature(MARKER, true);
 	}
 	else {
-		
+
 		// seems that windoze also "resets" our OpenGL fonts
 		// let's clean up before reinitializing them
 		if(m_FontLogo1) delete m_FontLogo1;
@@ -649,65 +649,65 @@ void Starsphere::initialize(const int width, const int height, const Resource *f
 
 	// we might be called to recycle even before initialization
 	if(!m_FontResource) {
-		
+
 		// display a warning, this could be unintentionally
 		cerr << "Warning: font resource still unknown! You might want to recycle at a later stage..." << endl;
 	}
 	else {
-		
+
 		// create large font instances using font resource (base address + size)
 		m_FontLogo1 = new OGLFT::TranslucentTexture(
 									&m_FontResource->data()->at(0),
 									m_FontResource->data()->size(),
 									24, 72 );
-		
+
 		if ( m_FontLogo1 == 0 || !m_FontLogo1->isValid() ) {
 		     cerr << "Could not construct logo1 font face from in memory resource!" << endl;
 		     return;
 		}
-		
+
 		m_FontLogo1->setForegroundColor(1.0, 1.0, 0.0, 1.0);
-		
+
 		// create medium font instances using font resource (base address + size)
 		m_FontLogo2 = new OGLFT::TranslucentTexture(
 									&m_FontResource->data()->at(0),
 									m_FontResource->data()->size(),
 									13, 78 );
-		
+
 		if ( m_FontLogo2 == 0 || !m_FontLogo2->isValid() ) {
 		     cerr << "Could not construct logo2 font face from in memory resource!" << endl;
 		     return;
 		}
-		
+
 		m_FontLogo2->setForegroundColor(0.75, 0.75, 0.75, 1.0);
-		
+
 		// create medium font instances using font resource (base address + size)
 		m_FontHeader = new OGLFT::TranslucentTexture(
 									&m_FontResource->data()->at(0),
 									m_FontResource->data()->size(),
 									13, 78 );
-		
+
 		if ( m_FontHeader == 0 || !m_FontHeader->isValid() ) {
 		     cerr << "Could not construct header font face from in memory resource!" << endl;
 		     return;
 		}
-		
+
 		m_FontHeader->setForegroundColor(1.0, 1.0, 0.0, 1.0);
-			
+
 		// create small font instances using font resource (base address + size)
 		m_FontText = new OGLFT::TranslucentTexture(
 									&m_FontResource->data()->at(0),
 									m_FontResource->data()->size(),
 									11, 72 );
-		
+
 		if ( m_FontText == 0 || !m_FontText->isValid() ) {
 		     cerr << "Could not construct text font face from in memory resource!" << endl;
 		     return;
 		}
-		
+
 		m_FontText->setForegroundColor(0.75, 0.75, 0.75, 1.0);
 	}
-	
+
 	// setup initial dimensions
 	resize(width, height);
 
@@ -716,13 +716,13 @@ void Starsphere::initialize(const int width, const int height, const Resource *f
 #if defined( GL_RASTER_POSITION_UNCLIPPED_IBM )
 	glEnable( GL_RASTER_POSITION_UNCLIPPED_IBM );
 #endif
-	
+
 	// drawing setup:
 	glClearColor(0.0, 0.0, 0.0, 0.0); // background is black
 	glEnable(GL_CULL_FACE);
 	glFrontFace(GL_CCW);
 	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
-	
+
 	// enable opt-in quality feature
 	if(m_BoincAdapter.graphicsQualitySetting() == BOINCClientAdapter::HighGraphicsQualitySetting) {
 		// some polishing
@@ -732,7 +732,7 @@ void Starsphere::initialize(const int width, const int height, const Resource *f
 		glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
 		glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
 	}
-	
+
 	// FSAA will be enabled explicitly when needed!
 	glDisable(GL_MULTISAMPLE_ARB);
 
@@ -771,7 +771,7 @@ void Starsphere::initialize(const int width, const int height, const Resource *f
 }
 
 /**
- * Rendering routine:  this is what does the drawing:   
+ * Rendering routine:  this is what does the drawing:
  */
 void Starsphere::render(const double timeOfDay)
 {
@@ -779,7 +779,7 @@ void Starsphere::render(const double timeOfDay)
 	GLfloat Zrot = 0.0, Zobs=0.0;
 	double revs, t, dt = 0;
 	static double start_time=-1.0, last_time=-1.0;
-	
+
 	// Calculate the real time t since we started (or reset) and the
 	// time dt since the last render() call.    Both may be useful
 	// for timing animations.  Note that time_of_day is dtime().
@@ -808,9 +808,9 @@ void Starsphere::render(const double timeOfDay)
 	// now draw the scene...
 	glLoadIdentity();
 
-	// Vary the viewpoint with both a long period wobble of the elevation 
+	// Vary the viewpoint with both a long period wobble of the elevation
 	// of the view and a longer period zoom in/out that might even penetrate
-	// The starsphere for a brief time.   Increase the power in pow(,) to 
+	// The starsphere for a brief time.   Increase the power in pow(,) to
 	// make the visit inside briefer.
 	vp_theta = 90.0 - viewpt_elev + wobble_amp*sin(PI2*t/(wobble_period*60.0));
 	vp_phi = viewpt_azimuth;
@@ -851,7 +851,7 @@ void Starsphere::render(const double timeOfDay)
 		glCallList(VIRGOmarker);
 		glPopMatrix();
 	}
-	
+
 	// draw the search marker (gunsight)
 	if (isFeature(MARKER)) {
 		if(m_RefreshSearchMarker) {
@@ -867,13 +867,13 @@ void Starsphere::render(const double timeOfDay)
 
 	// draw 2D vectorized HUD
 	if(isFeature(LOGO) || isFeature(SEARCHINFO)) {
-	
+
 		// disable depth testing since we're in 2D mode
 		glDisable(GL_DEPTH_TEST);
-		
+
 		// enable textured fonts
 		glEnable(GL_TEXTURE_2D);
-		
+
 		// save current state
 		glMatrixMode(GL_PROJECTION);
 		glPushMatrix();
@@ -882,23 +882,23 @@ void Starsphere::render(const double timeOfDay)
 		glMatrixMode(GL_MODELVIEW);
 		glPushMatrix();
 		glLoadIdentity();
-	
+
 		if (isFeature(LOGO)) {
 			m_FontLogo1->draw(m_XStartPosLeft, m_YStartPosTop, "Einstein@Home");
 			m_FontLogo2->draw(m_XStartPosLeft, m_YStartPosTop - m_YOffsetLarge, "World Year of Physics 2005");
 		}
-		
+
 		if (isFeature(SEARCHINFO)) renderSearchInformation();
-		
+
 		// restore original state
 		glMatrixMode(GL_PROJECTION);
 		glPopMatrix();
 		glMatrixMode(GL_MODELVIEW);
 		glPopMatrix();
-		
+
 		// disable font textures
 		glDisable(GL_TEXTURE_2D);
-		
+
 		// enable depth testing since we're leaving 2D mode
 		glEnable(GL_DEPTH_TEST);
 	}
@@ -910,7 +910,7 @@ void Starsphere::render(const double timeOfDay)
 void Starsphere::mouseButtonEvent(const int positionX, const int positionY,
 								  const AbstractGraphicsEngine::MouseButton buttonPressed)
 {
-	
+
 }
 
 void Starsphere::mouseMoveEvent(const int deltaX, const int deltaY,
@@ -966,7 +966,7 @@ void Starsphere::keyboardPressEvent(const AbstractGraphicsEngine::KeyBoardKey ke
 			break;
 		default:
 			break;
-	}	
+	}
 }
 
 /**
@@ -1013,22 +1013,22 @@ void Starsphere::refreshLocalBOINCInformation()
 {
 	// call base class implementation
 	AbstractGraphicsEngine::refreshLocalBOINCInformation();
-	
+
 	// prepare conversion buffer
 	stringstream buffer;
 	buffer.precision(2);
 	buffer.setf(ios::fixed, ios::floatfield);
 	buffer.fill('0');
 	buffer.setf(ios::right, ios::adjustfield);
-	
+
 	// store content required for our HUD (user info)
 	m_UserName = "User: " + m_BoincAdapter.userName();
 	m_TeamName = "Team: " + m_BoincAdapter.teamName();
-	
+
 	buffer << "Project Credit: " << fixed << m_BoincAdapter.userCredit() << ends;
 	m_UserCredit = buffer.str();
 	buffer.str("");
-	
+
 	buffer << "Project RAC: " << fixed << m_BoincAdapter.userRACredit() << ends;
 	m_UserRACredit = buffer.str();
 	buffer.str("");
diff --git a/src/starsphere/Starsphere.h b/src/starsphere/Starsphere.h
index c1551562c39aa717efa0e4bee671a58b47c5218a..7822da5eb19f6eca049efd794886dd6b39524cb2 100644
--- a/src/starsphere/Starsphere.h
+++ b/src/starsphere/Starsphere.h
@@ -40,6 +40,7 @@
 #include <util.h>
 
 #include "AbstractGraphicsEngine.h"
+#include "EinsteinS5R3Adapter.h"
 
 /* SIN and COS take arguments in DEGREES */
 #define PI 3.14159265
@@ -64,22 +65,22 @@ using namespace std;
 
 /**
  * \brief %Starsphere rendering engine for \b Einstein\@Home
- * 
+ *
  * This class comprises the generic parts of the %Starsphere rendering engine.
  * %Starsphere displays the celestial sphere indicating a fixed set of stars with
  * their constellations as well as known pulsars and supernova remnants. Apart from
  * that the four main gravitational wave observatory locations are shown at their actual
  * real-time position. Furthermore a head-up display (HUD) shows relevant BOINC
  * statistics as well as information on the current workunit (WU) being processed.
- * 
+ *
  * For more details please refer to http://einstein.phys.uwm.edu/starsphere.php
- * 
+ *
  * Note: all science run specific parts are implemented in specialized subclasses
  * of this engine.
- * 
+ *
  * \todo The code of this implementaion is based on the former version of %Starsphere
  * and there's still some refactoring, code cleanup and documenting left to be done.
- * 
+ *
  * \author Oliver Bock\n
  * Max-Planck-Institute for Gravitational Physics\n
  * Hannover, Germany
@@ -92,17 +93,17 @@ public:
 
 	/**
 	 * \brief This method is called to initialize the engine
-	 * 
+	 *
 	 * \param width The current width of the display surface
 	 * \param height The current height of the display surface
 	 * \param font A pointer to a Resource object containing TTF font faces for text rendering
 	 * \param recycle This flag indicates whether we initialize (FALSE) or reinitialize (TRUE) the context
 	 */
 	virtual void initialize(const int width, const int height, const Resource *font, const bool recycle = false);
-	
+
 	/**
 	 * \brief This method is called when the windowing system encounters a window resize event
-	 * 
+	 *
 	 * \param width The new width of the display surface
 	 * \param height The new height of the display surface
 	 */
@@ -115,65 +116,65 @@ public:
 	void mouseMoveEvent(const int deltaX, const int deltaY,
 						const AbstractGraphicsEngine::MouseButton buttonPressed);
 	void keyboardPressEvent(const AbstractGraphicsEngine::KeyBoardKey keyPressed);
-	
+
 protected:
 	/**
 	 * \brief Default contructor
-	 * 
+	 *
 	 * The constructor is protected since this an abstract class.
-	 */	
+	 */
 	Starsphere();
-	
+
 	/**
 	 * \brief Render science run specific search information
-	 * 
+	 *
 	 * This abtract method is to be defined by derived classes implementing
 	 * the science run specific search information handling and rendering.
-	 * 
+	 *
 	 * Note: for this engine this also includes the "BOINC Statistics"
 	 * as it is top-aligned to the "Search Information".
 	 */
 	virtual void renderSearchInformation() = 0;
-	
+
 	/**
 	 * \brief This method has to be called in order to update the BOINC client information
-	 * 
+	 *
 	 * This is the local/generic implementation which calls
 	 * AbstractGraphicsEngine::refreshLocalBOINCInformation() first and
 	 * refreshes the "BOINC Statistics" afterwards.
-	 * 
+	 *
 	 * \see AbstractGraphicsEngine::refreshLocalBOINCInformation()
 	 */
 	virtual void refreshLocalBOINCInformation();
-	
+
 	// resource handling
 	const Resource *m_FontResource;
 	OGLFT::TranslucentTexture *m_FontLogo1;
 	OGLFT::TranslucentTexture *m_FontLogo2;
 	OGLFT::TranslucentTexture *m_FontHeader;
 	OGLFT::TranslucentTexture *m_FontText;
-	
+
 	// Graphics state info:
 	int m_CurrentWidth;
 	int m_CurrentHeight;
 	float aspect;
-	
+
 	// HUD text rendering config (maybe overridden in subclasses)
 	GLfloat m_XStartPosLeft;
 	GLfloat m_YStartPosTop;
 	GLfloat m_YOffsetLarge;
-	
+
 	// local HUD contents
 	string m_UserName;
 	string m_TeamName;
 	string m_UserCredit;
 	string m_UserRACredit;
-	
+
 	// search marker info
 	double m_CurrentRightAscension;
 	double m_CurrentDeclination;
 	bool m_RefreshSearchMarker;
-	
+
 private:
 	void make_stars();
 	void make_pulsars();
@@ -219,11 +220,11 @@ private:
 	GLfloat rotation_speed; // degrees per minute
 
 	//------------ new clean members -----
-	
+
 	// view control
 	void rotateSphere(const int relativeRotation, const int relativeElevation);
 	void zoomSphere(const int relativeZoom);
-	
+
 	// feature control
 	enum Features {
 		STARS = 1,
@@ -237,8 +238,8 @@ private:
 		SEARCHINFO = 256,
 		LOGO = 512,
 		MARKER = 1024
-	};	
-	
+	};
+
 	void setFeature(const Features features, const bool enable);
 	bool isFeature(const Features features);