complete refactor ... still haven't tested the actual installation