Add Protocols and Layering