ask/tell actaully can be interpreted to IO
hoist and then retract
using interpret from http://stackoverflow.com/questions/15930270/applying-semantics-to-free-monads