JSEC-37 - architectural refactoring in preparation for 1.0 - simplified implementations and implemented some best practices based on Joshua Bloch's "Effective Java" book.