simplified factory method interface