def title_case title
small_words= %w[a an and as at but by en for if in of on or the to via]
iWords= /\W?[a-z]+[A-Z]/
vs_words= /^vs?\.?$/
title.split.map do |word|
case
when small_words.include?(word.downcase)
word.downcase
when word=~ iWords || word=~ vs_words || word.upcase== word
word
else
word.capitalize
end
end.join(' ').gsub(/^[a-z]+\W/){|first_word|first_word.capitalize}
end