Giving up on writing it myself. Use the package already John
nah, I have to make tons of exceptions. bugger