added some more abstractions
added some more abstractions