use _provider instead of provider as name of attribute.  this should probably be a property
commit bomb, apologies.  added a bunch of mocking to get communication functions mocked up.