added signatures to many protocol functions