added pattern for passing down application context and request to underlying implementation