diff --git a/lib/ticketmaster/provider.rb b/lib/ticketmaster/provider.rb
index <HASH>..<HASH> 100644
--- a/lib/ticketmaster/provider.rb
+++ b/lib/ticketmaster/provider.rb
@@ -24,6 +24,12 @@ module TicketMaster::Provider
     def authorize(authentication = {})
       @authentication = TicketMaster::Authenticator.new(authentication)
     end
+
+    # All providers must define this method. 
+    # It should implement the code for validating the authentication 
+    def valid?
+      raise TicketMaster::Exception.new("#{Base.name}::#{this_method} method must be implemented by the provider")
+    end
     
     # Providers should try to define this method
     #
diff --git a/spec/ticketmaster-exception_spec.rb b/spec/ticketmaster-exception_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/ticketmaster-exception_spec.rb
+++ b/spec/ticketmaster-exception_spec.rb
@@ -13,6 +13,13 @@ describe "Ticketmaster Exception Messages" do
   before(:each) do
     @ticketmaster = TicketMaster.new(:tester, {})
   end
+
+  describe "TicketMaster::Provider::Base" do 
+    it "valid? method raises correct exception" do 
+      msg = "TicketMaster::Provider::Base::valid? method must be implemented by the provider"
+      lambda { @ticketmaster.valid? }.should raise_error(@exception, msg)
+    end
+  end
   
   describe "TicketMaster::Provider::Helper" do
     it "easy_finder method raises correct exception" do
added a new valid method to implement in each provider