first and incomplete update implementation