Update to add all issues to be updated. Added functionality, proper tests, documentation and changelog.