NEW: implementation of factory method interface