diff --git a/rackspace/autoscale/v1/policies/requests.go b/rackspace/autoscale/v1/policies/requests.go
index 52061a1..7aadf98 100644
--- a/rackspace/autoscale/v1/policies/requests.go
+++ b/rackspace/autoscale/v1/policies/requests.go
@@ -9,11 +9,12 @@
 
 // Validation errors returned by create or update operations.
 var (
-	ErrNoName            = errors.New("Policy name cannot by empty.")
-	ErrNoArgs            = errors.New("Args cannot be nil for schedule policies.")
+	ErrNoName            = errors.New("Policy name cannot be empty.")
+	ErrNoSchedule        = errors.New("Schedule cannot be nil for schedule policies.")
 	ErrCooldownRange     = errors.New("Cooldown is out of range (0, 86400).")
 	ErrUnknownType       = errors.New("Unknown policy type.")
 	ErrUnknownAdjustment = errors.New("Unknown adjustment type.")
+	ErrEmptyCron         = errors.New("Cron argument cannot be empty.")
 )
 
 // List returns all scaling policies for a group.
@@ -57,8 +58,9 @@
 	// an integer.
 	AdjustmentValue float64
 
-	// Additional configuration options for some types of policy.
-	Args map[string]interface{}
+	// Value determining Schedule policy behavior, or nil for Webhook policies.
+	// This should be an appropriately configured Cron or an At value.
+	Schedule ScheduleArgs
 }
 
 // ToPolicyCreateMap converts a slice of CreateOpt structs into a map for use
@@ -71,8 +73,8 @@
 			return nil, ErrNoName
 		}
 
-		if o.Type == Schedule && o.Args == nil {
-			return nil, ErrNoArgs
+		if o.Type == Schedule && o.Schedule == nil {
+			return nil, ErrNoSchedule
 		}
 
 		if ok := validateType(o.Type); !ok {
@@ -95,8 +97,14 @@
 			return nil, err
 		}
 
-		if o.Args != nil {
-			policy["args"] = o.Args
+		if o.Schedule != nil {
+			args, err := o.Schedule.ToPolicyArgs()
+
+			if err != nil {
+				return nil, err
+			}
+
+			policy["args"] = args
 		}
 
 		policies = append(policies, policy)
@@ -161,8 +169,9 @@
 	// an integer.
 	AdjustmentValue float64
 
-	// Additional configuration options for some types of policy.
-	Args map[string]interface{}
+	// Value determining Schedule policy behavior, or nil for Webhook policies.
+	// This should be an appropriately configured Cron or an At value.
+	Schedule ScheduleArgs
 }
 
 // ToPolicyUpdateMap converts an UpdateOpts struct into a map for use as the
@@ -172,8 +181,8 @@
 		return nil, ErrNoName
 	}
 
-	if opts.Type == Schedule && opts.Args == nil {
-		return nil, ErrNoArgs
+	if opts.Type == Schedule && opts.Schedule == nil {
+		return nil, ErrNoSchedule
 	}
 
 	if ok := validateType(opts.Type); !ok {
@@ -196,8 +205,14 @@
 		return nil, err
 	}
 
-	if opts.Args != nil {
-		policy["args"] = opts.Args
+	if opts.Schedule != nil {
+		args, err := opts.Schedule.ToPolicyArgs()
+
+		if err != nil {
+			return nil, err
+		}
+
+		policy["args"] = args
 	}
 
 	return policy, nil
