separating functionalities