package refactored