added remove; added some asserts