added S3 classes + print methods

merging in the S3 classes and print methods from the master branch.
I used different names for the classes and slightly altered the print methods.