split more parts, working
refactor as link