Iteration branch pull request for review.

Firstly, this is not the way to implement exceptions.

Here is how it should have been implemented
```csharp
// Add the serializable attribute
[Serializable]
public class BadRequestException : Exception
{
    public BadRequestException() : base("Bad request.") {}
    public BadRequestException(string message) : base(message) {}
    public BadRequestException(string message, Exception inner) : base(message, inner) {}
    public BadRequestException(SerializationInfo info, StreamContext context) : base(info, context) {}
}

```