Usando monad Transformer, y algun que otro retoque