If you want me to write tests for this I need to figure out how to do that so it might take me a bit.