Refactored the pull request, added some more helpers in the builder, and attempted documenting the package