main DE workflow functions