proto
refactor