use factory methods so invocations of `install` are independent