add protocols and generic ns and begin porting