An Open Source Object- Oriented Architecture for discrete event simulation