Implementing monadish things? for fun.