don't use tick event, simulate separately