Removed variance mark
Instead of using Traversable and Iterable traits using Monad and Functor