Refactored from the Promote project