*WIP* Register Click

Hi all, I'm pushing this up while I'm still in a very early stage. I'm getting stuck on passing optional blocks via the ampersand `&block` syntax. 

I keep getting wrong number of argument errors and am now thoroughly lost :frowning:. I may just need a tutorial on passing and using option args . . . more comments in line.
Here, `&blk` captures a block and converts it to a Proc (referenced by `blk`)