refactored the package and require methods, along with associated helper methods a bit