reorganized the package to be self containing