using visitor pattern to separate out json build

providers now build their proprietary json