refactored shouldPromote