More generic install function