basic updating functionality...
needs testing.