A discrete event simulator