copied and slightly modified abstract