new structure. onIntercept using kvp