diff --git a/Makefile.in b/Makefile.in
index 2ea4562..351a0c3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -39,6 +39,7 @@
 	dlls/psapi \
 	dlls/rasapi32 \
 	dlls/shell32 \
+	dlls/tapi32 \
 	dlls/ver \
 	dlls/version \
 	dlls/winaspi \
@@ -112,6 +113,7 @@
 	dlls/psapi/psapi.o \
 	dlls/rasapi32/rasapi32.o \
 	dlls/shell32/shell32.o \
+	dlls/tapi32/tapi32.o \
 	dlls/ver/ver.o \
 	dlls/version/version.o \
 	dlls/winaspi/winaspi.o \
diff --git a/configure b/configure
index d21293d..a83b473 100755
--- a/configure
+++ b/configure
@@ -4607,6 +4607,7 @@
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
 dlls/shell32/Makefile
+dlls/tapi32/Makefile
 dlls/ver/Makefile
 dlls/version/Makefile
 dlls/winaspi/Makefile
@@ -4769,6 +4770,7 @@
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
 dlls/shell32/Makefile
+dlls/tapi32/Makefile
 dlls/ver/Makefile
 dlls/version/Makefile
 dlls/winaspi/Makefile
diff --git a/configure.in b/configure.in
index 242d483..e2fa923 100644
--- a/configure.in
+++ b/configure.in
@@ -632,6 +632,7 @@
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
 dlls/shell32/Makefile
+dlls/tapi32/Makefile
 dlls/ver/Makefile
 dlls/version/Makefile
 dlls/winaspi/Makefile
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index dff6343..76cc186 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -9,6 +9,7 @@
 	ntdll \
 	psapi \
 	shell32 \
+	tapi32 \
 	ver \
 	version \
 	winaspi \
diff --git a/dlls/tapi32/.cvsignore b/dlls/tapi32/.cvsignore
new file mode 100644
index 0000000..f3c7a7c
--- /dev/null
+++ b/dlls/tapi32/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/dlls/tapi32/Makefile.in b/dlls/tapi32/Makefile.in
new file mode 100644
index 0000000..5c2c793
--- /dev/null
+++ b/dlls/tapi32/Makefile.in
@@ -0,0 +1,18 @@
+DEFS      = @DLLFLAGS@ -D__WINE__
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = tapi32
+
+C_SRCS = \
+	assisted.c \
+	line.c \
+	phone.c
+
+all: $(MODULE).o
+
+@MAKE_RULES@
+
+### Dependencies:
+
diff --git a/dlls/tapi32/assisted.c b/dlls/tapi32/assisted.c
new file mode 100644
index 0000000..429e4a3
--- /dev/null
+++ b/dlls/tapi32/assisted.c
@@ -0,0 +1,29 @@
+/*
+ * TAPI32 Assisted Telephony
+ *
+ * Copyright 1999  Andreas Mohr
+ */
+
+#include "winbase.h"
+#include "wintypes.h"
+#include "tapi.h"
+#include "debug.h"
+
+DWORD WINAPI tapiGetLocationInfo(LPSTR lpszCountryCode, LPSTR lpszCityCode)
+{
+    char temp[30];
+    
+    FIXME(tapi, "(%s, %s): file sections ???\n", lpszCountryCode, lpszCityCode);
+    if (!(GetPrivateProfileStringA("Locations", "CurrentLocation", "", temp, 30, "telephon.ini")))
+        return TAPIERR_REQUESTFAILED;
+    if (!(GetPrivateProfileStringA("Locations", "FIXME_ENTRY", "", lpszCityCode, 8, "telephon.ini"))) 
+        return TAPIERR_REQUESTFAILED;
+    return 0;
+}
+
+DWORD WINAPI tapiRequestMakeCall(LPCSTR lpszDestAddress, LPCSTR lpszAppName,
+                                 LPCSTR lpszCalledParty, LPCSTR lpszComment)
+{
+    FIXME(tapi, "(%s, %s, %s, %s): stub.\n", lpszDestAddress, lpszAppName, lpszCalledParty, lpszComment);
+    return 0;
+}
diff --git a/dlls/tapi32/line.c b/dlls/tapi32/line.c
new file mode 100644
index 0000000..8219052
--- /dev/null
+++ b/dlls/tapi32/line.c
@@ -0,0 +1,526 @@
+/*
+ * TAPI32 line services
+ *
+ * Copyright 1999  Andreas Mohr
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "winbase.h"
+#include "wintypes.h"
+#include "tapi.h"
+#include "debug.h"
+
+DWORD WINAPI lineAccept(HCALL hCall, LPCSTR lpsUserUserInfo, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %s, %ld): stub.\n", hCall, lpsUserUserInfo, dwSize);
+    return 1;
+}
+
+DWORD WINAPI lineAddProvider(LPCSTR lpszProviderName, HWND hwndOwner, LPDWORD lpdwPermanentProviderID)
+{
+    FIXME(tapi, "(%s, %04x, %p): stub.\n", lpszProviderName, hwndOwner, lpdwPermanentProviderID);
+    return 1;
+}	
+
+DWORD WINAPI lineAddToConference(HCALL hConfCall, HCALL hConsultCall)
+{
+    FIXME(tapi, "(%04x, %04x): stub.\n", hConfCall, hConsultCall);
+    return 1;
+}
+
+DWORD WINAPI lineAnswer(HCALL hCall, LPCSTR lpsUserUserInfo, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %s, %ld): stub.\n", hCall, lpsUserUserInfo, dwSize);
+    return 1;
+}	
+
+DWORD WINAPI lineBlindTransfer(HCALL hCall, LPCSTR lpszDestAddress, DWORD dwCountryCode)
+{
+    FIXME(tapi, "(%04x, %s, %08lx): stub.\n", hCall, lpszDestAddress, dwCountryCode);
+    return 1;
+}	
+
+DWORD WINAPI lineClose(HLINE hLine)
+{
+    FIXME(tapi, "(%04x): stub.\n", hLine);
+    return 0;
+}	
+
+DWORD WINAPI lineCompleteCall(HCALL hCall, LPDWORD lpdwCompletionID, DWORD dwCompletionMode, DWORD dwMessageID)
+{
+    FIXME(tapi, "(%04x, %p, %08lx, %08lx): stub.\n", hCall, lpdwCompletionID, dwCompletionMode, dwMessageID);
+    return 1;
+}	
+
+DWORD WINAPI lineCompleteTransfer(HCALL hCall, HCALL hConsultCall, LPHCALL lphConfCall, DWORD dwTransferMode)
+{
+    FIXME(tapi, "(%04x, %04x, %p, %08lx): stub.\n", hCall, hConsultCall, lphConfCall, dwTransferMode);
+    return 1;
+}
+
+DWORD WINAPI lineConfigDialog(DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDeviceClass)
+{
+    FIXME(tapi, "(%08lx, %04x, %s): stub.\n", dwDeviceID, hwndOwner, lpszDeviceClass);
+    return 0;
+}	
+
+DWORD WINAPI lineConfigDialogEdit(DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDeviceClass, LPVOID const lpDeviceConfigIn, DWORD dwSize, LPVARSTRING lpDeviceConfigOut)
+{
+    FIXME(tapi, "stub.\n");
+    return 0;
+}	
+
+DWORD WINAPI lineConfigProvider(HWND hwndOwner, DWORD dwPermanentProviderID)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hwndOwner, dwPermanentProviderID);
+    return 0;
+}
+
+DWORD WINAPI lineDeallocateCall(HCALL hCall)
+{
+    FIXME(tapi, "(%04x): stub.\n", hCall);
+    return 0;
+}
+
+DWORD WINAPI lineDevSpecific(HLINE hLine, DWORD dwAddressId, HCALL hCall, LPVOID lpParams, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %08lx, %04x, %p, %ld): stub.\n", hLine, dwAddressId, hCall, lpParams, dwSize);
+    return 1;
+}	
+
+DWORD WINAPI lineDevSpecificFeature(HLINE hLine, DWORD dwFeature, LPVOID lpParams, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %08lx, %p, %ld): stub.\n", hLine, dwFeature, lpParams, dwSize);
+    return 1;
+}
+
+DWORD WINAPI lineDial(HCALL hCall, LPCSTR lpszDestAddress, DWORD dwCountryCode)
+{
+    FIXME(tapi, "(%04x, %s, %08lx): stub.\n", hCall, lpszDestAddress, dwCountryCode);
+    return 1;
+}
+    
+DWORD WINAPI lineDrop(HCALL hCall, LPCSTR lpsUserUserInfo, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %s, %08lx): stub.\n", hCall, lpsUserUserInfo, dwSize);
+    return 1;
+}
+
+DWORD WINAPI lineForward(HLINE hLine, DWORD bAllAddress, DWORD dwAdressID, LPLINEFORWARDLIST lpForwardList, DWORD dwNumRingsNoAnswer, LPHCALL lphConsultCall, LPLINECALLPARAMS lpCallParams)
+{
+    FIXME(tapi, "stub.\n");
+    return 1;
+}	
+	
+DWORD WINAPI lineGatherDigits(HCALL hCall, DWORD dwDigitModes, LPSTR lpsDigits, DWORD dwNumDigits, LPCSTR lpszTerminationDigits, DWORD dwFirstDigitTimeout, DWORD dwInterDigitTimeout)
+{
+    FIXME(tapi, "stub.\n");
+    return 0;
+}
+
+DWORD WINAPI lineGenerateDigits(HCALL hCall, DWORD dwDigitModes, LPCSTR lpszDigits, DWORD dwDuration)
+{
+    FIXME(tapi, "(%04x, %08lx, %s, %ld): stub.\n", hCall, dwDigitModes, lpszDigits, dwDuration);
+    return 0;
+}
+
+DWORD WINAPI lineGenerateTone(HCALL hCall, DWORD dwToneMode, DWORD dwDuration, DWORD dwNumTones, LPLINEGENERATETONE lpTones)
+{
+    FIXME(tapi, "(%04x, %08lx, %ld, %ld, %p): stub.\n", hCall, dwToneMode, dwDuration, dwNumTones, lpTones);
+    return 0;
+}	
+
+DWORD WINAPI lineGetAddressCaps(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAddressID, DWORD dwAPIVersion, DWORD dwExtVersion, LPLINEADDRESSCAPS lpAddressCaps)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %08lx, %08lx, %p): stub.\n", hLineApp, dwDeviceID, dwAddressID, dwAPIVersion, dwExtVersion, lpAddressCaps);
+    return 0;
+}
+
+DWORD WINAPI lineGetAddressID(HLINE hLine, LPDWORD lpdwAddressID, DWORD dwAddressMode, LPCSTR lpsAddress, DWORD dwSize)
+{
+    FIXME(tapi, "%04x, %p, %08lx, %s, %ld): stub.\n", hLine, lpdwAddressID, dwAddressMode, lpsAddress, dwSize);
+    return 0;
+}
+
+DWORD WINAPI lineGetAddressStatus(HLINE hLine, DWORD dwAddressID, LPLINEADDRESSSTATUS lpAddressStatus)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hLine, dwAddressID, lpAddressStatus);
+    return 0;
+}	
+
+DWORD WINAPI lineGetAppPriority(LPCSTR lpszAppFilename, DWORD dwMediaMode, LPLINEEXTENSIONID const lpExtensionID, DWORD dwRequestMode, LPVARSTRING lpExtensionName, LPDWORD lpdwPriority)
+{
+    FIXME(tapi, "(%s, %08lx, %p, %08lx, %p, %p): stub.\n", lpszAppFilename, dwMediaMode, lpExtensionID, dwRequestMode, lpExtensionName, lpdwPriority);
+    return 0;
+}	
+
+DWORD WINAPI lineGetCallInfo(HCALL hCall, LPLINECALLINFO lpCallInfo)
+{
+    FIXME(tapi, "(%04x, %p): stub.\n", hCall, lpCallInfo);
+    return 0;
+}
+
+DWORD WINAPI lineGetCallStatus(HCALL hCall, LPLINECALLSTATUS lpCallStatus)
+{
+    FIXME(tapi, "(%04x, %p): stub.\n", hCall, lpCallStatus);
+    return 0;
+}
+
+DWORD WINAPI lineGetConfRelatedCalls(HCALL hCall, LPLINECALLLIST lpCallList)
+{
+    FIXME(tapi, "(%04x, %p): stub.\n", hCall, lpCallList);
+    return 0;
+}	
+
+DWORD WINAPI lineGetCountry(DWORD dwCountryID, DWORD dwAPIVersion, LPLINECOUNTRYLIST lpLineCountryList)
+{
+    FIXME(tapi, "(%08lx, %08lx, %p): stub.\n", dwCountryID, dwAPIVersion, lpLineCountryList);
+    return 0;
+}
+
+DWORD WINAPI lineGetDevCaps(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVersion, DWORD dwExtVersion, LPLINEDEVCAPS lpLineDevCaps)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %08lx, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion, dwExtVersion, lpLineDevCaps);
+    return 0;
+}	
+
+DWORD WINAPI lineGetDevConfig(DWORD dwDeviceID, LPVARSTRING lpDeviceConfig, LPCSTR lpszDeviceClass)
+{
+    FIXME(tapi, "(%08lx, %p, %s): stub.\n", dwDeviceID, lpDeviceConfig, lpszDeviceClass);
+    return 0;
+}
+
+DWORD WINAPI lineGetID(HLINE hLine, DWORD dwAddressID, HCALL hCall, DWORD dwSelect, LPVARSTRING lpDeviceID, LPCSTR lpszDeviceClass)
+{
+    FIXME(tapi, "(%04x, %08lx, %04x, %08lx, %p, %s): stub.\n", hLine, dwAddressID, hCall, dwSelect, lpDeviceID, lpszDeviceClass);
+    return 0;
+}
+
+DWORD WINAPI lineGetIcon(DWORD dwDeviceID, LPCSTR lpszDeviceClass, HICON *lphIcon)
+{
+    FIXME(tapi, "(%08lx, %s, %p): stub.\n", dwDeviceID, lpszDeviceClass, lphIcon);
+    return 0;
+}	
+
+DWORD WINAPI lineGetLineDevStatus(HLINE hLine, LPLINEDEVSTATUS lpLineDevStatus)
+{
+    FIXME(tapi, "(%04x, %p): stub.\n", hLine, lpLineDevStatus);
+    return 0;
+}	
+
+DWORD WINAPI lineGetNewCalls(HLINE hLine, DWORD dwAddressID, DWORD dwSelect, LPLINECALLLIST lpCallList)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %p): stub.\n", hLine, dwAddressID, dwSelect, lpCallList);
+    return 0;
+}
+
+
+DWORD WINAPI lineGetNumRings(HLINE hLine, DWORD dwAddressID, LPDWORD lpdwNumRings)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hLine, dwAddressID, lpdwNumRings);
+    return 0;
+}
+
+DWORD WINAPI lineGetProviderList(DWORD dwAPIVersion, LPLINEPROVIDERLIST lpProviderList)
+{
+    FIXME(tapi, "(%08lx, %p): stub.\n", dwAPIVersion, lpProviderList);
+    return 0;
+}	
+
+DWORD WINAPI lineGetRequest(HLINEAPP hLineApp, DWORD dwRequestMode, LPVOID lpRequestBuffer)
+{
+    FIXME(tapi, "%04x, %08lx, %p): stub.\n", hLineApp, dwRequestMode, lpRequestBuffer);
+    return 0;
+}	
+
+DWORD WINAPI lineGetStatusMessages(HLINE hLine, LPDWORD lpdwLineStatus, LPDWORD lpdwAddressStates)
+{
+    FIXME(tapi, "(%04x, %p, %p): stub.\n", hLine, lpdwLineStatus, lpdwAddressStates);
+    return 0;
+}	
+
+DWORD WINAPI lineGetTranslateCaps(HLINEAPP hLineApp, DWORD dwAPIVersion, LPLINETRANSLATECAPS lpTranslateCaps)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hLineApp, dwAPIVersion, lpTranslateCaps);
+    return 0;
+}
+
+DWORD WINAPI lineHandoff(HCALL hCall, LPCSTR lpszFileName, DWORD dwMediaMode)
+{
+    FIXME(tapi, "(%04x, %s, %08lx): stub.\n", hCall, lpszFileName, dwMediaMode);
+    return 0;
+}	
+
+DWORD WINAPI lineHold(HCALL hCall)
+{
+    FIXME(tapi, "(%04x): stub.\n", hCall);
+    return 1;
+}	
+
+DWORD WINAPI lineInitialize(
+  LPHLINEAPP lphLineApp,
+  HINSTANCE hInstance,
+  LINECALLBACK lpfnCallback,
+  LPCSTR lpszAppName,
+  LPDWORD lpdwNumDevs)
+{
+    FIXME(comm, "stub.\n");
+    return 0;
+}
+
+DWORD WINAPI lineMakeCall(HLINE hLine, LPHCALL lphCall, LPCSTR lpszDestAddress, DWORD dwCountryCode, LPLINECALLPARAMS lpCallParams)
+{
+    FIXME(tapi, "(%04x, %p, %s, %08lx, %p): stub.\n", hLine, lphCall, lpszDestAddress, dwCountryCode, lpCallParams);
+    return 1;
+}
+
+DWORD WINAPI lineMonitorDigits(HCALL hCall, DWORD dwDigitModes)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hCall, dwDigitModes);
+    return 0;
+}
+
+DWORD WINAPI lineMonitorMedia(HCALL hCall, DWORD dwMediaModes)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hCall, dwMediaModes);
+    return 0;
+}	
+
+DWORD WINAPI lineMonitorTones(HCALL hCall, LPLINEMONITORTONE lpToneList, DWORD dwNumEntries)
+{
+    FIXME(tapi, "(%04x, %p, %08lx): stub.\n", hCall, lpToneList, dwNumEntries);
+    return 0;
+}	
+
+DWORD WINAPI lineNegotiateAPIVersion(
+  HLINEAPP hLineApp,
+  DWORD dwDeviceID,
+  DWORD dwAPILowVersion,
+  DWORD dwAPIHighVersion,
+  LPDWORD lpdwAPIVersion,
+  LPLINEEXTENSIONID lpExtensionID
+)
+{
+    FIXME(comm, "stub.\n");
+    *lpdwAPIVersion = dwAPIHighVersion;
+    return 0;
+}
+
+DWORD WINAPI lineNegotiateExtVersion(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVersion, DWORD dwExtLowVersion, DWORD dwExtHighVersion, LPDWORD lpdwExtVersion)
+{
+    FIXME(tapi, "stub.\n");
+    return 0;
+}
+
+DWORD WINAPI lineOpen(HLINEAPP hLineApp, DWORD dwDeviceID, LPHLINE lphLine, DWORD dwAPIVersion, DWORD dwExtVersion, DWORD dwCallbackInstance, DWORD dwPrivileges, DWORD dwMediaModes, LPLINECALLPARAMS lpCallParams)
+{
+    FIXME(tapi, "stub.\n");
+    return 0;
+}
+
+DWORD WINAPI linePark(HCALL hCall, DWORD dwParkMode, LPCSTR lpszDirAddress, LPVARSTRING lpNonDirAddress)
+{
+    FIXME(tapi, "(%04x, %08lx, %s, %p): stub.\n", hCall, dwParkMode, lpszDirAddress, lpNonDirAddress);
+    return 1;
+}	
+
+DWORD WINAPI linePickup(HLINE hLine, DWORD dwAddressID, LPHCALL lphCall, LPCSTR lpszDestAddress, LPCSTR lpszGroupID)
+{
+    FIXME(tapi, "(%04x, %08lx, %p, %s, %s): stub.\n", hLine, dwAddressID, lphCall, lpszDestAddress, lpszGroupID);
+    return 1;
+}	
+
+DWORD WINAPI linePrepareAddToConference(HCALL hConfCall, LPHCALL lphConsultCall, LPLINECALLPARAMS lpCallParams)
+{
+    FIXME(tapi, "(%04x, %p, %p): stub.\n", hConfCall, lphConsultCall, lpCallParams);
+    return 1;
+}	
+
+/*************************************************************************
+ * lineRedirect [TAPI32.53]
+ * 
+ */
+DWORD WINAPI lineRedirect(
+  HCALL hCall,
+  LPCSTR lpszDestAddress,
+  DWORD  dwCountryCode) {
+
+  FIXME(comm, ": stub.\n");
+  return 1;
+}
+
+DWORD WINAPI lineRegisterRequestRecipient(HLINEAPP hLineApp, DWORD dwRegistrationInstance, DWORD dwRequestMode, DWORD dwEnable)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %08lx): stub.\n", hLineApp, dwRegistrationInstance, dwRequestMode, dwEnable);
+    return 1;
+}
+
+DWORD WINAPI lineReleaseUserUserInfo(HCALL hCall)
+{
+    FIXME(tapi, "(%04x): stub.\n", hCall);
+    return 1;
+}	
+
+DWORD WINAPI lineRemoveFromConference(HCALL hCall)
+{
+    FIXME(tapi, "(%04x): stub.\n", hCall);
+    return 1;
+}
+
+DWORD WINAPI lineRemoveProvider(DWORD dwPermanentProviderID, HWND hwndOwner)
+{
+    FIXME(tapi, "(%08lx, %04x): stub.\n", dwPermanentProviderID, hwndOwner);
+    return 1;
+}	
+
+DWORD WINAPI lineSecureCall(HCALL hCall)
+{
+    FIXME(tapi, "(%04x): stub.\n", hCall);
+    return 1;
+}
+
+DWORD WINAPI lineSendUserUserInfo(HCALL hCall, LPCSTR lpsUserUserInfo, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %s, %08lx): stub.\n", hCall, lpsUserUserInfo, dwSize);
+    return 1;
+}
+
+DWORD WINAPI lineSetAppPriority(LPCSTR lpszAppFilename, DWORD dwMediaMode, LPLINEEXTENSIONID const lpExtensionID, DWORD dwRequestMode, LPCSTR lpszExtensionName, DWORD dwPriority)
+{
+    FIXME(tapi, "(%s, %08lx, %p, %08lx, %s, %08lx): stub.\n", lpszAppFilename, dwMediaMode, lpExtensionID, dwRequestMode, lpszExtensionName, dwPriority);
+    return 0;
+}
+
+DWORD WINAPI lineSetAppSpecific(HCALL hCall, DWORD dwAppSpecific)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hCall, dwAppSpecific);
+    return 0;
+}
+
+DWORD WINAPI lineSetCallParams(HCALL hCall, DWORD dwBearerMode, DWORD dwMinRate, DWORD dwMaxRate, LPLINEDIALPARAMS lpDialParams)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %08lx, %p): stub.\n", hCall, dwBearerMode, dwMinRate, dwMaxRate, lpDialParams);
+    return 1;
+}
+
+DWORD WINAPI lineSetCallPrivilege(HCALL hCall, DWORD dwCallPrivilege)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hCall, dwCallPrivilege);
+    return 0;
+}	
+		
+DWORD WINAPI lineSetCurrentLocation(HLINEAPP hLineApp, DWORD dwLocation)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hLineApp, dwLocation);
+    return 0;
+}
+
+DWORD WINAPI lineSetDevConfig(DWORD dwDeviceID, LPVOID lpDeviceConfig, DWORD dwSize, LPCSTR lpszDeviceClass)
+{
+    FIXME(tapi, "(%0lx, %p, %08lx, %s): stub.\n", dwDeviceID, lpDeviceConfig, dwSize, lpszDeviceClass);
+    return 0;
+}
+
+DWORD WINAPI lineSetMediaControl(
+HLINE hLine,
+DWORD dwAddressID,
+HCALL hCall,
+DWORD dwSelect,
+LPLINEMEDIACONTROLDIGIT const lpDigitList,
+DWORD dwDigitNumEntries,
+LPLINEMEDIACONTROLMEDIA const lpMediaList,
+DWORD dwMediaNumEntries,
+LPLINEMEDIACONTROLTONE const lpToneList, 
+DWORD dwToneNumEntries,
+LPLINEMEDIACONTROLCALLSTATE const lpCallStateList,
+DWORD dwCallStateNumEntries)
+{
+    FIXME(tapi, ": stub.\n");
+    return 0;
+}
+
+DWORD WINAPI lineSetMediaMode(HCALL hCall, DWORD dwMediaModes)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hCall, dwMediaModes);
+    return 0;
+}	
+
+DWORD WINAPI lineSetNumRings(HLINE hLine, DWORD dwAddressID, DWORD dwNumRings)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx): stub.\n", hLine, dwAddressID, dwNumRings);
+    return 0;
+}	
+		
+DWORD WINAPI lineSetStatusMessages(HLINE hLine, DWORD dwLineStates, DWORD dwAddressStates)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx): stub.\n", hLine, dwLineStates, dwAddressStates);
+    return 0;
+}	
+		
+DWORD WINAPI lineSetTerminal(HLINE hLine, DWORD dwAddressID, HCALL hCall, DWORD dwSelect, DWORD dwTerminalModes, DWORD dwTerminalID, DWORD bEnable)
+{
+    FIXME(tapi, "(%04x, %08lx, %04x, %08lx, %08lx, %08lx, %08lx): stub.\n", hLine, dwAddressID, hCall, dwSelect, dwTerminalModes, dwTerminalID, bEnable);
+    return 1;
+}	
+
+DWORD WINAPI lineSetTollList(HLINEAPP hLineApp, DWORD dwDeviceID, LPCSTR lpszAddressIn, DWORD dwTollListOption)
+{
+    FIXME(tapi, "(%04x, %08lx, %s, %08lx): stub.\n", hLineApp, dwDeviceID, lpszAddressIn, dwTollListOption);
+    return 0;
+}	
+		
+DWORD WINAPI lineSetupConference(HCALL hCall, HLINE hLine, LPHCALL lphConfCall, LPHCALL lphConsultCall, DWORD dwNumParties, LPLINECALLPARAMS lpCallParams)
+{
+    FIXME(tapi, "(%04x, %04x, %p, %p, %08lx, %p): stub.\n", hCall, hLine, lphConfCall, lphConsultCall, dwNumParties, lpCallParams);
+    return 1;
+}
+
+DWORD WINAPI lineSetupTransfer(HCALL hCall, LPHCALL lphConsultCall, LPLINECALLPARAMS lpCallParams)
+{
+    FIXME(tapi, "(%04x, %p, %p): stub.\n", hCall, lphConsultCall, lpCallParams);
+    return 1;
+}	
+
+DWORD WINAPI lineShutdown(HLINEAPP hLineApp)
+{
+    FIXME(tapi, "(%04x): stub.\n", hLineApp);
+    return 0;
+}
+
+DWORD WINAPI lineSwapHold(HCALL hActiveCall, HCALL hHeldCall)
+{
+    FIXME(tapi, "(active: %04x, held: %04x): stub.\n", hActiveCall, hHeldCall);
+    return 1;
+}
+
+DWORD WINAPI lineTranslateAddress(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVersion, LPCSTR lpszAddressIn, DWORD dwCard, DWORD dwTranslateOptions, LPLINETRANSLATEOUTPUT lpTranslateOutput)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %s, %08lx, %08lx, %p): stub.\n", hLineApp, dwDeviceID, dwAPIVersion, lpszAddressIn, dwCard, dwTranslateOptions, lpTranslateOutput);
+    return 0;
+}
+
+DWORD WINAPI lineTranslateDialog(HLINEAPP hLineApp, DWORD dwDeviceID, DWORD dwAPIVersion, HWND hwndOwner, LPCSTR lpszAddressIn)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %04x, %s): stub.\n", hLineApp, dwDeviceID, dwAPIVersion, hwndOwner, lpszAddressIn);
+    return 0;
+}
+
+DWORD WINAPI lineUncompleteCall(HLINE hLine, DWORD dwCompletionID)
+{
+    FIXME(tapi, "(%04x, %08lx): stub.\n", hLine, dwCompletionID);
+    return 1;
+}
+
+DWORD WINAPI lineUnHold(HCALL hCall)
+{
+    FIXME(tapi, "(%04x): stub.\n", hCall);
+    return 1;
+}
+
+DWORD WINAPI lineUnpark(HLINE hLine, DWORD dwAddressID, LPHCALL lphCall, LPCSTR lpszDestAddress)
+{
+    FIXME(tapi, "(%04x, %08lx, %p, %s): stub.\n", hLine, dwAddressID, lphCall, lpszDestAddress);
+    return 1;
+}	
diff --git a/dlls/tapi32/phone.c b/dlls/tapi32/phone.c
new file mode 100644
index 0000000..0a92cbf
--- /dev/null
+++ b/dlls/tapi32/phone.c
@@ -0,0 +1,206 @@
+/*
+ * TAPI32 phone services
+ *
+ * Copyright 1999  Andreas Mohr
+ */
+
+#include "winbase.h"
+#include "wintypes.h"
+#include "tapi.h"
+#include "debug.h"
+
+static LPPHONE PHONE_Alloc(void)
+{
+}
+
+static LPPHONE PHONE_Get(HPHONE hPhone)
+{	
+}
+
+DWORD WINAPI phoneClose(HPHONE hPhone)
+{
+    FIXME(tapi, "(%04x), stub.\n", hPhone);
+    return 0;
+}
+
+DWORD WINAPI phoneConfigDialog(DWORD dwDeviceID, HWND hwndOwner, LPCSTR lpszDeviceClass)
+{
+    FIXME(tapi, "(%08lx, %04x, %s): stub.\n", dwDeviceID, hwndOwner, lpszDeviceClass);
+    return 0;
+}
+
+DWORD WINAPI phoneDevSpecific(HPHONE hPhone, LPVOID lpParams, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %p, %08ld): stub.\n", hPhone, lpParams, dwSize);
+    return 1;
+}
+
+DWORD WINAPI phoneGetButtonInfo(HPHONE hPhone, DWORD dwButtonLampID,
+                                LPPHONEBUTTONINFO lpButtonInfo)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hPhone, dwButtonLampID, lpButtonInfo);
+    return 0;
+}
+
+DWORD WINAPI phoneGetData(HPHONE hPhone, DWORD dwDataID, LPVOID lpData, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %08ld, %p, %08ld): stub.\n", hPhone, dwDataID, lpData, dwSize);
+    return 0;
+}
+
+DWORD WINAPI phoneGetDevCaps(HPHONEAPP hPhoneApp, DWORD dwDeviceID,
+               DWORD dwAPIVersion, DWORD dwExtVersion, LPPHONECAPS lpPhoneCaps)
+{
+    FIXME(tapi, "(%04x, %08ld, %08lx, %08lx, %p): stub.\n", hPhoneApp, dwDeviceID, dwAPIVersion, dwExtVersion, lpPhoneCaps);
+    return 0;
+}
+
+DWORD WINAPI phoneGetDisplay(HPHONE hPhone, LPVARSTRING lpDisplay)
+{
+    FIXME(tapi, "(%04x, %p): stub.\n", hPhone, lpDisplay);
+    return 0;
+}
+
+DWORD WINAPI phoneGetGain(HPHONE hPhone, DWORD dwHookSwitchDev, LPDWORD lpdwGain)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hPhone, dwHookSwitchDev, lpdwGain);
+    return 0;
+}	
+		
+DWORD WINAPI phoneGetHookSwitch(HPHONE hPhone, LPDWORD lpdwHookSwitchDevs)
+{
+   FIXME(tapi, "(%04x, %p): stub.\n", hPhone, lpdwHookSwitchDevs);
+   return 0;
+}
+
+DWORD WINAPI phoneGetID(HPHONE hPhone, LPVARSTRING lpDeviceID,
+                        LPCSTR lpszDeviceClass)
+{
+    FIXME(tapi, "(%04x, %p, %s): stub.\n", hPhone, lpDeviceID, lpszDeviceClass);    return 0;
+}
+
+DWORD WINAPI phoneGetIcon(DWORD dwDeviceID, LPCSTR lpszDeviceClass,
+		          HICON *lphIcon)
+{
+    FIXME(tapi, "(%08lx, %s, %p): stub.\n", dwDeviceID, lpszDeviceClass, lphIcon);
+    return 0;
+}
+
+DWORD WINAPI phoneGetLamp(HPHONE hPhone, DWORD dwButtonLampID,
+		          LPDWORD lpdwLampMode)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hPhone, dwButtonLampID, lpdwLampMode);
+    return 0;
+}
+
+DWORD WINAPI phoneGetRing(HPHONE hPhone, LPDWORD lpdwRingMode, LPDWORD lpdwVolume)
+{
+    FIXME(tapi, "(%04x, %p, %p): stub.\n", hPhone, lpdwRingMode, lpdwVolume);
+    return 0;
+}
+
+DWORD WINAPI phoneGetStatus(HPHONE hPhone, LPPHONESTATUS lpPhoneStatus)
+{
+    FIXME(tapi, "(%04x, %p): stub.\n", hPhone, lpPhoneStatus);
+    return 0;
+}
+
+DWORD WINAPI phoneGetStatusMessages(HPHONE hPhone, LPDWORD lpdwPhoneStates,
+		          LPDWORD lpdwButtonModes, LPDWORD lpdwButtonStates)
+{
+    FIXME(tapi, "(%04x, %p, %p, %p): stub.\n", hPhone, lpdwPhoneStates, lpdwButtonModes, lpdwButtonStates);
+    return 0;
+}
+
+DWORD WINAPI phoneGetVolume(HPHONE hPhone, DWORD dwHookSwitchDevs,
+		            LPDWORD lpdwVolume)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hPhone, dwHookSwitchDevs, lpdwVolume);
+    return 0;
+}
+
+DWORD WINAPI phoneInitialize(LPHPHONEAPP lphPhoneApp, HINSTANCE hInstance, PHONECALLBACK lpfnCallback, LPCSTR lpszAppName, LPDWORD lpdwNumDevs)
+{
+    FIXME(tapi, "(%p, %04x, %p, %s, %p): stub.\n", lphPhoneApp, hInstance, lpfnCallback, lpszAppName, lpdwNumDevs);
+    return 0;
+}
+
+DWORD WINAPI phoneNegotiateAPIVersion(HPHONEAPP hPhoneApp, DWORD dwDeviceID, DWORD dwAPILowVersion, DWORD dwAPIHighVersion, LPDWORD lpdwAPIVersion, LPPHONEEXTENSIONID lpExtensionID)
+{
+    FIXME(tapi, "(): stub.\n");
+    return 0;
+}
+
+DWORD WINAPI phoneNegotiateExtVersion(HPHONEAPP hPhoneApp, DWORD dwDeviceID,
+		                 DWORD dwAPIVersion, DWORD dwExtLowVersion,
+				 DWORD dwExtHighVersion, LPDWORD lpdwExtVersion)
+{
+    FIXME(tapi, "(): stub.\n");
+    return 0;
+}
+
+DWORD WINAPI phoneOpen(HPHONEAPP hPhoneApp, DWORD dwDeviceID, LPHPHONE lphPhone, DWORD dwAPIVersion, DWORD dwExtVersion, DWORD dwCallbackInstance, DWORD dwPrivileges)
+{
+    FIXME(tapi, "(): stub.\n");
+    return 0;
+}
+
+DWORD WINAPI phoneSetButtonInfo(HPHONE hPhone, DWORD dwButtonLampID, LPPHONEBUTTONINFO lpButtonInfo)
+{
+    FIXME(tapi, "(%04x, %08lx, %p): stub.\n", hPhone, dwButtonLampID, lpButtonInfo);
+    return 0;
+}
+
+DWORD WINAPI phoneSetData(HPHONE hPhone, DWORD dwDataID, LPVOID lpData, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, %08lx, %p, %ld): stub.\n", hPhone, dwDataID, lpData, dwSize);
+    return 1;
+}
+
+DWORD WINAPI phoneSetDisplay(HPHONE hPhone, DWORD dwRow, DWORD dwColumn, LPCSTR lpszDisplay, DWORD dwSize)
+{
+    FIXME(tapi, "(%04x, '%s' at %ld/%ld, len %ld): stub.\n", hPhone, lpszDisplay, dwRow, dwColumn, dwSize);
+    return 1;
+}
+
+DWORD WINAPI phoneSetGain(HPHONE hPhone, DWORD dwHookSwitchDev, DWORD dwGain)
+{
+    FIXME(tapi, "(%04x, %08lx, %ld): stub.\n", hPhone, dwHookSwitchDev, dwGain);
+    return 1;
+}
+
+DWORD WINAPI phoneSetHookSwitch(HPHONE hPhone, DWORD dwHookSwitchDevs, DWORD dwHookSwitchMode)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx): stub.\n", hPhone, dwHookSwitchDevs, dwHookSwitchMode);
+    return 1;
+}
+
+DWORD WINAPI phoneSetLamp(HPHONE hPhone, DWORD dwButtonLampID, DWORD lpdwLampMode)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx): stub.\n", hPhone, dwButtonLampID, lpdwLampMode);
+    return 1;
+}
+
+DWORD WINAPI phoneSetRing(HPHONE hPhone, DWORD dwRingMode, DWORD dwVolume)
+{
+    FIXME(tapi, "(%04x, %08lx, %08ld): stub.\n", hPhone, dwRingMode, dwVolume);
+    return 1;
+}
+
+DWORD WINAPI phoneSetStatusMessages(HPHONE hPhone, DWORD dwPhoneStates, DWORD dwButtonModes, DWORD dwButtonStates)
+{
+    FIXME(tapi, "(%04x, %08lx, %08lx, %08lx): stub.\n", hPhone, dwPhoneStates, dwButtonModes, dwButtonStates);
+    return 0; /* FIXME ? */
+}
+
+DWORD WINAPI phoneSetVolume(HPHONE hPhone, DWORD dwHookSwitchDev, DWORD dwVolume)
+{
+    FIXME(tapi, "(%04x, %08lx, %08ld): stub.\n", hPhone, dwHookSwitchDev, dwVolume);
+    return 1;
+}
+
+DWORD WINAPI phoneShutdown(HPHONEAPP hPhoneApp)
+{
+    FIXME(tapi, "(%04x): stub.\n", hPhoneApp);
+    return 0;
+}
diff --git a/include/debug.h b/include/debug.h
index f129e3e..8dc8908 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -131,33 +131,34 @@
 #define dbch_syscolor 123
 #define dbch_system 124
 #define dbch_tab 125
-#define dbch_task 126
-#define dbch_text 127
-#define dbch_thread 128
-#define dbch_thunk 129
-#define dbch_timer 130
-#define dbch_toolbar 131
-#define dbch_toolhelp 132
-#define dbch_tooltips 133
-#define dbch_trackbar 134
-#define dbch_treeview 135
-#define dbch_ttydrv 136
-#define dbch_tweak 137
-#define dbch_uitools 138
-#define dbch_unknown 139
-#define dbch_updown 140
-#define dbch_ver 141
-#define dbch_virtual 142
-#define dbch_vxd 143
-#define dbch_wave 144
-#define dbch_win 145
-#define dbch_win16drv 146
-#define dbch_win32 147
-#define dbch_wing 148
-#define dbch_winsock 149
-#define dbch_wnet 150
-#define dbch_x11 151
-#define dbch_x11drv 152
+#define dbch_tapi 126
+#define dbch_task 127
+#define dbch_text 128
+#define dbch_thread 129
+#define dbch_thunk 130
+#define dbch_timer 131
+#define dbch_toolbar 132
+#define dbch_toolhelp 133
+#define dbch_tooltips 134
+#define dbch_trackbar 135
+#define dbch_treeview 136
+#define dbch_ttydrv 137
+#define dbch_tweak 138
+#define dbch_uitools 139
+#define dbch_unknown 140
+#define dbch_updown 141
+#define dbch_ver 142
+#define dbch_virtual 143
+#define dbch_vxd 144
+#define dbch_wave 145
+#define dbch_win 146
+#define dbch_win16drv 147
+#define dbch_win32 148
+#define dbch_wing 149
+#define dbch_winsock 150
+#define dbch_wnet 151
+#define dbch_x11 152
+#define dbch_x11drv 153
 /* Definitions for classes identifiers */
 #define dbcl_fixme 0
 #define dbcl_err 1
diff --git a/include/debugdefs.h b/include/debugdefs.h
index 9f9ad39..2e5b986 100644
--- a/include/debugdefs.h
+++ b/include/debugdefs.h
@@ -4,7 +4,7 @@
 #include "debugtools.h"
 #endif
 
-#define DEBUG_CHANNEL_COUNT 153
+#define DEBUG_CHANNEL_COUNT 154
 #ifdef DEBUG_RUNTIME
 short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
 {1, 1, 0, 0},
@@ -160,6 +160,7 @@
 {1, 1, 0, 0},
 {1, 1, 0, 0},
 {1, 1, 0, 0},
+{1, 1, 0, 0},
 };
 const char* debug_ch_name[] = {
 "accel",
@@ -288,6 +289,7 @@
 "syscolor",
 "system",
 "tab",
+"tapi",
 "task",
 "text",
 "thread",
diff --git a/include/tapi.h b/include/tapi.h
new file mode 100644
index 0000000..a404941
--- /dev/null
+++ b/include/tapi.h
@@ -0,0 +1,626 @@
+/*
+ * TAPI definitions
+ * 
+ * Copyright (c) 1999 Andreas Mohr
+ */
+
+#ifndef __WINE_TAPI_H
+#define __WINE_TAPI_H
+
+#include "windef.h"
+
+typedef HANDLE HCALL, *LPHCALL;
+typedef HANDLE HLINE, *LPHLINE;
+typedef HANDLE HLINEAPP, *LPHLINEAPP;
+typedef HANDLE HPHONE, *LPHPHONE;
+typedef HANDLE HPHONEAPP, *LPHPHONEAPP;
+
+/* FIXME: bogus codes !! */
+#define TAPIERR_REQUESTFAILED   20
+
+typedef struct lineaddresscaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwLineDeviceID;
+    DWORD dwAddressSize;
+    DWORD dwAddressOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwAddressSharing;
+    DWORD dwAddressStates;
+    DWORD dwCallInfoStates;
+    DWORD dwCallerIDFlags;
+    DWORD dwCalledIDFlags;
+    DWORD dwConnectedIDFlags;
+    DWORD dwRedirectionIDFlags;
+    DWORD dwRedirectingIDFlags;
+    DWORD dwCallStates;
+    DWORD dwDialToneModes;
+    DWORD dwBusyModes;
+    DWORD dwSpecialInfo;
+    DWORD dwDisconnectModes;
+    DWORD dwMaxNumActiveCalls;
+    DWORD dwMaxNumOnHoldCalls;
+    DWORD dwMaxNumOnHoldPendingCalls;
+    DWORD dwMaxNumConference;
+    DWORD dwMaxNumTransConf;
+    DWORD dwAddrCapFlags;
+    DWORD dwCallFeatures;
+    DWORD dwRemoveFromConfCaps;
+    DWORD dwRemoveFromConfState;
+    DWORD dwTransferModes;
+    DWORD dwParkModes;
+    DWORD dwForwardModes;
+    DWORD dwMaxForwardEntries;
+    DWORD dwMaxSpecificEntries;
+    DWORD dwMinFwdNumRings;
+    DWORD dwMaxFwdNumRings;
+    DWORD dwMaxCallCompletions;
+    DWORD dwCallCompletionConds;
+    DWORD dwCallCompletionModes;
+    DWORD dwNumCompletionMessages;
+    DWORD dwCompletionMsgTextEntrySize;
+    DWORD dwCompletionMsgTextSize;
+    DWORD dwCompletionMsgTextOffset;
+    DWORD dwAddressFeatures;
+} LINEADDRESSCAPS, *LPLINEADDRESSCAPS;
+
+typedef struct lineaddressstatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumInUse;
+    DWORD dwNumActiveCalls;
+    DWORD dwNumOnHoldCalls;
+    DWORD dwNumOnHoldPendCalls;
+    DWORD dwAddressFeatures;
+    DWORD dwNumRingsNoAnswer;
+    DWORD dwForwardNumEntries;
+    DWORD dwForwardSize;
+    DWORD dwForwardOffset;
+    DWORD dwTerminalModesSize;
+    DWORD dwTerminalModesOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINEADDRESSSTATUS, *LPLINEADDRESSSTATUS;
+
+typedef struct linedialparams_tag {
+    DWORD dwDialPause;
+    DWORD dwDialSpeed;
+    DWORD dwDigitDuration;
+    DWORD dwWaitForDialtone;
+} LINEDIALPARAMS, *LPLINEDIALPARAMS;
+
+typedef struct linecallinfo_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    HLINE hLine;
+    DWORD dwLineDeviceID;
+    DWORD dwAddressID;
+    DWORD dwBearerMode;
+    DWORD dwRate;
+    DWORD dwMediaMode;
+    DWORD dwAppSpecific;
+    DWORD dwCallID;
+    DWORD dwRelatedCallID;
+    DWORD dwCallParamFlags;
+    DWORD dwCallStates;
+    DWORD dwMonitorDigitModes;
+    DWORD dwMonitorMediaModes;
+    LINEDIALPARAMS DialParams;
+    DWORD dwOrigin;
+    DWORD dwReason;
+    DWORD dwCompletionID;
+    DWORD dwNumOwners;
+    DWORD dwNumMonitors;
+    DWORD dwCountryCode;
+    DWORD dwTrunk;
+    DWORD dwCallerIDFlags;
+    DWORD dwCallerIDSize;
+    DWORD dwCallerIDOffset;
+    DWORD dwCallerIDNameSize;
+    DWORD dwCallerIDNameOffset;
+    DWORD dwCalledIDFlags;
+    DWORD dwCalledIDSize;
+    DWORD dwCalledIDOffset;
+    DWORD dwCalledIDNameSize;
+    DWORD dwCalledIDNameOffset;
+    DWORD dwConnectedIDFlags;
+    DWORD dwConnectedIDSize;
+    DWORD dwConnectedIDOffset;
+    DWORD dwConnectedIDNameSize;
+    DWORD dwConnectedIDNameOffset;
+    DWORD dwRedirectionIDFlags;
+    DWORD dwRedirectionIDSize;
+    DWORD dwRedirectionIDOffset;
+    DWORD dwRedirectionIDNameSize;
+    DWORD dwRedirectionIDNameOffset;
+    DWORD dwRedirectingIDFlags;
+    DWORD dwRedirectingIDSize;
+    DWORD dwRedirectingIDOffset;
+    DWORD dwRedirectingIDNameSize;
+    DWORD dwRedirectingIDNameOffset;
+    DWORD dwAppNameSize;
+    DWORD dwAppNameOffset;
+    DWORD dwDisplayableAddressSize;
+    DWORD dwDisplayableAddressOffset;
+    DWORD dwCalledPartySize;
+    DWORD dwCalledPartyOffset;
+    DWORD dwCommentSize;
+    DWORD dwCommentOffset;
+    DWORD dwDisplaySize;
+    DWORD dwDisplayOffset;
+    DWORD dwUserUserInfoSize;
+    DWORD dwUserUserInfoOffset;
+    DWORD dwHighLevelCompSize;
+    DWORD dwHighLevelCompOffset;
+    DWORD dwLowLevelCompSize;
+    DWORD dwLowLevelCompOffset;
+    DWORD dwChargingInfoSize;
+    DWORD dwChargingInfoOffset;
+    DWORD dwTerminalModesSize;
+    DWORD dwTerminalModesOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINECALLINFO, *LPLINECALLINFO;
+
+typedef struct linecalllist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwCallsNumEntries;
+    DWORD dwCallsSize;
+    DWORD dwCallsOffset;
+} LINECALLLIST, *LPLINECALLLIST;
+
+typedef struct linecallparams_tag {
+    DWORD dwTotalSize;
+    DWORD dwBearerMode;
+    DWORD dwMinRate;
+    DWORD dwMaxRate;
+    DWORD dwMediaMode;
+    DWORD dwCallParamFlags;
+    DWORD dwAddressMode;
+    DWORD dwAddressID;
+    LINEDIALPARAMS DialParams;
+    DWORD dwOrigAddressSize;
+    DWORD dwOrigAddressOffset;
+    DWORD dwDisplayableAddressSize;
+    DWORD dwDisplayableAddressOffset;
+    DWORD dwCalledPartySize;
+    DWORD dwCalledPartyOffset;
+    DWORD dwCommentSize;
+    DWORD dwCommentOffset;
+    DWORD dwUserUserInfoSize;
+    DWORD dwUserUserInfoOffset;
+    DWORD dwHighLevelCompSize;
+    DWORD dwHighLevelCompOffset;
+    DWORD dwLowLevelCompSize;
+    DWORD dwLowLevelCompOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINECALLPARAMS, *LPLINECALLPARAMS;
+
+typedef struct linecallstatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwCallState;
+    DWORD dwCallStateMode;
+    DWORD dwCallPrivilege;
+    DWORD dwCallFeatures;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINECALLSTATUS, *LPLINECALLSTATUS;
+
+typedef struct linecountrylist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumCountries;
+    DWORD dwCountryListSize;
+    DWORD dwCountryListOffset;
+} LINECOUNTRYLIST, *LPLINECOUNTRYLIST;
+
+typedef struct linedevcaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwProviderInfoSize;
+    DWORD dwProviderInfoOffset;
+    DWORD dwSwitchInfoSize;
+    DWORD dwSwitchInfoOffset;
+    DWORD dwPermanentLineID;
+    DWORD dwLineNameSize;
+    DWORD dwLineNameOffset;
+    DWORD dwStringFormat;
+    DWORD dwAddressModes;
+    DWORD dwNumAddresses;
+    DWORD dwBearerModes;
+    DWORD dwMaxRate;
+    DWORD dwMediaModes;
+    DWORD dwGenerateToneModes;
+    DWORD dwGenerateToneMaxNumFreq;
+    DWORD dwGenerateDigitModes;
+    DWORD dwMonitorToneMaxNumFreq;
+    DWORD dwMonitorToneMaxNumEntries;
+    DWORD dwMonitorDigitModes;
+    DWORD dwGatherDigitsMinTimeout;
+    DWORD dwGatherDigitsMaxTimeout;
+    DWORD dwMedCtlDigitMaxListSize;
+    DWORD dwMedCtlMediaMaxListSize;
+    DWORD dwMedCtlToneMaxListSize;
+    DWORD dwMedCtlCallStateMaxListSize;
+    DWORD dwDevCapFlags;
+    DWORD dwMaxNumActiveCalls;
+    DWORD dwAnswerMode;
+    DWORD dwRingModes;
+    DWORD dwLineStates;
+    DWORD dwUUIAcceptSize;
+    DWORD dwUUIAnswerSize;
+    DWORD dwUUIMakeCallSize;
+    DWORD dwUUIDropSize;
+    DWORD dwUUISendUserUserInfoSize;
+    DWORD dwUUICallInfoSize;
+    LINEDIALPARAMS MinDialParams;
+    LINEDIALPARAMS MaxDialParams;
+    LINEDIALPARAMS DefaultDialParams;
+    DWORD dwNumTerminals;
+    DWORD dwTerminalCapsSize;
+    DWORD dwTerminalCapsOffset;
+    DWORD dwTerminalTextEntrySize;
+    DWORD dwTerminalTextSize;
+    DWORD dwTerminalTextOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwLineFeatures;
+} LINEDEVCAPS, *LPLINEDEVCAPS;
+
+typedef struct linedevstatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumOpens;
+    DWORD dwOpenMediaModes;
+    DWORD dwNumActiveCalls;
+    DWORD dwNumOnHoldCalls;
+    DWORD dwNumOnHoldPendingCalls;
+    DWORD dwLineFeatures;
+    DWORD dwNumCallCompletion;
+    DWORD dwRingMode;
+    DWORD dwSignalLevel;
+    DWORD dwBatteryLevel;
+    DWORD dwRoamMode;
+    DWORD dwDevStatusFlags;
+    DWORD dwTerminalModesSize;
+    DWORD dwTerminalModesOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} LINEDEVSTATUS, *LPLINEDEVSTATUS;
+
+typedef struct lineextensionid_tag {
+    DWORD dwExtensionID0;
+    DWORD dwExtensionID1;
+    DWORD dwExtensionID2;
+    DWORD dwExtensionID3;
+} LINEEXTENSIONID, *LPLINEEXTENSIONID;
+
+typedef struct lineforward_tag {
+    DWORD dwForwardMode;
+    DWORD dwCallerAddressSize;
+    DWORD dwCallerAddressOffset;
+    DWORD dwDestCountryCode;
+    DWORD dwDestAddressSize;
+    DWORD dwDestAddressOffset;
+} LINEFORWARD, *LPLINEFORWARD;
+
+typedef struct lineforwardlist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNumEntries;
+    LINEFORWARD ForwardList[1];
+} LINEFORWARDLIST, *LPLINEFORWARDLIST;
+    
+typedef struct linegeneratetone_tag {
+    DWORD dwFrequency;
+    DWORD dwCadenceOn;
+    DWORD dwCadenceOff;
+    DWORD dwVolume;
+} LINEGENERATETONE, *LPLINEGENERATETONE;
+
+typedef struct linemediacontrolcallstate_tag {
+    DWORD dwCallStates;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLCALLSTATE, *LPLINEMEDIACONTROLCALLSTATE;
+
+typedef struct linemediacontroldigit_tag {
+    DWORD dwDigit;
+    DWORD dwDigitModes;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLDIGIT, *LPLINEMEDIACONTROLDIGIT;
+
+typedef struct linemediacontrolmedia_tag {
+    DWORD dwMediaModes;
+    DWORD dwDuration;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLMEDIA, *LPLINEMEDIACONTROLMEDIA;
+
+typedef struct linemediacontroltone_tag {
+    DWORD dwAppSpecific;
+    DWORD dwDuration;
+    DWORD dwFrequency1;
+    DWORD dwFrequency2;
+    DWORD dwFrequency3;
+    DWORD dwMediaControl;
+} LINEMEDIACONTROLTONE, *LPLINEMEDIACONTROLTONE;
+
+typedef struct linemonitortone_tag {
+    DWORD dwAppSpecific;
+    DWORD dwDuration;
+    DWORD dwFrequency1;
+    DWORD dwFrequency2;
+    DWORD dwFrequency3;
+} LINEMONITORTONE, *LPLINEMONITORTONE;
+
+typedef struct lineproviderlist_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumProviders;
+    DWORD dwProviderListSize;
+    DWORD dwProviderListOffset;
+} LINEPROVIDERLIST, *LPLINEPROVIDERLIST;
+
+typedef struct linetranslatecaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwNumLocations;
+    DWORD dwLocationListSize;
+    DWORD dwLocationListOffset;
+    DWORD dwCurrentLocationID;
+    DWORD dwNumCards;
+    DWORD dwCardListSize;
+    DWORD dwCardListOffset;
+    DWORD dwCurrentPreferredCardID;
+} LINETRANSLATECAPS, *LPLINETRANSLATECAPS;
+
+typedef struct linetranslateoutput_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwDialableStringSize;
+    DWORD dwDialableStringOffset;
+    DWORD dwDisplayableStringSize;
+    DWORD dwDisplayableStringOffset;
+    DWORD dwCurrentCountry;
+    DWORD dwDestCountry;
+    DWORD dwTranslateResults;
+} LINETRANSLATEOUTPUT, *LPLINETRANSLATEOUTPUT;
+
+typedef void (CALLBACK * LINECALLBACK)(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD);
+
+typedef struct _PHONEAPP {
+} PHONEAPP, *LPPHONEAPP;
+
+typedef struct _PHONE {
+    DWORD dwRingMode;
+    DWORD dwVolume;
+} PHONE, *LPPHONE;
+
+typedef struct phonebuttoninfo_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwButtonMode;
+    DWORD dwButtonFunction;
+    DWORD dwButtonTextSize;
+    DWORD dwButtonTextOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwButtonState;
+} PHONEBUTTONINFO, *LPPHONEBUTTONINFO;
+
+typedef struct phonecaps_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwProviderInfoSize;
+    DWORD dwProviderInfoOffset;
+    DWORD dwPhoneInfoSize;
+    DWORD dwPhoneInfoOffset;
+    DWORD dwPermanentPhoneID;
+    DWORD dwPhoneNameSize;
+    DWORD dwPhoneNameOffset;
+    DWORD dwStringFormat;
+    DWORD dwPhoneStates;
+    DWORD dwHookSwitchDevs;
+    DWORD dwHandsetHookSwitchModes;
+    DWORD dwSpeakerHookSwitchModes;
+    DWORD dwHeadsetHookSwitchModes;
+    DWORD dwVolumeFlags;
+    DWORD dwGainFlags;
+    DWORD dwDisplayNumRows;
+    DWORD dwDisplayNumColumns;
+    DWORD dwNumRingModes;
+    DWORD dwNumButtonLamps;
+    DWORD dwButtonModesSize;
+    DWORD dwButtonModesOffset;
+    DWORD dwButtonFunctionsSize;
+    DWORD dwButtonFunctionsOffset;
+    DWORD dwLampModesSize;
+    DWORD dwLampModesOffset;
+    DWORD dwNumSetData;
+    DWORD dwSetDataSize;
+    DWORD dwSetDataOffset;
+    DWORD dwNumGetData;
+    DWORD dwGetDataSize;
+    DWORD dwGetDataOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} PHONECAPS, *LPPHONECAPS;
+
+typedef struct phoneextensionid_tag {
+    DWORD dwExtensionID0;
+    DWORD dwExtensionID1;
+    DWORD dwExtensionID2;
+    DWORD dwExtensionID3;
+} PHONEEXTENSIONID, *LPPHONEEXTENSIONID;
+
+typedef struct phonestatus_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwStatusFlags;
+    DWORD dwNumOwners;
+    DWORD dwRingMOde;
+    DWORD dwRingVolume;
+    DWORD dwHandsetHookSwitchMode;
+    DWORD dwHandsetVolume;
+    DWORD dwHandsetGain;
+    DWORD dwSpeakerHookSwitchMode;
+    DWORD dwSpeakerVolume;
+    DWORD dwSpeakerGain;
+    DWORD dwHeadsetHookSwitchMode;
+    DWORD dwHeadsetVolume;
+    DWORD dwHeadsetGain;
+    DWORD dwDisplaySize;
+    DWORD dwDisplayOffset;
+    DWORD dwLampModesSize;
+    DWORD dwLampModesOffset;
+    DWORD dwOwnerNameSize;
+    DWORD dwOwnerNameOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwDevSpecificOffset;
+} PHONESTATUS, *LPPHONESTATUS;
+
+typedef void (CALLBACK * PHONECALLBACK)(HANDLE, DWORD, DWORD, DWORD, DWORD, DWORD);
+
+typedef struct varstring_tag {
+    DWORD dwTotalSize;
+    DWORD dwNeededSize;
+    DWORD dwUsedSize;
+    DWORD dwStringFormat;
+    DWORD dwStringSize;
+    DWORD dwStringOffset;
+} VARSTRING, *LPVARSTRING;
+
+/* line functions */
+DWORD WINAPI lineAccept(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineAddProvider(LPCSTR,HWND,LPDWORD);
+DWORD WINAPI lineAddToConference(HCALL,HCALL);
+DWORD WINAPI lineAnswer(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineBlindTransfer(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineClose(HLINE);
+DWORD WINAPI lineCompleteCall(HCALL,LPDWORD,DWORD,DWORD);
+DWORD WINAPI lineCompleteTransfer(HCALL,HCALL,LPHCALL,DWORD);
+DWORD WINAPI lineConfigDialog(DWORD,HWND,LPCSTR);
+DWORD WINAPI lineConfigDialogEdit(DWORD,HWND,LPCSTR,LPVOID const,DWORD,LPVARSTRING);
+DWORD WINAPI lineConfigProvider(HWND,DWORD);
+DWORD WINAPI lineDeallocateCall(HCALL);
+DWORD WINAPI lineDevSpecific(HLINE,DWORD,HCALL,LPVOID,DWORD);
+DWORD WINAPI lineDevSpecificFeature(HLINE,DWORD,LPVOID,DWORD);
+DWORD WINAPI lineDial(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineDrop(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineForward(HLINE,DWORD,DWORD,LPLINEFORWARDLIST,DWORD,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineGatherDigits(HCALL,DWORD,LPSTR,DWORD,LPCSTR,DWORD,DWORD);
+DWORD WINAPI lineGenerateDigits(HCALL,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineGenerateTone(HCALL,DWORD,DWORD,DWORD,LPLINEGENERATETONE);
+DWORD WINAPI lineGetAddressCaps(HLINEAPP,DWORD,DWORD,DWORD,DWORD,LPLINEADDRESSCAPS);
+DWORD WINAPI lineGetAddressID(HLINE,LPDWORD,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineGetAddressStatus(HLINE,DWORD,LPLINEADDRESSSTATUS);
+DWORD WINAPI lineGetAppPriority(LPCSTR,DWORD,LPLINEEXTENSIONID const,DWORD,LPVARSTRING,LPDWORD);
+DWORD WINAPI lineGetCallInfo(HCALL,LPLINECALLINFO);
+DWORD WINAPI lineGetCallStatus(HCALL,LPLINECALLSTATUS);
+DWORD WINAPI lineGetConfRelatedCalls(HCALL,LPLINECALLLIST);
+DWORD WINAPI lineGetCountry(DWORD,DWORD,LPLINECOUNTRYLIST);
+DWORD WINAPI lineGetDevCaps(HLINEAPP,DWORD,DWORD,DWORD,LPLINEDEVCAPS);
+DWORD WINAPI lineGetDevConfig(DWORD,LPVARSTRING,LPCSTR);
+DWORD WINAPI lineGetID(HLINE,DWORD,HCALL,DWORD,LPVARSTRING,LPCSTR);
+DWORD WINAPI lineGetIcon(DWORD,LPCSTR,HICON *);
+DWORD WINAPI lineGetLineDevStatus(HLINE,LPLINEDEVSTATUS);
+DWORD WINAPI lineGetNewCalls(HLINE,DWORD,DWORD,LPLINECALLLIST);
+DWORD WINAPI lineGetNumRings(HLINE,DWORD,LPDWORD);
+DWORD WINAPI lineGetProviderList(DWORD dwAPIVersion,LPLINEPROVIDERLIST);
+DWORD WINAPI lineGetRequest(HLINEAPP,DWORD,LPVOID);
+DWORD WINAPI lineGetStatusMessages(HLINE,LPDWORD,LPDWORD);
+DWORD WINAPI lineGetTranslateCaps(HLINEAPP,DWORD,LPLINETRANSLATECAPS);
+DWORD WINAPI lineHandoff(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineHold(HCALL);
+DWORD WINAPI lineInitialize(LPHLINEAPP,HINSTANCE,LINECALLBACK,LPCSTR,LPDWORD);
+DWORD WINAPI lineMakeCall(HLINE,LPHCALL,LPCSTR,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI lineMonitorDigits(HCALL,DWORD);
+DWORD WINAPI lineMonitorMedia(HCALL,DWORD);
+DWORD WINAPI lineMonitorTones(HCALL,LPLINEMONITORTONE,DWORD);
+DWORD WINAPI lineNegotiateAPIVersion(HLINEAPP,DWORD,DWORD,DWORD,LPDWORD,LPLINEEXTENSIONID);
+DWORD WINAPI lineNegotiateExtVersion(HLINEAPP,DWORD,DWORD,DWORD,DWORD,LPDWORD);
+DWORD WINAPI lineOpen(HLINEAPP,DWORD,LPHLINE,DWORD,DWORD,DWORD,DWORD,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI linePark(HCALL,DWORD,LPCSTR,LPVARSTRING);
+DWORD WINAPI linePickup(HLINE,DWORD,LPHCALL,LPCSTR,LPCSTR);
+DWORD WINAPI linePrepareAddToConference(HCALL,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineRedirect(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineRegisterRequestRecipient(HLINEAPP,DWORD,DWORD,DWORD);
+DWORD WINAPI lineReleaseUserUserInfo(HCALL);
+DWORD WINAPI lineRemoveFromConference(HCALL);
+DWORD WINAPI lineRemoveProvider(DWORD,HWND);
+DWORD WINAPI lineSecureCall(HCALL);
+DWORD WINAPI lineSendUserUserInfo(HCALL,LPCSTR,DWORD);
+DWORD WINAPI lineSetAppPriority(LPCSTR,DWORD,LPLINEEXTENSIONID const,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineSetAppSpecific(HCALL,DWORD);
+DWORD WINAPI lineSetCallParams(HCALL,DWORD,DWORD,DWORD,LPLINEDIALPARAMS);
+DWORD WINAPI lineSetCallPrivilege(HCALL,DWORD);
+DWORD WINAPI lineSetCurrentLocation(HLINEAPP,DWORD);
+DWORD WINAPI lineSetDevConfig(DWORD,LPVOID,DWORD,LPCSTR);
+DWORD WINAPI lineSetMediaControl(HLINE,DWORD,HCALL,DWORD,LPLINEMEDIACONTROLDIGIT,DWORD,LPLINEMEDIACONTROLMEDIA,DWORD,LPLINEMEDIACONTROLTONE,DWORD,LPLINEMEDIACONTROLCALLSTATE,DWORD);
+DWORD WINAPI lineSetMediaMode(HCALL,DWORD);
+DWORD WINAPI lineSetNumRings(HLINE,DWORD,DWORD);
+DWORD WINAPI lineSetStatusMessages(HLINE,DWORD,DWORD);
+DWORD WINAPI lineSetTerminal(HLINE,DWORD,HCALL,DWORD,DWORD,DWORD,DWORD);
+DWORD WINAPI lineSetTollList(HLINEAPP,DWORD,LPCSTR,DWORD);
+DWORD WINAPI lineSetupConference(HCALL,HLINE,LPHCALL,LPHCALL,DWORD,LPLINECALLPARAMS);
+DWORD WINAPI lineSetupTransfer(HCALL,LPHCALL,LPLINECALLPARAMS);
+DWORD WINAPI lineShutdown(HLINEAPP);
+DWORD WINAPI lineSwapHold(HCALL,HCALL);
+DWORD WINAPI lineTranslateAddress(HLINEAPP,DWORD,DWORD,LPCSTR,DWORD,DWORD,LPLINETRANSLATEOUTPUT);
+DWORD WINAPI lineTranslateDialog(HLINEAPP,DWORD,DWORD,HWND,LPCSTR);
+DWORD WINAPI lineUncompleteCall(HLINE,DWORD);
+DWORD WINAPI lineUnHold(HCALL);
+DWORD WINAPI lineUnpark(HLINE,DWORD,LPHCALL,LPCSTR);
+
+/* phone functions */
+DWORD WINAPI phoneClose(HPHONE);
+DWORD WINAPI phoneConfigDialog(DWORD,HWND,LPCSTR);
+DWORD WINAPI phoneDevSpecific(HPHONE,LPVOID,DWORD);
+DWORD WINAPI phoneGetButtonInfo(HPHONE,DWORD,LPPHONEBUTTONINFO);
+DWORD WINAPI phoneGetData(HPHONE,DWORD,LPVOID,DWORD);
+DWORD WINAPI phoneGetDevCaps(HPHONEAPP,DWORD,DWORD,DWORD,LPPHONECAPS);
+DWORD WINAPI phoneGetDisplay(HPHONE,LPVARSTRING);
+DWORD WINAPI phoneGetHookSwitch(HPHONE,LPDWORD);
+DWORD WINAPI phoneGetID(HPHONE,LPVARSTRING,LPCSTR);
+DWORD WINAPI phoneGetIcon(DWORD,LPCSTR,HICON *);
+DWORD WINAPI phoneGetLamp(HPHONE,DWORD,LPDWORD);
+DWORD WINAPI phoneGetRing(HPHONE,LPDWORD,LPDWORD);
+DWORD WINAPI phoneGetStatus(HPHONE,LPPHONESTATUS);
+DWORD WINAPI phoneGetStatusMessages(HPHONE,LPDWORD,LPDWORD,LPDWORD);
+DWORD WINAPI phoneGetVolume(HPHONE,DWORD,LPDWORD);
+DWORD WINAPI phoneInitialize(LPHPHONEAPP,HINSTANCE,PHONECALLBACK,LPCSTR,LPDWORD);
+DWORD WINAPI phoneNegotiateAPIVersion(HPHONEAPP,DWORD,DWORD,DWORD,LPDWORD,LPPHONEEXTENSIONID);
+DWORD WINAPI phoneNegotiateExtVersion(HPHONEAPP,DWORD,DWORD,DWORD,DWORD,LPDWORD);
+DWORD WINAPI phoneOpen(HPHONEAPP,DWORD,LPHPHONE,DWORD,DWORD,DWORD,DWORD);
+DWORD WINAPI phoneSetButtonInfo(HPHONE,DWORD,LPPHONEBUTTONINFO);
+DWORD WINAPI phoneSetData(HPHONE,DWORD,LPVOID,DWORD);
+DWORD WINAPI phoneSetDisplay(HPHONE,DWORD,DWORD,LPCSTR,DWORD);
+DWORD WINAPI phoneSetGain(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetHookSwitch(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetLamp(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetRing(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneSetStatusMessages(HPHONE,DWORD,DWORD,DWORD);
+DWORD WINAPI phoneSetVolume(HPHONE,DWORD,DWORD);
+DWORD WINAPI phoneShutdown(HPHONEAPP);
+
+/* "assisted" functions */
+DWORD WINAPI tapiGetLocationInfo(LPSTR,LPSTR);
+DWORD WINAPI tapiRequestMakeCall(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+
+#endif /* __WINE_TAPI_H */
diff --git a/misc/Makefile.in b/misc/Makefile.in
index 2c4c232..b99b404 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -29,7 +29,6 @@
 	stress.c \
 	string.c \
 	system.c \
-	tapi32.c \
 	toolhelp.c \
 	tweak.c \
 	version.c \
diff --git a/misc/tapi32.c b/misc/tapi32.c
deleted file mode 100644
index 331518d..0000000
--- a/misc/tapi32.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * TAPI32
- *
- * Copyright (c) 1998 Andreas Mohr
- */
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "wintypes.h"
-#include "debug.h"
-
-UINT WINAPI lineInitialize(
-  LPVOID lphLineApp, /* FIXME */
-  HINSTANCE hInstance,
-  LPVOID lpfnCallback, /* FIXME */
-  LPCSTR lpszAppName,
-  LPDWORD lpdwNumDevs)
-{
-    FIXME(comm, "stub.\n");
-    return 0;
-}
-
-UINT WINAPI lineShutdown( HANDLE hLineApp ) /* FIXME */
-{
-    FIXME(comm, "stub.\n");
-    return 0;
-}
-
-UINT WINAPI lineNegotiateAPIVersion(
-  HANDLE hLineApp, /* FIXME */
-  DWORD dwDeviceID,
-  DWORD dwAPILowVersion,
-  DWORD dwAPIHighVersion,
-  LPDWORD lpdwAPIVersion,
-  LPVOID lpExtensionID /* FIXME */
-)
-{
-    FIXME(comm, "stub.\n");
-    *lpdwAPIVersion = dwAPIHighVersion;
-    return 0;
-}
-
-/*************************************************************************
- * lineRedirect32 [TAPI32.53]
- * 
- */
-LONG WINAPI lineRedirect(
-  HANDLE* hCall,
-  LPCSTR lpszDestAddress,
-  DWORD  dwCountryCode) {
-
-  FIXME(comm, ": stub.\n");
-  return -1;
-/*  return LINEERR_OPERATIONFAILED; */
-}
-
-/*************************************************************************
- * tapiRequestMakeCall32 [TAPI32.113]
- * 
- */
-LONG WINAPI tapiRequestMakeCall(
-  LPCSTR lpszDestAddress,
-  LPCSTR lpszAppName,
-  LPCSTR lpszCalledParty,
-  LPCSTR lpszComment) {
-
-  FIXME(comm, ": stub.\n");
-  return -1;
-/*  return TAPIERR_REQUESTQUEUEFULL; */
-}
-
-
-
-
-
diff --git a/relay32/tapi32.spec b/relay32/tapi32.spec
index 7664a25..e418c59 100644
--- a/relay32/tapi32.spec
+++ b/relay32/tapi32.spec
@@ -1,117 +1,127 @@
 name	tapi32
 type	win32
 
-  1 stub    lineAccept
-  2 stub    lineAddProvider
-  3 stub    lineAddToConference
-  4 stub    lineAnswer
-  5 stub    lineBlindTransfer
-  6 stub    lineClose
-  7 stub    lineCompleteCall
-  8 stub    lineCompleteTransfer
-  9 stub    lineConfigDialog
- 10 stub    lineConfigDialogEdit
- 11 stub    lineConfigProvider
- 12 stub    lineDeallocateCall
- 13 stub    lineDevSpecific
- 14 stub    lineDevSpecificFeature
- 15 stub    lineDial
- 16 stub    lineDrop
- 17 stub    lineForward
- 18 stub    lineGatherDigits
- 19 stub    lineGenerateDigits
- 20 stub    lineGenerateTone
- 21 stub    lineGetAddressCaps
- 22 stub    lineGetAddressID
- 23 stub    lineGetAddressStatus
- 24 stub    lineGetAppPriority
- 25 stub    lineGetCallInfo
- 26 stub    lineGetCallStatus
- 27 stub    lineGetConfRelatedCalls
- 28 stub    lineGetCountry
- 29 stub    lineGetDevCaps
- 30 stub    lineGetDevConfig
- 31 stub    lineGetID
- 32 stub    lineGetIcon
- 33 stub    lineGetLineDevStatus
- 34 stub    lineGetNewCalls
- 35 stub    lineGetNumRings
- 36 stub    lineGetProviderList
- 37 stub    lineGetRequest
- 38 stub    lineGetStatusMessages
- 39 stub    lineGetTranslateCaps
- 40 stub    lineHandoff
- 41 stub    lineHold
+  1 stdcall lineAccept(long str long) lineAccept
+  2 stdcall lineAddProvider(str long ptr) lineAddProvider
+  3 stdcall lineAddToConference(long long) lineAddToConference
+  4 stdcall lineAnswer(long str long) lineAnswer
+  5 stdcall lineBlindTransfer(long str long) lineBlindTransfer
+  6 stdcall lineClose(long) lineClose
+  7 stdcall lineCompleteCall(long ptr long long) lineCompleteCall
+  8 stdcall lineCompleteTransfer(long long ptr long) lineCompleteTransfer
+  9 stdcall lineConfigDialog(long long str) lineConfigDialog
+ 10 stdcall lineConfigDialogEdit(long long str ptr long ptr)
+ lineConfigDialogEdit
+ 11 stdcall lineConfigProvider(long long) lineConfigProvider
+ 12 stdcall lineDeallocateCall(long) lineDeallocateCall
+ 13 stdcall lineDevSpecific(long long long ptr long) lineDevSpecific
+ 14 stdcall lineDevSpecificFeature(long long ptr long) lineDevSpecificFeature
+ 15 stdcall lineDial(long str long) lineDial
+ 16 stdcall lineDrop(long str long) lineDrop
+ 17 stdcall lineForward(long long long ptr long ptr ptr) lineForward
+ 18 stdcall lineGatherDigits(long long str long str long long)
+ lineGatherDigits
+ 19 stdcall lineGenerateDigits(long long str long) lineGenerateDigits
+ 20 stdcall lineGenerateTone(long long long long ptr) lineGenerateTone
+ 21 stdcall lineGetAddressCaps(long long long long long ptr)
+ lineGetAddressCaps
+ 22 stdcall lineGetAddressID(long ptr long str long) lineGetAddressID
+ 23 stdcall lineGetAddressStatus(long long ptr) lineGetAddressStatus
+ 24 stdcall lineGetAppPriority(str long ptr long ptr ptr) lineGetAppPriority
+ 25 stdcall lineGetCallInfo(long ptr) lineGetCallInfo
+ 26 stdcall lineGetCallStatus(long ptr) lineGetCallStatus
+ 27 stdcall lineGetConfRelatedCalls(long ptr) lineGetConfRelatedCalls
+ 28 stdcall lineGetCountry(long long ptr) lineGetCountry
+ 29 stdcall lineGetDevCaps(long long long long ptr) lineGetDevCaps
+ 30 stdcall lineGetDevConfig(long ptr str) lineGetDevConfig
+ 31 stdcall lineGetID(long long long long ptr str) lineGetID
+ 32 stdcall lineGetIcon(long str ptr) lineGetIcon
+ 33 stdcall lineGetLineDevStatus(long ptr) lineGetLineDevStatus
+ 34 stdcall lineGetNewCalls(long long long ptr) lineGetNewCalls
+ 35 stdcall lineGetNumRings(long long ptr) lineGetNumRings
+ 36 stdcall lineGetProviderList(long ptr) lineGetProviderList
+ 37 stdcall lineGetRequest(long long ptr) lineGetRequest
+ 38 stdcall lineGetStatusMessages(long ptr ptr) lineGetStatusMessages
+ 39 stdcall lineGetTranslateCaps(long long ptr) lineGetTranslateCaps
+ 40 stdcall lineHandoff(long str long) lineHandoff
+ 41 stdcall lineHold(long) lineHold
  42 stdcall lineInitialize(ptr long ptr str ptr) lineInitialize
- 43 stub    lineMakeCall
- 44 stub    lineMonitorDigits
- 45 stub    lineMonitorMedia
- 46 stub    lineMonitorTones
+ 43 stdcall lineMakeCall(long ptr str long ptr) lineMakeCall
+ 44 stdcall lineMonitorDigits(long long) lineMonitorDigits
+ 45 stdcall lineMonitorMedia(long long) lineMonitorMedia
+ 46 stdcall lineMonitorTones(long ptr long) lineMonitorTones
  47 stdcall lineNegotiateAPIVersion(long long long long ptr ptr) lineNegotiateAPIVersion
- 48 stub    lineNegotiateExtVersion
- 49 stub    lineOpen
- 50 stub    linePark
- 51 stub    linePickup
- 52 stub    linePrepareAddToConference
- 53 stdcall lineRedirect(long ptr long) lineRedirect
- 54 stub    lineRegisterRequestRecipient
- 55 stub    lineReleaseUserUserInfo
- 56 stub    lineRemoveFromConference
- 57 stub    lineRemoveProvider
- 58 stub    lineSecureCall
- 59 stub    lineSendUserUserInfo
- 60 stub    lineSetAppPriority
- 61 stub    lineSetAppSpecific
- 62 stub    lineSetCallParams
- 63 stub    lineSetCallPrivilege
- 64 stub    lineSetCurrentLocation
- 65 stub    lineSetDevConfig
- 66 stub    lineSetMediaControl
- 67 stub    lineSetMediaMode
- 68 stub    lineSetNumRings
- 69 stub    lineSetStatusMessages
- 70 stub    lineSetTerminal
- 71 stub    lineSetTollList
- 72 stub    lineSetupConference
- 73 stub    lineSetupTransfer
+ 48 stdcall lineNegotiateExtVersion(long long long long long ptr)
+ lineNegotiateExtVersion
+ 49 stdcall lineOpen(long long ptr long long long long long ptr) lineOpen
+ 50 stdcall linePark(long long str ptr) linePark
+ 51 stdcall linePickup(long long ptr str str) linePickup
+ 52 stdcall linePrepareAddToConference(long ptr ptr) linePrepareAddToConference
+ 53 stdcall lineRedirect(long str long) lineRedirect
+ 54 stdcall lineRegisterRequestRecipient(long long long long)
+ lineRegisterRequestRecipient
+ 55 stdcall lineReleaseUserUserInfo(long) lineReleaseUserUserInfo
+ 56 stdcall lineRemoveFromConference(long) lineRemoveFromConference
+ 57 stdcall lineRemoveProvider(long long) lineRemoveProvider
+ 58 stdcall lineSecureCall(long) lineSecureCall
+ 59 stdcall lineSendUserUserInfo(long str long) lineSendUserUserInfo
+ 60 stdcall lineSetAppPriority(str long ptr long str long) lineSetAppPriority
+ 61 stdcall lineSetAppSpecific(long long) lineSetAppSpecific
+ 62 stdcall lineSetCallParams(long long long long ptr) lineSetCallParams
+ 63 stdcall lineSetCallPrivilege(long long) lineSetCallPrivilege
+ 64 stdcall lineSetCurrentLocation(long long) lineSetCurrentLocation
+ 65 stdcall lineSetDevConfig(long ptr long str) lineSetDevConfig
+ 66 stdcall lineSetMediaControl(long long long long ptr) lineSetMediaControl
+ 67 stdcall lineSetMediaMode(long long) lineSetMediaMode
+ 68 stdcall lineSetNumRings(long long long) lineSetNumRings
+ 69 stdcall lineSetStatusMessages(long long long) lineSetStatusMessages
+ 70 stdcall lineSetTerminal(long long long long long long long)
+ lineSetTerminal
+ 71 stdcall lineSetTollList(long long str long) lineSetTollList
+ 72 stdcall lineSetupConference(long long ptr ptr long ptr)
+ lineSetupConference
+ 73 stdcall lineSetupTransfer(long ptr ptr) lineSetupTransfer
  74 stdcall lineShutdown(long) lineShutdown
- 75 stub    lineSwapHold
- 76 stub    lineTranslateAddress
- 77 stub    lineTranslateDialog
- 78 stub    lineUncompleteCall
- 79 stub    lineUnhold
- 80 stub    lineUnpark
- 81 stub    phoneClose
- 82 stub    phoneConfigDialog
- 83 stub    phoneDevSpecific
- 84 stub    phoneGetButtonInfo
- 85 stub    phoneGetData
- 86 stub    phoneGetDevCaps
- 87 stub    phoneGetDisplay
- 88 stub    phoneGetGain
- 89 stub    phoneGetHookSwitch
- 90 stub    phoneGetID
- 91 stub    phoneGetIcon
- 92 stub    phoneGetLamp
- 93 stub    phoneGetRing
- 94 stub    phoneGetStatus
- 95 stub    phoneGetStatusMessages
- 96 stub    phoneGetVolume
- 97 stub    phoneInitialize
- 98 stub    phoneNegotiateAPIVersion
- 99 stub    phoneNegotiateExtVersion
-100 stub    phoneOpen
-101 stub    phoneSetButtonInfo
-102 stub    phoneSetData
-103 stub    phoneSetDisplay
-104 stub    phoneSetGain
-105 stub    phoneSetHookSwitch
-106 stub    phoneSetLamp
-107 stub    phoneSetRing
-108 stub    phoneSetStatusMessages
-109 stub    phoneSetVolume
-110 stub    phoneShutdown
-111 stub    tapiGetLocationInfo
+ 75 stdcall lineSwapHold(long long) lineSwapHold
+ 76 stdcall lineTranslateAddress(long long long str long long ptr)
+ lineTranslateAddress
+ 77 stdcall lineTranslateDialog(long long long long str) lineTranslateDialog
+ 78 stdcall lineUncompleteCall(long long) lineUncompleteCall
+ 79 stdcall lineUnHold(long) lineUnHold
+ 80 stdcall lineUnpark(long long ptr str) lineUnpark
+ 81 stdcall phoneClose(long) phoneClose
+ 82 stdcall phoneConfigDialog(long long str) phoneConfigDialog
+ 83 stdcall phoneDevSpecific(long ptr long) phoneDevSpecific
+ 84 stdcall phoneGetButtonInfo(long long ptr) phoneGetButtonInfo
+ 85 stdcall phoneGetData(long long ptr long) phoneGetData
+ 86 stdcall phoneGetDevCaps(long long long long ptr) phoneGetDevCaps
+ 87 stdcall phoneGetDisplay(long ptr) phoneGetDisplay
+ 88 stdcall phoneGetGain(long long ptr) phoneGetGain
+ 89 stdcall phoneGetHookSwitch(long ptr) phoneGetHookSwitch
+ 90 stdcall phoneGetID(long ptr str) phoneGetID
+ 91 stdcall phoneGetIcon(long str ptr) phoneGetIcon
+ 92 stdcall phoneGetLamp(long long ptr) phoneGetLamp
+ 93 stdcall phoneGetRing(long ptr ptr) phoneGetRing
+ 94 stdcall phoneGetStatus(long ptr) phoneGetStatus
+ 95 stdcall phoneGetStatusMessages(long ptr ptr ptr) phoneGetStatusMessages
+ 96 stdcall phoneGetVolume(long long ptr) phoneGetVolume
+ 97 stdcall phoneInitialize(ptr long ptr str ptr) phoneInitialize
+ 98 stdcall phoneNegotiateAPIVersion(long long long long long ptr ptr)
+ phoneNegotiateAPIVersion
+ 99 stdcall phoneNegotiateExtVersion(long long long long long ptr)
+ phoneNegotiateExtVersion
+100 stdcall phoneOpen(long long ptr long long long long) phoneOpen
+101 stdcall phoneSetButtonInfo(long long ptr) phoneSetButtonInfo
+102 stdcall phoneSetData(long long ptr long) phoneSetData
+103 stdcall phoneSetDisplay(long long long str long) phoneSetDisplay
+104 stdcall phoneSetGain(long long long) phoneSetGain
+105 stdcall phoneSetHookSwitch(long long long) phoneSetHookSwitch
+106 stdcall phoneSetLamp(long long long) phoneSetLamp
+107 stdcall phoneSetRing(long long long) phoneSetRing
+108 stdcall phoneSetStatusMessages(long long long long) phoneSetStatusMessages
+109 stdcall phoneSetVolume(long long long) phoneSetVolume
+110 stdcall phoneShutdown(long) phoneShutdown
+111 stdcall tapiGetLocationInfo(str str) tapiGetLocationInfo
 112 stub    tapiRequestDrop
 113 stdcall tapiRequestMakeCall(str str str str) tapiRequestMakeCall
 114 stub    tapiRequestMediaCall
