First interface version
Add namespace to cpp file
Implementation details in header
Second interface version
Third interface version and exception implementation
Fix ostream operator
Static start
Destructor