All the examples coded from ruby.learncodethehardway.org