continue massive refactor, make protocol more efficient