core workflow