Added some comments

Also update Provider.rb to have just function calls we need to
overwrite (otherwise they'll throw an exception). Think of this as an
abstract class.