heap protocol defined