implementing new protocol