Raise errors if the types of supplied args are not what we expect
Add some fun exception handling to the spec