split install out into it's own class