reconsider the problem. change add() implementation