Refactored to use Promote everywhere