Beginning C# 3.0 : an introduction to object oriented programming