refactor pu