Final Refactoring and Marionette applied