implement insert, remove, contains