diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt
index eada9037277bafe296ee15c5b63a78abbc9f8bc3..978ece174dff98284913c1d162a075b38422948d 100644
--- a/swig/CMakeLists.txt
+++ b/swig/CMakeLists.txt
@@ -38,129 +38,18 @@ SET(CMAKE_SWIG_FLAGS "")
 SET(SWIG_SRC_DIR ${SWIG_DIR}/libcorpus)
 
 # -----------------------------------------------------------------------------
-# libpwrnlperror
-SET_SOURCE_FILES_PROPERTIES(libpwrnlperror.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libpwrnlperror.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libpwrnlperror python libpwrnlperror.i )
-SWIG_LINK_LIBRARIES(libpwrnlperror ${PYTHON_LIBRARIES} ${PWRUTILS_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpus2exception
-SET_SOURCE_FILES_PROPERTIES(libcorpus2exception.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpus2exception.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpus2exception python libcorpus2exception.i )
-SWIG_LINK_LIBRARIES(libcorpus2exception ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpustag
-SET_SOURCE_FILES_PROPERTIES(libcorpustag.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpustag.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpustag python libcorpustag.i )
-SWIG_LINK_LIBRARIES(libcorpustag ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpustagset
-SET_SOURCE_FILES_PROPERTIES(libcorpustagset.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpustagset.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpustagset python libcorpustagset.i )
-SWIG_LINK_LIBRARIES(libcorpustagset ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpustagsetmanager
-SET_SOURCE_FILES_PROPERTIES(libcorpustagsetmanager.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpustagsetmanager.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpustagsetmanager python libcorpustagsetmanager.i )
-SWIG_LINK_LIBRARIES(libcorpustagsetmanager ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpuslexeme
-SET_SOURCE_FILES_PROPERTIES(libcorpuslexeme.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpuslexeme.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpuslexeme python libcorpuslexeme.i )
-SWIG_LINK_LIBRARIES(libcorpuslexeme ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpussentence
-SET_SOURCE_FILES_PROPERTIES(libcorpussentence.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpussentence.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpussentence python libcorpussentence.i )
-SWIG_LINK_LIBRARIES(libcorpussentence ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpuschunk
-SET_SOURCE_FILES_PROPERTIES(libcorpuschunk.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpuschunk.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpuschunk python libcorpuschunk.i )
-SWIG_LINK_LIBRARIES(libcorpuschunk ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpustoken
-SET_SOURCE_FILES_PROPERTIES(libcorpustoken.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpustoken.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpustoken python libcorpustoken.i )
-SWIG_LINK_LIBRARIES(libcorpustoken ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpustokenwriter
-SET_SOURCE_FILES_PROPERTIES(libcorpustokenwriter.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpustokenwriter.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpustokenwriter python libcorpustokenwriter.i )
-SWIG_LINK_LIBRARIES(libcorpustokenwriter ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpustokenwriter
-SET_SOURCE_FILES_PROPERTIES(libcorpustokenreader.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpustokenreader.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpustokenreader python libcorpustokenreader.i )
-SWIG_LINK_LIBRARIES(libcorpustokenreader ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpusiob
-SET_SOURCE_FILES_PROPERTIES(libcorpusiob.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpusiob.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpusiob python libcorpusiob.i )
-SWIG_LINK_LIBRARIES(libcorpusiob ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpusannotationchannel
-SET_SOURCE_FILES_PROPERTIES(libcorpusannotationchannel.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpusannotationchannel.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpusannotationchannel python libcorpusannotationchannel.i )
-SWIG_LINK_LIBRARIES(libcorpusannotationchannel ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpusannotationchannel
-SET_SOURCE_FILES_PROPERTIES(libcorpusannotatedsentence.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpusannotatedsentence.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpusannotatedsentence python libcorpusannotatedsentence.i )
-SWIG_LINK_LIBRARIES(libcorpusannotatedsentence ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
-
-# -----------------------------------------------------------------------------
-# libcorpusannotationchannel
-SET_SOURCE_FILES_PROPERTIES(libcorpusannotationview.i PROPERTIES CPLUSPLUS ON)
-SET_SOURCE_FILES_PROPERTIES(libcorpusannotationview.i PROPERTIES SWIG_FLAGS "-includeall" )
-SWIG_ADD_MODULE(libcorpusannotationview python libcorpusannotationview.i )
-SWIG_LINK_LIBRARIES(libcorpusannotationview ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
+# corous2
+SET_SOURCE_FILES_PROPERTIES(corpus2.i PROPERTIES CPLUSPLUS ON)
+SET_SOURCE_FILES_PROPERTIES(corpus2.i PROPERTIES SWIG_FLAGS "-includeall" )
+SWIG_ADD_MODULE(corpus2 python corpus2.i )
+SWIG_LINK_LIBRARIES(corpus2 ${PYTHON_LIBRARIES} ${PWRUTILS_LIBS})
+SWIG_LINK_LIBRARIES(corpus2 ${PYTHON_LIBRARIES} ${CORPUS2_PWR_LIBS})
 
 # -----------------------------------------------------------------------------
 # -----------------------------------------------------------------------------
 
 set_target_properties(
-	_libpwrnlperror
-	_libcorpus2exception
-	_libcorpustag
-	_libcorpustagset
-	_libcorpustagsetmanager
-	_libcorpuslexeme
-	_libcorpustoken
-	_libcorpussentence
-	_libcorpuschunk
-	_libcorpustokenwriter
-	_libcorpustokenreader
-	_libcorpusiob
-	_libcorpusannotationchannel
-	_libcorpusannotatedsentence
-	_libcorpusannotationview
+	_corpus2
 	PROPERTIES
 	INSTALL_NAME_DIR "${PYTHON_INSTDIR}"
 )
@@ -180,34 +69,14 @@ set(PERM_SCRIPTS
 # -----------------------------------------------------------------------------
 
 install(
-	TARGETS _libpwrnlperror _libcorpus2exception _libcorpustag _libcorpustagset
-		_libcorpustagsetmanager _libcorpuslexeme _libcorpustoken
-		_libcorpussentence _libcorpuschunk _libcorpustokenwriter 
-		_libcorpustokenreader _libcorpusiob _libcorpusannotationchannel 
-		_libcorpusannotatedsentence _libcorpusannotationview
-
+	TARGETS _corpus2 
 	LIBRARY
 	DESTINATION ${PYTHON_INSTDIR}
 	PERMISSIONS ${PERM_SCRIPTS}
 )
 
 install(
-	FILES ${CMAKE_CURRENT_BINARY_DIR}/libpwrnlperror.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpus2exception.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpus2exception.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpustag.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpustagset.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpustagsetmanager.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpuslexeme.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpustoken.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpussentence.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpuschunk.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpustokenwriter.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpustokenreader.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpusiob.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpusannotationchannel.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpusannotatedsentence.py
-	${CMAKE_CURRENT_BINARY_DIR}/libcorpusannotationview.py
+	FILES ${CMAKE_CURRENT_BINARY_DIR}/corpus2.py
 	DESTINATION ${PYTHON_INSTDIR}
 	PERMISSIONS ${PERM_SCRIPTS}
 )
@@ -233,6 +102,7 @@ install(
 	libcorpusannotationchannel.i
 	libcorpusannotatedsentence.i
 	libcorpusannotationview.i
+	corpus2.i
 	DESTINATION ${SWIG_SRC_DIR}
 	PERMISSIONS ${PERM_SCRIPTS}
 )
diff --git a/swig/Makefile b/swig/Makefile
index 67b73c8f001a7b9821c482730eca87a81cfe5726..9d34763f60a97d79b7445df5e8a06a6ba461b16f 100644
--- a/swig/Makefile
+++ b/swig/Makefile
@@ -27,7 +27,8 @@ CBIN=libpwrnlperror.o \
 		 libcorpusiob.o \
 		 libcorpusannotationchannel.o \
 		 libcorpusannotatedsentence.o \
-		 libcorpusannotationview.o
+		 libcorpusannotationview.o \
+		 corpus2.o
 
 CBINOUT=_libpwrnlperror.so \
 				_libcorpus2exception.so \
@@ -44,7 +45,8 @@ CBINOUT=_libpwrnlperror.so \
 				_libcorpusiob.so \
 				_libcorpusannotationchannel.so \
 				_libcorpusannotatedsentence.so \
-				_libcorpusannotationview.so
+				_libcorpusannotationview.so \
+				_corpus2.so
 
 CWRAP=libpwrnlperror_wrap.cxx \
 			libcorpus2exception_wrap.cxx \
@@ -61,7 +63,8 @@ CWRAP=libpwrnlperror_wrap.cxx \
 			libcorpusiob_wrap.cxx \
 			libcorpusannotationchannel_wrap.cxx \
 			libcorpusannotatedsentence_wrap.cxx \
-			libcorpusannotationview_wrap.cxx
+			libcorpusannotationview_wrap.cxx \
+			corpus2_wrap.cxx
 
 CWRAPBIN=libpwrnlperror_wrap.o \
 				 libcorpus2exception_wrap.o \
@@ -78,7 +81,8 @@ CWRAPBIN=libpwrnlperror_wrap.o \
 				 libcorpusiob_wrap.o \
 				 libcorpusannotationchannel_wrap.o \
 				 libcorpusannotatedsentence_wrap.o \
-				 libcorpusannotationview_wrap.o
+				 libcorpusannotationview_wrap.o \
+				 corpus2_wrap.o
 
 PYMODULES=libpwrnlperror.py \
 					libcorpus2exception.py \
@@ -95,7 +99,8 @@ PYMODULES=libpwrnlperror.py \
 					libcorpusiob.py \
 					libcorpusannotationchannel.py \
 					libcorpusannotatedsentence.py \
-					libcorpusannotationview.py
+					libcorpusannotationview.py \
+					corpus2.py
 
 PYCBIN=libpwrnlperror.pyc \
 			 libcorpus2exception.pyc \
@@ -112,7 +117,8 @@ PYCBIN=libpwrnlperror.pyc \
 			 libcorpusiob.pyc \
 			 libcorpusannotationchannel.pyc \
 			 libcorpusannotatedsentence.pyc \
-			 libcorpusannotationview.pyc
+			 libcorpusannotationview.pyc \
+			 corpus2.pyc
 
 # -----------------------------------------------------------------------------
 all:boost_shared_ptr.o $(CBIN)
@@ -238,6 +244,15 @@ libcorpusannotationview.o:
 	$(CPP) -shared libcorpusannotationview_wrap.o \
 		$(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpusannotationview.so
 
+# -----------------------------------------------------------------------------
+
+# Corpus2
+corpus2.o:
+	$(SWIG) $(SWIGOPTS_LANG) corpus2.i
+	$(CPP) -c corpus2_wrap.cxx -I$(PYTHONDIR) $(CPPFLAGS)
+	$(CPP) -shared corpus2_wrap.o \
+		$(PWRUTILBIN) $(CORPUS2BIN) -o _corpus2.so
+
 # -----------------------------------------------------------------------------
 clean:
 	rm -f $(CBIN) $(CBINOUT) $(CWRAP) $(CWRAPBIN) $(PYMODULES) $(PYCBIN)
diff --git a/swig/makewrapper.sh b/swig/makewrapper.sh
index fdf80c5f917ff9bff414341776ccf953e1e687d3..274daed608341da3aa6e8aa9a2326a2c94102a9b 100755
--- a/swig/makewrapper.sh
+++ b/swig/makewrapper.sh
@@ -2,7 +2,7 @@
 
 if [ ${#} -eq 0 ]
 then
-	echo "Usage: $0 corpus2class"
+	echo -e "\e[1;31mUsage: $0 corpus2class\e[0m"
 	exit 1
 fi