By actually implementing the factory pattern I found merge didn't respect it