some regactorisation on next generation