corredtion abstraction