separating view from data modularizing further