hw from 4 to 8 need a lot of refactor