lots of documentation. added a few missing "throws" statemets.