change add() method signature, but I'm not decided which new signature is better than old its or not.