Preserving abstraction in concurrent programming | IEEE Journals & Magazine | IEEE Xplore