diff --git a/source/Interpreter/OptionGroupValueObjectDisplay.cpp b/source/Interpreter/OptionGroupValueObjectDisplay.cpp
index dac44b1..3150ea7 100644
--- a/source/Interpreter/OptionGroupValueObjectDisplay.cpp
+++ b/source/Interpreter/OptionGroupValueObjectDisplay.cpp
@@ -13,6 +13,8 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
+#include "lldb/Target/Target.h"
+#include "lldb/Interpreter/CommandInterpreter.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -28,6 +30,8 @@
 static OptionDefinition
 g_option_table[] =
 {
+    { LLDB_OPT_SET_1, false, "dynamic-type",    'd', required_argument, TargetInstanceSettings::g_dynamic_value_types, 
+                                                                              0, eArgTypeNone,   "Show the object as its full dynamic type, not its static type, if available."},
     { LLDB_OPT_SET_1, false, "depth",           'D', required_argument, NULL, 0, eArgTypeCount,     "Set the max recurse depth when dumping aggregate types (default is infinity)."},
     { LLDB_OPT_SET_1, false, "flat",            'F', no_argument,       NULL, 0, eArgTypeNone,      "Display results in a flat format that uses expression paths for each variable or member."},
     { LLDB_OPT_SET_1, false, "location",        'L', no_argument,       NULL, 0, eArgTypeNone,      "Show variable location information."},
@@ -64,6 +68,17 @@
 
     switch (short_option)
     {
+        case 'd':
+            {
+                bool success;
+                int32_t result;
+                result = Args::StringToOptionEnum (option_arg, TargetInstanceSettings::g_dynamic_value_types, 2, &success);
+                if (!success)
+                    error.SetErrorStringWithFormat("Invalid dynamic value setting: \"%s\".\n", option_arg);
+                else
+                    use_dynamic = (lldb::DynamicValueType) result;
+            }
+            break;
         case 'T':   show_types   = true;  break;
         case 'Y':   show_summary = false; break;
         case 'L':   show_location= true;  break;
@@ -99,5 +114,13 @@
     use_objc      = false;
     max_depth     = UINT32_MAX;
     ptr_depth     = 0;
-}
-
+    
+    Target *target = interpreter.GetExecutionContext().target;
+    if (target != NULL)
+        use_dynamic = target->GetPreferDynamicValue();
+    else
+    {
+        // If we don't have any targets, then dynamic values won't do us much good.
+        use_dynamic = lldb::eNoDynamicValues;
+    }
+}
\ No newline at end of file
