Separate out middleware vs generic middleware. composite should use contexts