Converted to a Composer package and added test coverage