Include tests for emplace, modify fallback content negotiation logic.
Add tests related to error handling.
Filter middleware instead of adding them progressively.
Organize code into certain file structure.