abstract rewritten