signing with purpose via :for option

Work on #8 

There're many `options` everywhere :sweat_smile: But it seems hard to avoid them..

But I have some questions, so I hope to get some of your help :smiley:  @jeremy .I'll comment on the code
`nil` serves us pretty well as a default purpose, but perhaps we should be explicit about it? Does a missing purpose mean "for anything" or does it mean "for other default purposes?" What do you think?