add simulate func