protocols and utilities