diff --git a/pageant_windows.go b/pageant_windows.go
index 3507b02..6295607 100644
--- a/pageant_windows.go
+++ b/pageant_windows.go
@@ -29,8 +29,8 @@
 	"errors"
 	"fmt"
 	"sync"
-	. "syscall"
-	. "unsafe"
+	"syscall"
+	"unsafe"
 )
 
 // Maximum size of message can be sent to pageant
@@ -53,7 +53,7 @@
 type copyData struct {
 	dwData uintptr
 	cbData uint32
-	lpData Pointer
+	lpData unsafe.Pointer
 }
 
 var (
@@ -65,7 +65,7 @@
 )
 
 func winAPI(dllName, funcName string) func(...uintptr) (uintptr, uintptr, error) {
-	proc := MustLoadDLL(dllName).MustFindProc(funcName)
+	proc := syscall.MustLoadDLL(dllName).MustFindProc(funcName)
 	return func(a ...uintptr) (uintptr, uintptr, error) { return proc.Call(a...) }
 }
 
@@ -96,21 +96,21 @@
 
 	thID, _, _ := winGetCurrentThreadID()
 	mapName := fmt.Sprintf("PageantRequest%08x", thID)
-	pMapName, _ := UTF16PtrFromString(mapName)
+	pMapName, _ := syscall.UTF16PtrFromString(mapName)
 
-	mmap, err := CreateFileMapping(InvalidHandle, nil, PAGE_READWRITE, 0, MaxMessageLen+4, pMapName)
+	mmap, err := syscall.CreateFileMapping(syscall.InvalidHandle, nil, syscall.PAGE_READWRITE, 0, MaxMessageLen+4, pMapName)
 	if err != nil {
 		return nil, err
 	}
-	defer CloseHandle(mmap)
+	defer syscall.CloseHandle(mmap)
 
-	ptr, err := MapViewOfFile(mmap, FILE_MAP_WRITE, 0, 0, 0)
+	ptr, err := syscall.MapViewOfFile(mmap, syscall.FILE_MAP_WRITE, 0, 0, 0)
 	if err != nil {
 		return nil, err
 	}
-	defer UnmapViewOfFile(ptr)
+	defer syscall.UnmapViewOfFile(ptr)
 
-	mmSlice := (*(*[MaxMessageLen]byte)(Pointer(ptr)))[:]
+	mmSlice := (*(*[MaxMessageLen]byte)(unsafe.Pointer(ptr)))[:]
 
 	copy(mmSlice, msg)
 
@@ -119,10 +119,10 @@
 	cds := copyData{
 		dwData: agentCopydataID,
 		cbData: uint32(len(mapNameBytesZ)),
-		lpData: Pointer(&(mapNameBytesZ[0])),
+		lpData: unsafe.Pointer(&(mapNameBytesZ[0])),
 	}
 
-	resp, _, _ := winSendMessage(paWin, wmCopydata, 0, uintptr(Pointer(&cds)))
+	resp, _, _ := winSendMessage(paWin, wmCopydata, 0, uintptr(unsafe.Pointer(&cds)))
 
 	if resp == 0 {
 		return nil, ErrSendMessage
@@ -140,7 +140,7 @@
 }
 
 func pageantWindow() uintptr {
-	nameP, _ := UTF16PtrFromString("Pageant")
-	h, _, _ := winFindWindow(uintptr(Pointer(nameP)), uintptr(Pointer(nameP)))
+	nameP, _ := syscall.UTF16PtrFromString("Pageant")
+	h, _, _ := winFindWindow(uintptr(unsafe.Pointer(nameP)), uintptr(unsafe.Pointer(nameP)))
 	return h
 }
