added new functionality for abstraction