better explanation of general workflow