refactoring / remove user data for a while
the implementation still invalid

ring -> next changes the type with static cast, this erase information
about ring position in a quad