diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/addproperty.php
index 98877805b46b818e84c267ce85a7da0d80377a89..0122cf019c7fb151d648bd37fb077283b22cc40d 100644
--- a/apps/contacts/ajax/addproperty.php
+++ b/apps/contacts/ajax/addproperty.php
@@ -34,13 +34,31 @@ $name = $_POST['name'];
 $value = $_POST['value'];
 $parameters = isset($_POST['parameters'])?$_POST['parameters']:array();
 
-$property = $vcard->addProperty($name, $value, $parameters);
+$property = $vcard->addProperty($name, $value); //, $parameters);
 
 $line = count($vcard->children) - 1;
 
+// Apparently Sabre_VObject_Parameter doesn't do well with multiple values or I don't know how to do it. Tanghus.
+foreach ($parameters as $key=>$element) {
+	if(is_array($element) && strtoupper($key) == 'TYPE') { 
+		// FIXME: Maybe this doesn't only apply for TYPE?
+		// And it probably shouldn't be done here anyways :-/
+		foreach($element as $e){
+			if($e != '' && !is_null($e)){
+				$vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($key,$e);
+			}
+		}
+	}
+}
+
 OC_Contacts_VCard::edit($id,$vcard->serialize());
 
+$adr_types = OC_Contacts_App::getTypesOfProperty('ADR');
+$phone_types = OC_Contacts_App::getTypesOfProperty('TEL');
+
 $tmpl = new OC_Template('contacts','part.property');
+$tmpl->assign('adr_types',$adr_types);
+$tmpl->assign('phone_types',$phone_types);
 $tmpl->assign('property',OC_Contacts_VCard::structureProperty($property,$line));
 $page = $tmpl->fetchPage();
 
diff --git a/apps/contacts/templates/part.property.php b/apps/contacts/templates/part.property.php
index d930a9ca99db894ffee133aaa364cb621218637a..e401039750075cd357f8299c7093013a1383d46c 100644
--- a/apps/contacts/templates/part.property.php
+++ b/apps/contacts/templates/part.property.php
@@ -25,15 +25,14 @@
 			<?php echo $_['property']['value']; ?>
 			<?php if(isset($_['property']['parameters']['TYPE']) && !empty($_['property']['parameters']['TYPE'])): ?>
 <?php
-	$types = array();
-	foreach($_['property']['parameters']['TYPE'] as $type):
+	foreach($_['property']['parameters']['TYPE'] as $type) {
 		if (isset($_['phone_types'][strtoupper($type)])){
 			$types[]=$_['phone_types'][strtoupper($type)];
 		}
 		else{
 			$types[]=$l->t(ucwords(strtolower($type)));
 		}
-	endforeach;
+	}
 	$label = join(' ', $types);
 ?>
 				(<?php echo $label; ?>)
diff --git a/apps/contacts/templates/part.setpropertyform.php b/apps/contacts/templates/part.setpropertyform.php
index 8635d7db1ce5dc4438b51384e4f7135cbe25c647..3e0b8d49b528a83fca9c4852dd1250d302398879 100644
--- a/apps/contacts/templates/part.setpropertyform.php
+++ b/apps/contacts/templates/part.setpropertyform.php
@@ -45,7 +45,7 @@
 			<p class="contacts_property_name"><label for="tel"><?php echo $l->t('Phone'); ?></label></p>
 			<p class="contacts_property_data"><input id="tel" type="phone" name="value" value="<?php echo $_['property']['value'] ?>">
 				<select id="tel_type<?php echo $_['property']['checksum'] ?>" name="parameters[TYPE][]" multiple="multiple" data-placeholder="<?php echo $l->t('Type') ?>">
-					<?php echo html_select_options($_['phone_types'], isset($_['property']['parameters']['TYPE'])?$_['property']['parameters']['TYPE']:'') ?>
+					<?php echo html_select_options($_['phone_types'], isset($_['property']['parameters']['TYPE'])?$_['property']['parameters']['TYPE']:array()) ?>
 				</select></p>
 		<?php elseif($_['property']['name']=='EMAIL'): ?>
 			<p class="contacts_property_name"><label for="email"><?php echo $l->t('Email'); ?></label></p>