Performed major re-factor to break out code to further classes.