first implementation with no removal