added named factory implementation