Index: /Include/Classes/System/IO/Stream.ab
===================================================================
--- /Include/Classes/System/IO/Stream.ab	(revision 111)
+++ /Include/Classes/System/IO/Stream.ab	(revision 112)
@@ -1,28 +1,32 @@
 
-Enum SeekOrigin
-	Begin
-	Current
-	End
-End Enum
+Class Stream
+Public
+	Virtual Function CanRead() As Boolean:	End Function
+	Virtual Function CanSeek() As Boolean:	End Function
+	Virtual Function CanTimeout() As Boolean:	End Function
+	Virtual Function CanWrite() As Boolean:	End Function
+	Virtual Function Length() As Int64:	End Function
+	Virtual Sub Position(value As Int64):	End Sub
+	Virtual Function Position() As Int64:	End Function
+	Virtual Sub ReadTimeout(value As Long):	End Sub
+	Virtual Function ReadTimeout() As Long:	End Function
+	Virtual Sub WriteTimeout(value As Long):	End Sub
+	Virtual Function WriteTimeout() As Long:	End Function
 
-Interface Stream
-	Function CanRead() As Boolean
-	Function CanSeek() As Boolean
-	Function CanTimeout() As Boolean
-	Function CanWrite() As Boolean
-	Function Length() As Int64
-	Sub Position(value As Int64)
-	Function Position() As Int64
-	Sub ReadTimeout(value As Long)
-	Function ReadTimeout() As Long
-	Sub WriteTimeout(value As Long)
-	Function WriteTimeout() As Long
-	Sub Close()
-	Sub Flush()
-	Function Read(ByRef buffer[] As Byte, offset As Long, count As Long) As Long
-	Function ReadByte() As Long
-	Function Seek(offset As Long, origin As SeekOrigin) As Long
-	Sub SetLength(value As Int64)
-	Sub Write (ByRef buffer[] As Byte, offset As Long, count As Long)
-	Sub WriteByte(value As Byte)
-End Interface
+Public
+	Virtual Function BeginRead(ByRef buffer[] As Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As IAsyncResult:	End Function
+	Virtual Function BeginWrite(ByRef buffer[] As Byte, offset As Long, count As Long, callback As AsyncCallback, state As Object) As IAsyncResult:	End Function
+	Virtual Sub Close():	End Sub
+	Virtual Function EndRead(ByRef asyncResult As IAsyncResult) As Long:	End Function
+	Virtual Sub EndWrite(ByRef asyncResult As IAsyncResult):	End Sub
+	Virtual Sub Flush():	End Sub
+	Virtual Function Read(ByRef buffer[] As Byte, offset As Long, count As Long) As Long:	End Function
+	Virtual Function ReadByte() As Long:	End Function
+	Virtual Function Seek(offset As Int64, origin As SeekOrigin) As Long:	End Function
+	Virtual Sub SetLength(value As Int64):	End Sub
+	Virtual Sub Write (ByRef buffer[] As Byte, offset As Long, count As Long):	End Sub
+	Virtual Sub WriteByte(value As Byte):	End Sub
+
+Protected
+	Virtual Function CreateWaitHandle() As WaitHandle:	End Function
+End Class
