reorganized with extra step