separates concerns