better separation of logic;