abstracting layering