Changes based on review comments

- Added a builder and deprecated setter methods
- More comprehensive Javadoc comments
- Implemented Function and Formattable interfaces
- Improved test coverage