William Spreitzer developed two business layer assemblies for a retail services company. The assemblies included interface and base classes as well as entity, collection, and exception classes. Key aspects of the design included object modeling, custom exceptions, attributes, unit testing, generics, and interfaces. The objects were designed to be easily used by other layers and support serialization. Custom objects extended .NET base classes and interfaces. The code was unit tested and documented with attributes and XML.