implemented object creation patterns