removed copying, added generalized data layer processing