using propertygrapht monad transformer