Update the View class to have a factory static method and chainable 'with' method