about to do serious refactor