refactor update of working copy

should only happen once, and encapsulated nicely away