improved
refactored