List monad is responsible for internal data representation instead of factory method