refactored Provider base class and added new SMS Provider