the basic workflow