add changed?, changes, save methods; add tests