Brownfield Development: Taming Legacy Code with Better Unit Testing and Microsoft Fakes