using MaybeT instead of IO (Maybe Element)