facade design pattern example and explanation + factory changes