updated add()