added constructor exceptions, code formatting, and documentation