added more abstract abstractions