Creating N-Tier Applications in CSharp, Part 2