expanded pseudo code