There's no good monads in Python, lest this could be avoided :) I'll write it a different way