updated pseudocode