move some stuff to helpers, add "addValues" method, make "values" and "addValues" return a new object so the original is not altered