Ok, rather than the try-except I recommend putting a getargspec in `compatibility`.  I think that we should branch rather than try-except.  I think that this branching should happen once, preferably in compatibility.py (which currently doesn't serve much purpose anyway.)

I've done this on my branch of your work.  Let me know if you'd like a PR.