more logical flow