changed method abstractions