adding more documentation, also got daring and added a couple of exceptions