start of refactoring
untested implementation of remove and skeleton of observers