diff --git a/provider/marathon/marathon.go b/provider/marathon/marathon.go
index 3bd182049..54dd39219 100644
--- a/provider/marathon/marathon.go
+++ b/provider/marathon/marathon.go
@@ -205,7 +205,7 @@ func (p *Provider) taskFilter(task marathon.Task, applications *marathon.Applica
 	label, _ := p.getLabel(application, "traefik.tags")
 	constraintTags := strings.Split(label, ",")
 	if p.MarathonLBCompatibility {
-		if label, err := p.getLabel(application, "HAPROXY_GROUP"); err == nil {
+		if label, ok := p.getLabel(application, "HAPROXY_GROUP"); ok {
 			constraintTags = append(constraintTags, label)
 		}
 	}
@@ -262,7 +262,7 @@ func (p *Provider) applicationFilter(app marathon.Application, filteredTasks []m
 	label, _ := p.getLabel(app, "traefik.tags")
 	constraintTags := strings.Split(label, ",")
 	if p.MarathonLBCompatibility {
-		if label, err := p.getLabel(app, "HAPROXY_GROUP"); err == nil {
+		if label, ok := p.getLabel(app, "HAPROXY_GROUP"); ok {
 			constraintTags = append(constraintTags, label)
 		}
 	}
@@ -291,13 +291,13 @@ func isApplicationEnabled(application marathon.Application, exposedByDefault boo
 	return exposedByDefault && (*application.Labels)["traefik.enable"] != "false" || (*application.Labels)["traefik.enable"] == "true"
 }
 
-func (p *Provider) getLabel(application marathon.Application, label string) (string, error) {
+func (p *Provider) getLabel(application marathon.Application, label string) (string, bool) {
 	for key, value := range *application.Labels {
 		if key == label {
-			return value, nil
+			return value, true
 		}
 	}
-	return "", errors.New("Label not found:" + label)
+	return "", false
 }
 
 func (p *Provider) getPort(task marathon.Task, applications []marathon.Application) string {
@@ -307,12 +307,12 @@ func (p *Provider) getPort(task marathon.Task, applications []marathon.Applicati
 		return ""
 	}
 	ports := processPorts(application, task)
-	if portIndexLabel, err := p.getLabel(application, "traefik.portIndex"); err == nil {
+	if portIndexLabel, ok := p.getLabel(application, "traefik.portIndex"); ok {
 		if index, err := strconv.Atoi(portIndexLabel); err == nil {
 			return strconv.Itoa(ports[index])
 		}
 	}
-	if portValueLabel, err := p.getLabel(application, "traefik.port"); err == nil {
+	if portValueLabel, ok := p.getLabel(application, "traefik.port"); ok {
 		return portValueLabel
 	}
 
@@ -328,14 +328,14 @@ func (p *Provider) getWeight(task marathon.Task, applications []marathon.Applica
 		log.Errorf("Unable to get marathon application from task %s", task.AppID)
 		return "0"
 	}
-	if label, err := p.getLabel(application, "traefik.weight"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.weight"); ok {
 		return label
 	}
 	return "0"
 }
 
 func (p *Provider) getDomain(application marathon.Application) string {
-	if label, err := p.getLabel(application, "traefik.domain"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.domain"); ok {
 		return label
 	}
 	return p.Domain
@@ -347,35 +347,35 @@ func (p *Provider) getProtocol(task marathon.Task, applications []marathon.Appli
 		log.Errorf("Unable to get marathon application from task %s", task.AppID)
 		return "http"
 	}
-	if label, err := p.getLabel(application, "traefik.protocol"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.protocol"); ok {
 		return label
 	}
 	return "http"
 }
 
 func (p *Provider) getSticky(application marathon.Application) string {
-	if sticky, err := p.getLabel(application, "traefik.backend.loadbalancer.sticky"); err == nil {
+	if sticky, ok := p.getLabel(application, "traefik.backend.loadbalancer.sticky"); ok {
 		return sticky
 	}
 	return "false"
 }
 
 func (p *Provider) getPassHostHeader(application marathon.Application) string {
-	if passHostHeader, err := p.getLabel(application, "traefik.frontend.passHostHeader"); err == nil {
+	if passHostHeader, ok := p.getLabel(application, "traefik.frontend.passHostHeader"); ok {
 		return passHostHeader
 	}
 	return "true"
 }
 
 func (p *Provider) getPriority(application marathon.Application) string {
-	if priority, err := p.getLabel(application, "traefik.frontend.priority"); err == nil {
+	if priority, ok := p.getLabel(application, "traefik.frontend.priority"); ok {
 		return priority
 	}
 	return "0"
 }
 
 func (p *Provider) getEntryPoints(application marathon.Application) []string {
-	if entryPoints, err := p.getLabel(application, "traefik.frontend.entryPoints"); err == nil {
+	if entryPoints, ok := p.getLabel(application, "traefik.frontend.entryPoints"); ok {
 		return strings.Split(entryPoints, ",")
 	}
 	return []string{}
@@ -384,11 +384,11 @@ func (p *Provider) getEntryPoints(application marathon.Application) []string {
 // getFrontendRule returns the frontend rule for the specified application, using
 // it's label. It returns a default one (Host) if the label is not present.
 func (p *Provider) getFrontendRule(application marathon.Application) string {
-	if label, err := p.getLabel(application, "traefik.frontend.rule"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.frontend.rule"); ok {
 		return label
 	}
 	if p.MarathonLBCompatibility {
-		if label, err := p.getLabel(application, "HAPROXY_0_VHOST"); err == nil {
+		if label, ok := p.getLabel(application, "HAPROXY_0_VHOST"); ok {
 			return "Host:" + label
 		}
 	}
@@ -405,7 +405,7 @@ func (p *Provider) getBackend(task marathon.Task, applications []marathon.Applic
 }
 
 func (p *Provider) getFrontendBackend(application marathon.Application) string {
-	if label, err := p.getLabel(application, "traefik.backend"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.backend"); ok {
 		return label
 	}
 	return provider.Replace("/", "-", application.ID)
@@ -422,33 +422,26 @@ func (p *Provider) getSubDomain(name string) string {
 }
 
 func (p *Provider) hasCircuitBreakerLabels(application marathon.Application) bool {
-	if _, err := p.getLabel(application, "traefik.backend.circuitbreaker.expression"); err != nil {
-		return false
-	}
-	return true
+	_, ok := p.getLabel(application, "traefik.backend.circuitbreaker.expression")
+	return ok
 }
 
 func (p *Provider) hasLoadBalancerLabels(application marathon.Application) bool {
 	_, errMethod := p.getLabel(application, "traefik.backend.loadbalancer.method")
 	_, errSticky := p.getLabel(application, "traefik.backend.loadbalancer.sticky")
-	if errMethod != nil && errSticky != nil {
-		return false
-	}
-	return true
+	return errMethod || errSticky
 }
 
 func (p *Provider) hasMaxConnLabels(application marathon.Application) bool {
-	if _, err := p.getLabel(application, "traefik.backend.maxconn.amount"); err != nil {
+	if _, ok := p.getLabel(application, "traefik.backend.maxconn.amount"); !ok {
 		return false
 	}
-	if _, err := p.getLabel(application, "traefik.backend.maxconn.extractorfunc"); err != nil {
-		return false
-	}
-	return true
+	_, ok := p.getLabel(application, "traefik.backend.maxconn.extractorfunc")
+	return ok
 }
 
 func (p *Provider) getMaxConnAmount(application marathon.Application) int64 {
-	if label, err := p.getLabel(application, "traefik.backend.maxconn.amount"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.backend.maxconn.amount"); ok {
 		i, errConv := strconv.ParseInt(label, 10, 64)
 		if errConv != nil {
 			log.Errorf("Unable to parse traefik.backend.maxconn.amount %s", label)
@@ -460,28 +453,27 @@ func (p *Provider) getMaxConnAmount(application marathon.Application) int64 {
 }
 
 func (p *Provider) getMaxConnExtractorFunc(application marathon.Application) string {
-	if label, err := p.getLabel(application, "traefik.backend.maxconn.extractorfunc"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.backend.maxconn.extractorfunc"); ok {
 		return label
 	}
 	return "request.host"
 }
 
 func (p *Provider) getLoadBalancerMethod(application marathon.Application) string {
-	if label, err := p.getLabel(application, "traefik.backend.loadbalancer.method"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.backend.loadbalancer.method"); ok {
 		return label
 	}
 	return "wrr"
 }
 
 func (p *Provider) getCircuitBreakerExpression(application marathon.Application) string {
-	if label, err := p.getLabel(application, "traefik.backend.circuitbreaker.expression"); err == nil {
+	if label, ok := p.getLabel(application, "traefik.backend.circuitbreaker.expression"); ok {
 		return label
 	}
 	return "NetworkErrorRatio() > 1"
 }
 
 func processPorts(application marathon.Application, task marathon.Task) []int {
-
 	// Using default port configuration
 	if task.Ports != nil && len(task.Ports) > 0 {
 		return task.Ports
@@ -520,8 +512,8 @@ func (p *Provider) getBackendServer(task marathon.Task, applications []marathon.
 	} else if len(task.IPAddresses) == 1 {
 		return task.IPAddresses[0].IPAddress
 	} else {
-		ipAddressIdxStr, err := p.getLabel(application, "traefik.ipAddressIdx")
-		if err != nil {
+		ipAddressIdxStr, ok := p.getLabel(application, "traefik.ipAddressIdx")
+		if !ok {
 			log.Errorf("Unable to get marathon IPAddress from task %s", task.AppID)
 			return ""
 		}