finished static factory method