re-organize into a package