Index: src/Descriptors/AtomDescriptor.cpp
===================================================================
--- src/Descriptors/AtomDescriptor.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/Descriptors/AtomDescriptor.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -12,9 +12,8 @@
 
 #include "World.hpp"
-
 #include "atom.hpp"
 
 #include <boost/bind.hpp>
-#include <cassert>
+
 #include <iostream>
 
Index: src/Descriptors/MoleculeDescriptor.cpp
===================================================================
--- src/Descriptors/MoleculeDescriptor.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/Descriptors/MoleculeDescriptor.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -16,5 +16,4 @@
 
 #include <boost/bind.hpp>
-#include <cassert>
 #include <iostream>
 
Index: src/Helpers/MemDebug.cpp
===================================================================
--- src/Helpers/MemDebug.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/Helpers/MemDebug.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -6,5 +6,5 @@
  */
 
-#ifndef NDBEGUG
+#ifndef NDEBUG
 #ifndef NO_MEMDEBUG
 
Index: src/Patterns/Singleton.hpp
===================================================================
--- src/Patterns/Singleton.hpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/Patterns/Singleton.hpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -9,7 +9,7 @@
 #define SINGLETON_HPP_
 
-#include <cassert>
 #include <boost/thread.hpp>
 
+#include "Helpers/Assert.hpp"
 #include "defs.hpp"
 
@@ -181,5 +181,5 @@
 
     inline static void set(creator_T*&,creator_T*){
-      assert(0 && "Cannot set the Instance for a singleton of this type");
+      ASSERT(0, "Cannot set the Instance for a singleton of this type");
     }
   };
@@ -191,5 +191,6 @@
   struct creator_t<creator_T,false>{
     inline static creator_T* make(){
-      assert(0 && "Cannot create a singleton of this type directly");
+      ASSERT(0, "Cannot create a singleton of this type directly");
+      return 0;
     }
     inline static void set(ptr_t& dest,creator_T* src){
Index: src/Patterns/Singleton_impl.hpp
===================================================================
--- src/Patterns/Singleton_impl.hpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/Patterns/Singleton_impl.hpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -72,5 +72,5 @@
 template <class T,bool _may_create>
 void Singleton<T,_may_create>::setInstance(T* newInstance){
-  assert(!theInstance.get() && "Trying to set the instance of an already created singleton");
+  ASSERT(!theInstance.get(), "Trying to set the instance of an already created singleton");
   boost::recursive_mutex::scoped_lock guard(instanceLock);
   theInstance.reset(newInstance);
@@ -83,5 +83,5 @@
 template <class T, bool _may_create>
 Singleton<T,_may_create>::Singleton(const Singleton<T,_may_create>&){
-  assert(0 && "Copy constructor of singleton template called");
+  ASSERT(0, "Copy constructor of singleton template called");
 }
 
Index: src/UIElements/Dialog.cpp
===================================================================
--- src/UIElements/Dialog.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/UIElements/Dialog.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -7,6 +7,4 @@
 
 #include "Helpers/MemDebug.hpp"
-
-#include <cassert>
 
 #include "Dialog.hpp"
Index: src/World.cpp
===================================================================
--- src/World.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/World.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -21,4 +21,5 @@
 #include "Descriptors/SelectiveIterator_impl.hpp"
 #include "Actions/ManipulateAtomsProcess.hpp"
+#include "Helpers/Assert.hpp"
 
 #include "Patterns/Singleton_impl.hpp"
@@ -112,6 +113,5 @@
   molecule *mol = NULL;
   mol = NewMolecule();
-  cout << "Creating molecule with id " << currMoleculeId << "." << endl;
-  assert(!molecules.count(currMoleculeId));
+  ASSERT(!molecules.count(currMoleculeId),"currMoleculeId did not specify an unused ID");
   mol->setId(currMoleculeId++);
   // store the molecule by ID
@@ -129,5 +129,5 @@
   OBSERVE;
   molecule *mol = molecules[id];
-  assert(mol);
+  ASSERT(mol,"Molecule id that was meant to be destroyed did not exist");
   DeleteMolecule(mol);
   molecules.erase(id);
@@ -165,5 +165,5 @@
   OBSERVE;
   atom *atom = atoms[id];
-  assert(atom);
+  ASSERT(atom,"Atom ID that was meant to be destroyed did not exist");
   DeleteAtom(atom);
   atoms.erase(id);
@@ -177,5 +177,5 @@
   if(!target){
     target = atoms[oldId];
-    assert(target && "Atom with that ID not found");
+    ASSERT(target,"Atom with that ID not found");
     return target->changeId(newId);
   }
Index: src/molecule.cpp
===================================================================
--- src/molecule.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/molecule.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -155,5 +155,4 @@
 molecule::const_iterator molecule::erase( atom * key )
 {
-  cout << "trying to erase atom" << endl;
   molecule::const_iterator iter = find(key);
   if (iter != end()){
Index: src/tesselation.cpp
===================================================================
--- src/tesselation.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/tesselation.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -9,5 +9,4 @@
 
 #include <fstream>
-#include <assert.h>
 
 #include "helpers.hpp"
@@ -24,6 +23,4 @@
 #include "Plane.hpp"
 #include "Exceptions/LinearDependenceException.hpp"
-#include "Helpers/Assert.hpp"
-
 #include "Helpers/Assert.hpp"
 
@@ -2527,5 +2524,5 @@
     baseline = Runner->second;
     if (baseline->pointlist.empty()) {
-      assert((baseline->BaseLine->triangles.size() == 1) && ("Open line without exactly one attached triangle"));
+      ASSERT((baseline->BaseLine->triangles.size() == 1),"Open line without exactly one attached triangle");
       T = (((baseline->BaseLine->triangles.begin()))->second);
       DoLog(1) && (Log() << Verbose(1) << "Finding best candidate for open line " << *baseline->BaseLine << " of triangle " << *T << endl);
Index: src/unittests/Makefile.am
===================================================================
--- src/unittests/Makefile.am	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/unittests/Makefile.am	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -211,5 +211,5 @@
 
 SingletonTest_SOURCES = UnitTestMain.cpp SingletonTest.cpp SingletonTest.hpp
-SingletonTest_LDADD = $(BOOST_LIB) ${BOOST_THREAD_LIB}
+SingletonTest_LDADD = ${ALLLIBS} $(BOOST_LIB) ${BOOST_THREAD_LIB}
 
 StackClassUnitTest_SOURCES = UnitTestMain.cpp stackclassunittest.cpp stackclassunittest.hpp
Index: src/unittests/ObserverTest.cpp
===================================================================
--- src/unittests/ObserverTest.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/unittests/ObserverTest.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -382,5 +382,9 @@
   // make this Observable its own subject. NEVER DO THIS IN ACTUAL CODE
   simpleObservable1->signOn(simpleObservable1);
+#ifndef NDEBUG
   CPPUNIT_ASSERT_THROW(simpleObservable1->changeMethod(),Assert::AssertionFailure);
+#else
+  simpleObservable1->changeMethod();
+#endif
 
   // more complex test
@@ -388,5 +392,11 @@
   simpleObservable1->signOn(simpleObservable2);
   simpleObservable2->signOn(simpleObservable1);
+#ifndef NDEBUG
   CPPUNIT_ASSERT_THROW(simpleObservable1->changeMethod(),Assert::AssertionFailure);
+#else
+  simpleObservable1->changeMethod();
+#endif
+
+
   simpleObservable1->signOff(simpleObservable2);
   simpleObservable2->signOff(simpleObservable1);
Index: src/unittests/manipulateAtomsTest.cpp
===================================================================
--- src/unittests/manipulateAtomsTest.cpp	(revision 326bbe40da9599dc046e0fdfe636d1742946e288)
+++ src/unittests/manipulateAtomsTest.cpp	(revision 0c5eeb409cae578bdec87b091364dde4c8b6940e)
@@ -87,5 +87,5 @@
 static void operation(atom* _atom){
   AtomStub *atom = dynamic_cast<AtomStub*>(_atom);
-  assert(atom);
+  CPPUNIT_ASSERT(atom);
   atom->doSomething();
 }
@@ -100,5 +100,5 @@
     AtomStub *atom;
     atom = dynamic_cast<AtomStub*>(*iter);
-    assert(atom);
+    CPPUNIT_ASSERT(atom);
     CPPUNIT_ASSERT(atom->manipulated);
   }
@@ -114,5 +114,5 @@
     AtomStub *atom;
     atom = dynamic_cast<AtomStub*>(*iter);
-    assert(atom);
+    CPPUNIT_ASSERT(atom);
     if(atom->getId()!=(int)ATOM_COUNT/2)
       CPPUNIT_ASSERT(atom->manipulated);
