Optimise and experiment with free monads.