move the signature methods into a Signature Struct which will make it a bit easier to test