Refactoring with an apprentice(http://robots.thoughtbot.com/refactoring-with-an-apprentice)