finished up oo refactor