implementing `push!`