Mostly re-factored the package object