v4 update, refactor