Decorator, Product Factory + some unit test