Major refactor of signature matching to use strong typing over String comparison