diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in
index 2abdfd9481eba15bd3a1bbc91f79d12c6c50697c..da227143999f412d6419422589abd36914a44b55 100644
--- a/slurm/slurm.h.in
+++ b/slurm/slurm.h.in
@@ -208,7 +208,7 @@ enum select_print_mode {
 enum task_dist_states {
 	SLURM_DIST_CYCLIC,	/* distribute tasks 1 per node, round robin */
 	SLURM_DIST_BLOCK,	/* distribute tasks filling node by node */
-	SLURM_DIST_HOSTFILE,	/* distribute tasks from what hostfile says */
+	SLURM_DIST_ARBITRARY,	/* arbitrary task distribution  */
 	SLURM_DIST_UNKNOWN	/* unknown dist */
 };
 
diff --git a/src/api/allocate.c b/src/api/allocate.c
index 60abc92e874a88c2d2e4e37a2549709a0fa38b17..2be38309e6e756e304abc52fb8a13572f1004c56 100644
--- a/src/api/allocate.c
+++ b/src/api/allocate.c
@@ -433,7 +433,7 @@ no_hostfile:
 			xfree(req->node_list);
 		req->node_list = nodelist;
 		req->num_tasks = count;
-		req->task_dist = SLURM_DIST_HOSTFILE;
+		req->task_dist = SLURM_DIST_ARBITRARY;
 	}
 	return count;
 }
diff --git a/src/common/dist_tasks.c b/src/common/dist_tasks.c
index af258401d8eea3416c625538dbe7925538ca9b74..150fdbbcac28cfd3cac38477c955ac27f6067dbc 100644
--- a/src/common/dist_tasks.c
+++ b/src/common/dist_tasks.c
@@ -291,7 +291,7 @@ extern int task_layout(slurm_step_layout_t *step_layout)
 
 	if (step_layout->task_dist == SLURM_DIST_CYCLIC)
 		return _task_layout_cyclic(step_layout);
-	else if(step_layout->task_dist == SLURM_DIST_HOSTFILE)
+	else if(step_layout->task_dist == SLURM_DIST_ARBITRARY)
 		return _task_layout_hostfile(step_layout);
 	else
 		return _task_layout_block(step_layout);
diff --git a/src/common/env.c b/src/common/env.c
index 0a82d47af080d5442c7c5b8e2da71e5143a5bd0a..ad30878b07073398e2a2dcb142b7d843227a17bd 100644
--- a/src/common/env.c
+++ b/src/common/env.c
@@ -32,8 +32,8 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <string.h>
-#include <slurm/slurm.h>
 
+#include "slurm/slurm.h"
 #include "src/common/log.h"
 #include "src/common/macros.h"
 #include "src/common/env.h"
@@ -253,9 +253,20 @@ int setup_env(env_t *env)
 	} 
 
 	if (env->distribution 
-	    && env->distribution != SRUN_DIST_UNKNOWN) {
-		dist = (env->distribution == SRUN_DIST_BLOCK) ?  
-			"block" : "cyclic";
+	    && env->distribution != SLURM_DIST_UNKNOWN) {
+		switch(env->distribution) {
+		case SLURM_DIST_CYCLIC:
+			dist = "cyclic";
+			break;
+		case SLURM_DIST_BLOCK:
+			dist = "block";
+			break;
+		case SLURM_DIST_ARBITRARY:
+			dist = "arbitrary";
+			break;
+		default:
+			dist = "unknown";
+		}
 		
 		if (setenvf(&env->env, "SLURM_DISTRIBUTION", "%s", dist)) {
 			error("Can't set SLURM_DISTRIBUTION env variable");
diff --git a/src/common/env.h b/src/common/env.h
index cbb0885de56197209d699a0ee72d4b0fbff64bab..f5b8591edc4d3d98dd65a03a3b9e498d1e9a1ea6 100644
--- a/src/common/env.h
+++ b/src/common/env.h
@@ -33,18 +33,12 @@
 
 #include "src/common/macros.h"
 
-enum distribution_t {
-	SRUN_DIST_BLOCK 	= 0, 
-	SRUN_DIST_CYCLIC 	= 1,
-	SRUN_DIST_UNKNOWN 	= 2
-};
-
 typedef struct env_options {
 	int nprocs;		/* --nprocs=n,      -n n	*/
 	char *task_count;
 	bool nprocs_set;	/* true if nprocs explicitly set */
 	bool cpus_set;		/* true if cpus_per_task explicitly set */
-	enum distribution_t
+	enum task_dist_states
 		distribution;	/* --distribution=, -m dist	*/
 	cpu_bind_type_t
 		cpu_bind_type;	/* --cpu_bind=			*/
diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c
index e72d57fb47dff545f03e3d4a0c306a627d3df24f..a4fcc950370cedd02d63e427eb0a4450ce137a97 100644
--- a/src/slurmctld/step_mgr.c
+++ b/src/slurmctld/step_mgr.c
@@ -415,12 +415,12 @@ try_again:
 				step_spec->node_list, job_ptr->job_id);
 			goto cleanup;
 		}
-		if(step_spec->task_dist == SLURM_DIST_HOSTFILE) {
+		if(step_spec->task_dist == SLURM_DIST_ARBITRARY) {
 			if (!strcmp(slurmctld_conf.switch_type,
 				    "switch/elan")) {
-				error("Can't do a HOSTFILE with switch "
-				      "type elan. Switching DIST type to "
-				      "BLOCK");
+				error("Can't do an ARBITRARY task layout with "
+				      "switch type elan. Switching DIST type "
+				      "to BLOCK");
 				xfree(step_spec->node_list);
 				step_spec->task_dist == SLURM_DIST_BLOCK;
 				FREE_NULL_BITMAP(nodes_picked);
@@ -593,7 +593,7 @@ step_create ( job_step_create_request_msg_t *step_specs,
 
 	if ((step_specs->task_dist != SLURM_DIST_CYCLIC) &&
 	    (step_specs->task_dist != SLURM_DIST_BLOCK) &&
-	    (step_specs->task_dist != SLURM_DIST_HOSTFILE))
+	    (step_specs->task_dist != SLURM_DIST_ARBITRARY))
 		return ESLURM_BAD_DIST;
 
 	if (job_ptr->kill_on_step_done)
diff --git a/src/srun/allocate.c b/src/srun/allocate.c
index 9d4d73daf884fe30e61f04c5432106037479ecc6..f9d40f5e2331301af72a48a2db5ed2e7c355fed5 100644
--- a/src/srun/allocate.c
+++ b/src/srun/allocate.c
@@ -476,6 +476,8 @@ _step_req_create(srun_job_t *j)
 	r->name       = xstrdup(opt.job_name);
 	r->relative   = false;      /* XXX fix this oneday */
 
+	/* CJM - why are "UNKNOWN" and "default" behaviours different? */
+	/*       why do we even HAVE the SLURM_DIST_UNKNOWN state?? */
 	switch (opt.distribution) {
 	case SLURM_DIST_UNKNOWN:
 		r->task_dist = (opt.nprocs <= j->nhosts) ? SLURM_DIST_CYCLIC
@@ -484,10 +486,11 @@ _step_req_create(srun_job_t *j)
 	case SLURM_DIST_CYCLIC:
 		r->task_dist = SLURM_DIST_CYCLIC;
 		break;
-	case SLURM_DIST_HOSTFILE:
-		r->task_dist = SLURM_DIST_HOSTFILE;
+	case SLURM_DIST_ARBITRARY:
+		r->task_dist = SLURM_DIST_ARBITRARY;
 		break;
-	default: /* (opt.distribution == SLURM_DIST_BLOCK) */
+	case SLURM_DIST_BLOCK:
+	default:
 		r->task_dist = SLURM_DIST_BLOCK;
 		break;
 	}
diff --git a/src/srun/opt.c b/src/srun/opt.c
index d887eb4f93d1c13158f49ee3aa2792a9d7966a5a..ee22984cf5d780bec796d48c4e13b05047595acd 100644
--- a/src/srun/opt.c
+++ b/src/srun/opt.c
@@ -245,8 +245,8 @@ static enum task_dist_states _verify_dist_type(const char *arg)
 		result = SLURM_DIST_CYCLIC;
 	else if (strncasecmp(arg, "block", len) == 0)
 		result = SLURM_DIST_BLOCK;
-	else if (strncasecmp(arg, "hostfile", len) == 0)
-		result = SLURM_DIST_HOSTFILE;
+	else if (strncasecmp(arg, "arbitrary", len) == 0)
+		result = SLURM_DIST_ARBITRARY;
 
 	return result;
 }
diff --git a/src/srun/opt.h b/src/srun/opt.h
index a2739fc15c217283cea0e99d60720729a6607447..86cf0b867ac033e7dd3935951699e48828397fb0 100644
--- a/src/srun/opt.h
+++ b/src/srun/opt.h
@@ -64,7 +64,7 @@ enum modes mode;
 
 #define format_task_dist_states(t) (t == SLURM_DIST_BLOCK) ? "block" :   \
 		                 (t == SLURM_DIST_CYCLIC) ? "cyclic" : \
-			         (t == SLURM_DIST_HOSTFILE) ? "hostfile" : \
+			         (t == SLURM_DIST_ARBITRARY) ? "arbitrary" : \
 			         "unknown"
 
 enum io_t {