setting up application architecture