I learnt about the code steps by putting debug statements in the code and clicking buttons whilst monitoring the contents of tables. Once I (think) I had my head around it I concluded that it is complex and it is complex because It does a lot of clever and necessary stuff. Vishal, I reccomend you read through the Unit testing code as well, it shows some information on the steps that occur when a test is taken.