Problem solving : a cognitive approach