Move proposal logic to enum