layered design pattern