An open source object- oriented architecture for discrete event simulation