split out repo and client installation into separate class