whole paper rewritten