Added apply factory method