anchor.diff:          new Duration(
               hours: hours,
               minutes: minutes);
  -    Entry entry = new Entry(duration, description, client);
  +    Entry entry = new Entry(id, duration, description, client);
   
       _loaded.then((_) {
  -      timesheet.entries.add(entry);
  -      _entries_resource.add(entry);
  +      if (entry.id == "") {
  +        _addEntry(entry);
  +      } else {
  +        _saveEntry(entry);
  +      }
   
         clearNewEntry();
       });
  +  }
  +
  +  _addEntry(Entry entry) {
  +    entry.id = new DateTime.now().millisecondsSinceEpoch.toString();
  +    timesheet.entries.add(entry);
  +    _entries_resource.add(entry);
  +  }
  +
  +  _saveEntry(Entry entry) {
  +    timesheet.entries.where((e) => id == e.id).forEach((Entry e) {
  +      e.client = entry.client;
  +      e.description = entry.description;
  +      e.duration = entry.duration;
  +    });
  +    _entries_resource.save(entry);
     }
   
     removeEntry(Entry entry) {
  
positive.code: )
  class TimesheetController {
    Timesheet timesheet = new Timesheet();
    int hours = 1;
    int minutes = 0;
    String description = "";
  
negative.code:   }
  }
  
  abstract class Resource {
    Future add(dynamic entity);
    Future remove(dynamic entity);
    Future save(dynamic entity);
    Future getAll();
  }
  
  @NgInjectableService()
  class EntriesResource implements Resource {
    List<Entry> entries = [];
  
    Future _loaded;
  