data layer
control layer
view layer
init modules
entry point and top layer