Using interfaces instead of implementations

Updated sample to use interfaces to demonstrate that testing was a first class consideration.