updates classes to use abstractions