abstracting shell