major package refactor