not pseudocode anymore