func resource_dnsimple_record_update(
	s *terraform.ResourceState,
	d *terraform.ResourceDiff,
	meta interface{}) (*terraform.ResourceState, error) {
	p := meta.(*ResourceProvider)
	client := p.client
	rs := s.MergeDiff(d)

	updateRecord := dnsimple.ChangeRecord{}

	if attr, ok := d.Attributes["name"]; ok {
		updateRecord.Name = attr.New
	}

	if attr, ok := d.Attributes["value"]; ok {
		updateRecord.Value = attr.New
	}

	if attr, ok := d.Attributes["type"]; ok {
		updateRecord.Type = attr.New
	}

	if attr, ok := d.Attributes["ttl"]; ok {
		updateRecord.Ttl = attr.New
	}

	log.Printf("[DEBUG] record update configuration: %#v", updateRecord)

	_, err := client.UpdateRecord(rs.Attributes["domain"], rs.ID, &updateRecord)
	if err != nil {
		return rs, fmt.Errorf("Failed to update record: %s", err)
	}

	record, err := resource_dnsimple_record_retrieve(rs.Attributes["domain"], rs.ID, client)
	if err != nil {
		return rs, fmt.Errorf("Couldn't find record: %s", err)
	}

	return resource_dnsimple_record_update_state(rs, record)
}