A generalized version of the Aivika simulation library but only based on using monad transformers