introducing two layers of application