re-introduce standalone shape ops