6/7/8 + refactored