self.respond_to? is better than self.defined?