dependencies are semantically versioned
use respond_to? instead of is_a? to check primary_key