Updating class names to reflect their intention better, adding some more tests and cleaning up documentation