Initial version of OO interface

This version contains:
 - Initial version of the OO-interface
 - Renamed the existing files containing the procedural-interface
 - Moved the shared code between the OO en PR interface to one file