refactored 2.8 a bit