first heap implementation