every interface section needs to define option proto
consolidate functionality and move some functions