Added HSL/A functionalaity, rewrote large portions of the code to make things tidier, added some tests to cover new functionality