I was originally going to set the default attributes to a hash but decided against it in the cases where people were explicitly passing default arguments as nil due to the previous implementation. (Hopefully, no one is doing this.) I kept it as nil for the surest backwards compatibility I could think of. If a user passes a hash, it will be merged in L#29. 

I can change it to an empty hash as the default argument, remove the conditional from the merge. Would you prefer that?