refactoring to prepare for temporary vision