Fixed a JDK 5 bug (there's no Exception(String, Exception) constructor)
Cleaned up code for check style complaints/suggestions.
Added final where it made sense.