change structure for better separation