3 layers implemented