Think about free monad