add removeAll and removeAt, make remove() expect item instead of fn