design completed
separated functionality