from http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec-introduction