this is a creational pattern example