major object controller refactor