simulation methods