diff --git a/Makefile b/Makefile
index 394e6d15d5cd263d41230280e92ae7afb8d53949..295725301534719335e7049292dc6c6c804eb2f4 100644
--- a/Makefile
+++ b/Makefile
@@ -7,15 +7,16 @@ CXX ?= g++
 LIBS = -L${BOINC_PREFIX}/lib -Bstatic $(shell sdl-config --static-libs) -lfreetype -lftgl -Wl,-Bdynamic -lGL -lGLU
 CPPFLAGS = -I/usr/include $(shell sdl-config --cflags) $(shell pkg-config --cflags ftgl)
 DEPS = Makefile starsphere.h 
-OBJS = starlist.o snr_list.o user_text.o pulsar_list.o search_info.o starsphere.o
+OBJS = starlist.o snr_list.o user_text.o pulsar_list.o search_info.o starsphere.o ${RESOURCESPEC}.o Resource.o ResourceFactory.o
 DEBUGFLAGSCPP = -DDEBUG -pg -ggdb -O0
+RESOURCESPEC = resources
 
 # primary role based tagets
 default: release
 debug: starsphere
 memcheck: starsphere
 callgrind: starsphere
-release:  clean starsphere
+release: clean starsphere
 
 # target specific options
 debug: CPPFLAGS += $(DEBUGFLAGSCPP)
@@ -45,7 +46,21 @@ pulsar_list.o: $(DEPS) pulsar_list.C
 
 search_info.o: $(DEPS) search_info.C
 	$(CXX) -g ${CPPFLAGS} -c search_info.C
+
+
+# resource compiler
+ResourceFactory.o: ${RESOURCESPEC}.o Resource.o ResourceFactory.cpp ResourceFactory.h
+	$(CXX) -g ${CPPFLAGS} -c ResourceFactory.cpp -o ResourceFactory.o
 	
+Resource.o: Resource.cpp Resource.h
+	$(CXX) -g ${CPPFLAGS} -c Resource.cpp -o Resource.o
+
+${RESOURCESPEC}.o: ${RESOURCESPEC}.orc
+	orc/orc ${RESOURCESPEC}.orc ${RESOURCESPEC}.cpp
+	$(CXX) -g ${CPPFLAGS} -c ${RESOURCESPEC}.cpp -o ${RESOURCESPEC}.o
+
+
+# tools
 memcheck:
 	valgrind --tool=memcheck --track-fds=yes --time-stamp=yes --log-file=${PWD}/memcheck.out.%p --leak-check=full ${PWD}/starsphere
 
@@ -53,5 +68,5 @@ callgrind:
 	valgrind --tool=callgrind --track-fds=yes --time-stamp=yes ${PWD}/starsphere
 
 clean:
-	rm -f ${OBJS} starsphere
+	rm -f ${RESOURCESPEC}.cpp *.o starsphere
 
diff --git a/main.C b/main.C
index dc762fbcf1742ec4d67688b710ac0b43aedf22b9..693cfa796c16232184e38f131c853e87429e8e96 100644
--- a/main.C
+++ b/main.C
@@ -30,7 +30,8 @@
 #include <stdexcept>
 #include <SDL.h>
 
-#include "starsphere.h" 
+#include "starsphere.h"
+#include "ResourceFactory.h" 
 
 // ugly globals, will eventually factored out into private members
 SDL_Surface *m_DisplaySurface = NULL;
@@ -250,15 +251,31 @@ int main(int argc, char **argv) {
 	}
 
 	SDL_WM_SetCaption("Einstein@Home", "Icon");
-	//SDL_WM_SetIcon(SDL_LoadBMP("icon.png"), NULL); 
+	//SDL_WM_SetIcon(SDL_LoadBMP("icon.png"), NULL);
 	
-	char fontFile[] = "arial.ttf";
-//	font = new FTGLBitmapFont(fontFile);
-	font = new FTGLPixmapFont(fontFile);
-//	font = new FTGLOutlineFont(fontFile);
-//	font = new FTGLPolygonFont(fontFile);
-//	font = new FTGLExtrdFont(fontFile);
-//	font = new FTGLTextureFont(fontFile);
+	// prepare resource factory
+	ResourceFactory factory;
+	
+	// create font resource instance
+	const Resource *fontResource = factory.createInstance("FontSansSerif");
+	
+	if(fontResource == NULL) {
+		cerr << "Font resource could not be loaded!" << endl;
+		exit(1);
+	}
+	
+	if(fontResource->Data()->size() == 0) {
+		cerr << "Font resource could not be loaded!" << endl;
+		exit(1);
+	}
+	
+	// create font instance using font resource (base address + size)
+//	font = new FTGLBitmapFont((&fontResource->Data()->at(0)), fontResource->Data()->size());
+	font = new FTGLPixmapFont((&fontResource->Data()->at(0)), fontResource->Data()->size());
+//	font = new FTGLOutlineFont((&fontResource->Data()->at(0)), fontResource->Data()->size());
+//	font = new FTGLPolygonFont((&fontResource->Data()->at(0)), fontResource->Data()->size());
+//	font = new FTGLExtrdFont((&fontResource->Data()->at(0)), fontResource->Data()->size());
+//	font = new FTGLTextureFont((&fontResource->Data()->at(0)), fontResource->Data()->size());
 	
 	font->CharMap(ft_encoding_unicode);
 	
@@ -277,6 +294,7 @@ int main(int argc, char **argv) {
 	eventLoop();
 	
 	if (font) delete font;
+	delete fontResource;
 	
-	return(0);
+	exit(0);
 }
diff --git a/resources.orc b/resources.orc
new file mode 100644
index 0000000000000000000000000000000000000000..49b1a7c7e3756f44a0d9afb4a941885d6c85aefe
--- /dev/null
+++ b/resources.orc
@@ -0,0 +1,3 @@
+# Resource specification of: Einstein@Home graphics application
+
+FontSansSerif|LiberationSans-Regular.ttf
\ No newline at end of file