separating domain from web
segregating responsibilities