Change Factory Methods to instancetype