separating view from model