finish defining protocols