refactor with new frw