layered design approach