Refactored again for better modularization