Better factory method