def UpdateUser(user, email, first_name, last_name, roles,alias=None):
		"""Update existing user within a given account.
		
		https://t3n.zendesk.com/entries/22454018-UpdateUser

		:param alias: short code for a particular account.  If none will use account's default alias
		:param user: user name, which is typically an email address
		:param email: email address.  Password credentials are emailed to this address on account creation
		:param first_name: first name
		:param last_name: surname
		:param roles: list of roles (ServerAdministrator, BillingManager, DNSManager, AccountAdministrator,  AccountViewer, NetworkManager, SecurityManager, ServerOperator)
		"""
		if alias is None:  alias = clc.v1.Account.GetAlias()
		payload = {'AccountAlias': alias, 'Roles': [] }
		if user is not None:  payload['UserName'] = user
		if email is not None:  payload['EmailAddress'] = email
		if first_name is not None:  payload['FirstName'] = first_name
		if last_name is not None:  payload['LastName'] = last_name
		if roles is not None:
			for role in roles:  payload['Roles'].append(User.user_role_stoi[role])
		r = clc.v1.API.Call('post','User/UpdateUser',payload)
		if int(r['StatusCode']) == 0:  
			r['UserDetails']['Roles'] = User._UserRoleList_itos(r['UserDetails']['Roles'])
			return(r['UserDetails'])