Implement route versioning via ACCEPT header, and add checks for version and produces content type.