I am wondering about @leleuj's suggestion. Could we provide a layer of abstraction such that all RADIUS specific details are encapsulated inside an impl class? The packet creation and transmission seems to be specific to the library. Do we know of other use cases where different impls might be needed? 

I realize we are not doing the same with other modules, such as ehcache, etc.