Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Try Dim oUserA As New User Dim oUserB As New User Dim oUserC As New User Dim oUserD As New User Dim oUsers06 As New Users06 With oUserA .UserID = "A" .UserName = "A Name" .UserAccessLevel = 4 .UserPassword = "A's Secret Password" oUsers06.Add(oUserA) End With With oUserB .UserID = "B" .UserName = "B Name" .UserAccessLevel = 4 .UserPassword = "B's Secret Password" oUsers06.Add(oUserB) End With With oUserC .UserID = "C" .UserName = "C Name" .UserAccessLevel = 4 .UserPassword = "C's Secret Password" oUsers06.Add(oUserC) End With With oUserD .UserID = "D" .UserName = "D Name" .UserAccessLevel = 4 .UserPassword = "D's Secret Password" oUsers06.Add(oUserD) End With 'Dim oWriter As TextWriter = New StreamWriter("C:\Users\Gary Hagerty\Documents\Visual Studio 2012\Projects\SerializationExample02\SerializationExample02\Users.XML") Dim oWriter As New StreamWriter("C:\Users\Gary Hagerty\Documents\Visual Studio 2012\Projects\SerializationExample02\SerializationExample02\Users06.XML") Dim oXMLSerialize As New XmlSerializer(GetType(Users06)) oXMLSerialize.Serialize(oWriter, oUsers06) oWriter.Close() Catch oError As Exception Dim sErrorString As String sErrorString = "Message ---" & oError.Message sErrorString = sErrorString & vbCrLf sErrorString = sErrorString & "HelpLink ---" & oError.HelpLink sErrorString = sErrorString & vbCrLf sErrorString = sErrorString & "Source ---" & oError.Source sErrorString = sErrorString & vbCrLf sErrorString = sErrorString & "StackTrace ---" & oError.StackTrace sErrorString = sErrorString & vbCrLf sErrorString = sErrorString & "TargetSite ---" & oError.TargetSite.ToString MessageBox.Show(sErrorString, "Error") End End Try End Sub The code for my collection is as follows: Public Class Users06 Implements IList Private moArray As ArrayList = New ArrayList() Public Sub CopyTo(ByVal array As Array, _ ByVal index As Integer) Implements ICollection.CopyTo moArray.CopyTo(array, index) End Sub Public ReadOnly Property Count As Integer Implements ICollection.Count Get Count = moArray.Count End Get End Property Public ReadOnly Property IsSynchronized As Boolean Implements ICollection.IsSynchronized Get Return False End Get End Property Public ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot Get Return Me End Get End Property Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator Return moArray.GetEnumerator() End Function Public Function Add(ByVal oUser As Object) As Integer Implements IList.Add moArray.Add(oUser) Return moArray.Count End Function Public Sub Clear() Implements IList.Clear moArray.Clear() End Sub Public Function Contains(ByVal oUser As Object) As Boolean Implements IList.Contains Contains = moArray.Contains(oUser) End Function Public Function IndexOf(ByVal oUser As Object) As Integer Implements IList.IndexOf IndexOf = moArray.IndexOf(oUser) End Function Public Sub Insert(ByVal iIndex As Integer, _ ByVal oUser As Object) Implements IList.Insert moArray.Insert(iIndex, oUser) End Sub Public ReadOnly Property IsFixedSize As Boolean Implements IList.IsFixedSize Get Return False End Get End Property Public ReadOnly Property IsReadOnly As Boolean Implements IList.IsReadOnly Get Return False End Get End Property Default Public Property Item(ByVal iIndex As Integer) As Object Implements IList.Item Get Return CType(moArray.Item(iIndex), User) End Get Set(oUser As Object) moArray.Item(iIndex) = oUser End Set End Property Public Sub Remove(ByVal oUser As Object) Implements IList.Remove moArray.Remove(oUser) End Sub Public Sub RemoveAt(ByVal iIndex As Integer) Implements IList.RemoveAt moArray.RemoveAt(iIndex) End Sub End Class The code for my class is as follows: Serializable() _ Public Class User Private miUserAccessLevel As Integer Private msUserID As String Private msUserName As String Private msUserPassword As String Public Property UserID() As String Get Return msUserID End Get Set(value As String) msUserID = value End Set End Property Public Property UserName() As String Get Return msUserName End Get Set(value As String) msUserName = value End Set End Property Public Property UserPassword() As String Get Return msUserPassword End Get Set(value As String) msUserPassword = value End Set End Property 'Public Property UserLoggedIn() As Boolean ' Get ' Return mbUserLoggedIn ' End Get ' Set(value As Boolean) ' mbUserLoggedIn = value ' End Set 'End Property Public Property UserAccessLevel() As Integer Get Return miUserAccessLevel End Get Set(value As Integer) miUserAccessLevel = value End Set End Property End ClassPlease advise