these are better off being generic and public