100% code coverage (- 2 lines from exception throwing, missing }'s)