code separation by internal logic