separation of functions