package structure refactored