cleaned up abstr part