refactored package structures