Pass in Factories like Network - to protect the Library from getting incompatible routines for authenticating devices etc...