Awesome Step Builder pattern from Marco Castigliego: http://rdafbn.blogspot.it/2012/07/step-builder-pattern_28.html