Beginning C# 3.0: An Introduction to Object Oriented Programming