replace IFn to SimCommand and extract interface for SimEngine
add new SimEngine interface and SimCommand