decoupled views from handlers