run needs to call S.run