diff --git a/wa/framework/target/descriptor.py b/wa/framework/target/descriptor.py
index 9e01ebac..8515556f 100644
--- a/wa/framework/target/descriptor.py
+++ b/wa/framework/target/descriptor.py
@@ -33,6 +33,11 @@ def instantiate_target(tdesc, params, connect=None):
 
     tp, pp, cp = {}, {}, {}
 
+    for supported_params, new_params in (target_params, tp), (platform_params, pp), (conn_params, cp):
+        for name, value in supported_params.iteritems():
+            if value.default:
+                new_params[name] = value.default
+
     for name, value in params.iteritems():
         if name in target_params:
             tp[name] = value
@@ -62,6 +67,8 @@ def instantiate_assistant(tdesc, params, target):
     for param in tdesc.assistant_params:
         if param.name in params:
             assistant_params[param.name] = params[param.name]
+        elif param.default:
+            assistant_params[param.name] = param.default
     return tdesc.assistant(target, **assistant_params)