test refactoring
still unstable. refactoring