wip refactoring
do some test