thenApply() Takes in the data and returns data. (data) => modifyData( data ) thenAccept() Has access to the data and returns nothing (data) => runthis() thenRun() Just runs the runnable passed into it, has no access to the data. () => runthis()