diff --git a/README.md b/README.md
index e07c67e..9b042e4 100644
--- a/README.md
+++ b/README.md
@@ -36,29 +36,22 @@ This is a work in progress.
 
 ## Requirements:
 
-Now, Please make sure Golang, GCC, zlib and libpng is installed correctly before installing RobotGo.
+Now, Please make sure Golang, GCC is installed correctly before installing RobotGo.
 
 ### ALL: 
 ``` 
 Golang
 GCC
-zlib & libpng (bitmap)
 ```
 #### For Mac OS X:
-    Xcode Command Line Tools
 ```
-brew install libpng
-brew install homebrew/dupes/zlib
+    Xcode Command Line Tools
 ```    
 #### For Windows:
 ```
 MinGW or other GCC
 
-zlib & libpng (bitmap need it.)
 ```
-##### [Zlib & libpng Windows32 GCC's Course](https://github.com/go-vgo/Mingw32)
-
-##### [Download include zlib & libpng Windows64 GCC](https://github.com/go-vgo/Mingw)
 
 #### For everything else:
 ```
@@ -76,8 +69,7 @@ xcb, xkb, libxkbcommon
 sudo apt-get install gcc libc6-dev
 
 sudo apt-get install libx11-dev
-sudo apt-get install xorg-dev
-sudo apt-get install libxtst-dev libpng++-dev   
+sudo apt-get install xorg-dev  
 
 sudo apt-get install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev
 sudo apt-get install libxkbcommon-dev
@@ -91,8 +83,6 @@ sudo apt-get install xclip
 ```yml
 sudo dnf install libxkbcommon-devel libXtst-devel libxkbcommon-x11-devel xorg-x11-xkb-utils-devel
 
-sudo dnf install libpng-devel
-
 sudo dnf install xsel
 sudo dnf install xclip
 ```
@@ -103,8 +93,6 @@ go get github.com/go-vgo/robotgo
 ```
   It's that easy!
 
-png.h: No such file or directory? Please see [issues/47](https://github.com/go-vgo/robotgo/issues/47).
-
 ## Update:
 ```
 go get -u github.com/go-vgo/robotgo  
@@ -174,7 +162,7 @@ func main() {
 } 
 ```
 
-#### [Bitmap](https://github.com/go-vgo/robotgo/blob/master/examples/bitmap/mian.go)
+<!-- #### [Bitmap](https://github.com/go-vgo/robotgo/blob/master/examples/bitmap/mian.go)
 
 ```Go
 package main
@@ -194,7 +182,7 @@ func main() {
 
   robotgo.SaveBitmap(bitmap, "test.png")
 } 
-```
+``` -->
 
 #### [Event](https://github.com/go-vgo/robotgo/blob/master/examples/event/main.go)
 
diff --git a/README_zh.md b/README_zh.md
index 6a76daf..1a2e93b 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -34,28 +34,21 @@ QQ 群: 595877611
 ## Requirements:
 环境要求:
 
-在安装 RobotGo 之前, 请确保 Golang、GCC、zlib 和 libpng 被正确安装
+在安装 RobotGo 之前, 请确保 Golang、GCC 被正确安装
 
 ### ALL:  
 ```
 Golang
 GCC
-zlib & libpng (bitmap)
 ```
 #### For Mac OS X:
-    Xcode Command Line Tools
 ```
-brew install libpng
-brew install homebrew/dupes/zlib
+    Xcode Command Line Tools
 ```    
 #### For Windows:
 ```
 MinGW or other GCC
-
-zlib & libpng (bitmap 依赖)
 ```
-##### [Zlib & libpng Windows32 GCC 教程](https://github.com/go-vgo/Mingw32)
-##### [下载包含 zlib 和 libpng 的 64位 MinGW](https://github.com/go-vgo/Mingw)
 
 #### For everything else (Linux 等其他系统):
 ```
@@ -73,9 +66,7 @@ xcb, xkb, libxkbcommon
 sudo apt-get install gcc libc6-dev
 
 sudo apt-get install libx11-dev
-sudo apt-get install xorg-dev
-sudo apt-get install libxtst-dev libpng++-dev   
-
+sudo apt-get install xorg-dev  
 
 sudo apt-get install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev
 sudo apt-get install libxkbcommon-dev
@@ -90,8 +81,6 @@ sudo apt-get install xclip
 ```yml
 sudo dnf install libxkbcommon-devel libXtst-devel libxkbcommon-x11-devel xorg-x11-xkb-utils-devel
 
-sudo dnf install libpng-devel
-
 sudo dnf install xsel
 sudo dnf install xclip
 ```
@@ -99,9 +88,7 @@ sudo dnf install xclip
 ```
 go get github.com/go-vgo/robotgo
 ```
-  It's that easy!
-
-png.h: No such file or directory? Please see [issues/47](https://github.com/go-vgo/robotgo/issues/47).  
+  It's that easy! 
 
 ## Update:
 ```
@@ -172,7 +159,7 @@ func main() {
 } 
 ```
 
-#### [位图](https://github.com/go-vgo/robotgo/blob/master/examples/bitmap/mian.go)
+<!-- #### [位图](https://github.com/go-vgo/robotgo/blob/master/examples/bitmap/mian.go)
 
 ```Go
 package main
@@ -192,7 +179,7 @@ func main() {
 
   robotgo.SaveBitmap(bitmap, "test.png")
 } 
-```
+``` -->
 
 #### [事件](https://github.com/go-vgo/robotgo/blob/master/examples/event/main.go)
 
diff --git a/circle.yml b/circle.yml
index a93280b..7f2edb0 100644
--- a/circle.yml
+++ b/circle.yml
@@ -12,7 +12,7 @@ dependencies:
     # - sudo apt-get install libghc6-x11-dev
     # - sudo apt-get install libgl1-mesa-swx11-dev
     - sudo apt-get install xorg-dev
-    - sudo apt-get install libxtst-dev libpng++-dev 
+    # - sudo apt-get install libxtst-dev libpng++-dev 
     # Event: 
     - sudo apt-get install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev
     - sudo apt-get install libxkbcommon-dev
diff --git a/examples/bitmap/mian.go b/examples/bitmap/mian.go
index 166d5a6..d7b9d1a 100644
--- a/examples/bitmap/mian.go
+++ b/examples/bitmap/mian.go
@@ -30,29 +30,29 @@ func main() {
 	bitmap := robotgo.CaptureScreen(100, 200, 30, 40)
 	fmt.Println("CaptureScreen...", bitmap)
 
-	// searches for needle in bitmap
-	fx, fy := robotgo.FindBitmap(bitmap)
-	fmt.Println("FindBitmap------", fx, fy)
+	// // searches for needle in bitmap
+	// fx, fy := robotgo.FindBitmap(bitmap)
+	// fmt.Println("FindBitmap------", fx, fy)
 
-	// returns new bitmap object created from a portion of another
-	bitpos := robotgo.GetPortion(bitmap, 10, 10, 11, 10)
-	fmt.Println(bitpos)
+	// // returns new bitmap object created from a portion of another
+	// bitpos := robotgo.GetPortion(bitmap, 10, 10, 11, 10)
+	// fmt.Println(bitpos)
 
-	// creates bitmap from string by bitmap
-	bitstr := robotgo.TostringBitmap(bitmap)
-	fmt.Println("bitstr...", bitstr)
+	// // creates bitmap from string by bitmap
+	// bitstr := robotgo.TostringBitmap(bitmap)
+	// fmt.Println("bitstr...", bitstr)
 
-	// sbitmap := robotgo.BitmapFromstring(bitstr, 2)
-	// fmt.Println("...", sbitmap)
+	// // sbitmap := robotgo.BitmapFromstring(bitstr, 2)
+	// // fmt.Println("...", sbitmap)
 
-	// saves image to absolute filepath in the given format
-	robotgo.SaveBitmap(bitmap, "test.png")
-	robotgo.SaveBitmap(bitmap, "test31.tif", 1)
+	// // saves image to absolute filepath in the given format
+	// robotgo.SaveBitmap(bitmap, "test.png")
+	// robotgo.SaveBitmap(bitmap, "test31.tif", 1)
 
-	// convert image
-	robotgo.Convert("test.png", "test.tif")
+	// // convert image
+	// robotgo.Convert("test.png", "test.tif")
 
-	// open image bitmap
-	openbit := robotgo.OpenBitmap("test.tif")
-	fmt.Println("openBitmap...", openbit)
+	// // open image bitmap
+	// openbit := robotgo.OpenBitmap("test.tif")
+	// fmt.Println("openBitmap...", openbit)
 }
diff --git a/examples/main.go b/examples/main.go
index 9eb0352..69bb996 100644
--- a/examples/main.go
+++ b/examples/main.go
@@ -124,45 +124,45 @@ func screen() {
 
 }
 
-func bitmap() {
-	////////////////////////////////////////////////////////////////////////////////
-	// Bitmap
-	////////////////////////////////////////////////////////////////////////////////
+// func bitmap() {
+// 	////////////////////////////////////////////////////////////////////////////////
+// 	// Bitmap
+// 	////////////////////////////////////////////////////////////////////////////////
 
-	// gets all of the screen
-	abitMap := robotgo.CaptureScreen()
-	fmt.Println("abitMap...", abitMap)
+// 	// gets all of the screen
+// 	abitMap := robotgo.CaptureScreen()
+// 	fmt.Println("abitMap...", abitMap)
 
-	// gets part of the screen
-	bitmap := robotgo.CaptureScreen(100, 200, 30, 40)
-	fmt.Println("CaptureScreen...", bitmap)
+// 	// gets part of the screen
+// 	bitmap := robotgo.CaptureScreen(100, 200, 30, 40)
+// 	fmt.Println("CaptureScreen...", bitmap)
 
-	// searches for needle in bitmap
-	fx, fy := robotgo.FindBitmap(bitmap)
-	fmt.Println("FindBitmap------", fx, fy)
+// 	// searches for needle in bitmap
+// 	fx, fy := robotgo.FindBitmap(bitmap)
+// 	fmt.Println("FindBitmap------", fx, fy)
 
-	// returns new bitmap object created from a portion of another
-	bitpos := robotgo.GetPortion(bitmap, 10, 10, 11, 10)
-	fmt.Println(bitpos)
+// 	// returns new bitmap object created from a portion of another
+// 	bitpos := robotgo.GetPortion(bitmap, 10, 10, 11, 10)
+// 	fmt.Println(bitpos)
 
-	// creates bitmap from string by bitmap
-	bitstr := robotgo.TostringBitmap(bitmap)
-	fmt.Println("bitstr...", bitstr)
+// 	// creates bitmap from string by bitmap
+// 	bitstr := robotgo.TostringBitmap(bitmap)
+// 	fmt.Println("bitstr...", bitstr)
 
-	// sbitmap := robotgo.BitmapFromstring(bitstr, 2)
-	// fmt.Println("...", sbitmap)
+// 	// sbitmap := robotgo.BitmapFromstring(bitstr, 2)
+// 	// fmt.Println("...", sbitmap)
 
-	// saves image to absolute filepath in the given format
-	robotgo.SaveBitmap(bitmap, "test.png")
-	robotgo.SaveBitmap(bitmap, "test31.tif", 1)
+// 	// saves image to absolute filepath in the given format
+// 	robotgo.SaveBitmap(bitmap, "test.png")
+// 	robotgo.SaveBitmap(bitmap, "test31.tif", 1)
 
-	// convert image
-	robotgo.Convert("test.png", "test.tif")
+// 	// convert image
+// 	robotgo.Convert("test.png", "test.tif")
 
-	// open image bitmap
-	openbit := robotgo.OpenBitmap("test.tif")
-	fmt.Println("openBitmap...", openbit)
-}
+// 	// open image bitmap
+// 	openbit := robotgo.OpenBitmap("test.tif")
+// 	fmt.Println("openBitmap...", openbit)
+// }
 
 func event() {
 	////////////////////////////////////////////////////////////////////////////////
@@ -285,7 +285,7 @@ func main() {
 	// Read the screen
 	screen()
 	// Bitmap and image processing
-	bitmap()
+	// bitmap()
 	// Global event listener
 	event()
 	// Window Handle and progress
diff --git a/robotgo.go b/robotgo.go
index 346977b..b0f23e3 100644
--- a/robotgo.go
+++ b/robotgo.go
@@ -25,18 +25,21 @@ package robotgo
 /*
 //#if defined(IS_MACOSX)
 	#cgo darwin CFLAGS: -x objective-c  -Wno-deprecated-declarations -I/usr/local/opt/libpng/include -I/usr/local/opt/zlib/include
-	#cgo darwin LDFLAGS: -framework Cocoa -framework OpenGL -framework IOKit -framework Carbon -framework CoreFoundation -L/usr/local/opt/libpng/lib -lpng -L/usr/local/opt/zlib/lib -lz
+	#cgo darwin LDFLAGS: -framework Cocoa -framework OpenGL -framework IOKit -framework Carbon -framework CoreFoundation
+	// -L/usr/local/opt/libpng/lib -lpng -L/usr/local/opt/zlib/lib -lz
 //#elif defined(USE_X11)
 	// drop -std=c11
 	#cgo linux CFLAGS:-I/usr/src
-	#cgo linux LDFLAGS:-L/usr/src -lpng -lz -lX11 -lXtst -lX11-xcb -lxcb -lxcb-xkb -lxkbcommon -lxkbcommon-x11 -lm
+	#cgo linux LDFLAGS:-L/usr/src -lX11 -lXtst -lX11-xcb -lxcb -lxcb-xkb -lxkbcommon -lxkbcommon-x11 -lm
+	// -lpng -lz
 //#endif
-	#cgo windows LDFLAGS: -lgdi32 -luser32 -lpng -lz
+	#cgo windows LDFLAGS: -lgdi32 -luser32
+	// -lpng -lz
 //#include <AppKit/NSEvent.h>
 #include "screen/goScreen.h"
 #include "mouse/goMouse.h"
 #include "key/goKey.h"
-#include "bitmap/goBitmap.h"
+// #include "bitmap/goBitmap.h"
 #include "event/goEvent.h"
 #include "window/goWindow.h"
 */
@@ -573,137 +576,137 @@ func SetKeyboardDelay(x int) {
 |______/  |__|     |__|     |__|  |__| /__/     \__\ | _|
 */
 
-// FindBitmap find the bitmap
-func FindBitmap(args ...interface{}) (int, int) {
-	var bit C.MMBitmapRef
-	bit = args[0].(C.MMBitmapRef)
+// // FindBitmap find the bitmap
+// func FindBitmap(args ...interface{}) (int, int) {
+// 	var bit C.MMBitmapRef
+// 	bit = args[0].(C.MMBitmapRef)
 
-	var rect C.MMRect
-	Try(func() {
-		rect.origin.x = C.size_t(args[1].(int))
-		rect.origin.y = C.size_t(args[2].(int))
-		rect.size.width = C.size_t(args[3].(int))
-		rect.size.height = C.size_t(args[4].(int))
-	}, func(e interface{}) {
-		// fmt.Println("err:::", e)
-		// rect.origin.x = x
-		// rect.origin.y = y
-		// rect.size.width = w
-		// rect.size.height = h
-	})
+// 	var rect C.MMRect
+// 	Try(func() {
+// 		rect.origin.x = C.size_t(args[1].(int))
+// 		rect.origin.y = C.size_t(args[2].(int))
+// 		rect.size.width = C.size_t(args[3].(int))
+// 		rect.size.height = C.size_t(args[4].(int))
+// 	}, func(e interface{}) {
+// 		// fmt.Println("err:::", e)
+// 		// rect.origin.x = x
+// 		// rect.origin.y = y
+// 		// rect.size.width = w
+// 		// rect.size.height = h
+// 	})
 
-	pos := C.aFindBitmap(bit, rect)
-	// fmt.Println("pos----", pos)
-	return int(pos.x), int(pos.y)
-}
+// 	pos := C.aFindBitmap(bit, rect)
+// 	// fmt.Println("pos----", pos)
+// 	return int(pos.x), int(pos.y)
+// }
 
-// OpenBitmap open the bitmap
-func OpenBitmap(args ...interface{}) C.MMBitmapRef {
-	path := C.CString(args[0].(string))
-	var mtype C.uint16_t
-	Try(func() {
-		mtype = C.uint16_t(args[1].(int))
-	}, func(e interface{}) {
-		// fmt.Println("err:::", e)
-		mtype = 1
-	})
-	bit := C.bitmap_open(path, mtype)
-	defer C.free(unsafe.Pointer(path))
-	// fmt.Println("opening...", bit)
-	return bit
-	// defer C.free(unsafe.Pointer(path))
-}
-
-// SaveBitmap save the bitmap
-func SaveBitmap(args ...interface{}) string {
-	var mtype C.uint16_t
-	Try(func() {
-		mtype = C.uint16_t(args[2].(int))
-	}, func(e interface{}) {
-		// fmt.Println("err:::", e)
-		mtype = 1
-	})
-
-	path := C.CString(args[1].(string))
-	savebit := C.bitmap_save(args[0].(C.MMBitmapRef), path, mtype)
-	// fmt.Println("saved...", savebit)
-	// return bit
-	defer C.free(unsafe.Pointer(path))
-
-	return C.GoString(savebit)
-}
-
-// func SaveBitmap(bit C.MMBitmapRef, gpath string, mtype C.MMImageType) {
-// 	path := C.CString(gpath)
-// 	savebit := C.aSaveBitmap(bit, path, mtype)
-// 	fmt.Println("saving...", savebit)
-// 	// return bit
+// // OpenBitmap open the bitmap
+// func OpenBitmap(args ...interface{}) C.MMBitmapRef {
+// 	path := C.CString(args[0].(string))
+// 	var mtype C.uint16_t
+// 	Try(func() {
+// 		mtype = C.uint16_t(args[1].(int))
+// 	}, func(e interface{}) {
+// 		// fmt.Println("err:::", e)
+// 		mtype = 1
+// 	})
+// 	bit := C.bitmap_open(path, mtype)
+// 	defer C.free(unsafe.Pointer(path))
+// 	// fmt.Println("opening...", bit)
+// 	return bit
 // 	// defer C.free(unsafe.Pointer(path))
 // }
 
-// TostringBitmap tostring bitmap
-func TostringBitmap(bit C.MMBitmapRef) *C.char {
-	// str_bit := C.aTostringBitmap(bit)
-	strBit := C.aTostringBitmap(bit)
-	// fmt.Println("...", str_bit)
-	// return str_bit
-	return strBit
-}
+// // SaveBitmap save the bitmap
+// func SaveBitmap(args ...interface{}) string {
+// 	var mtype C.uint16_t
+// 	Try(func() {
+// 		mtype = C.uint16_t(args[2].(int))
+// 	}, func(e interface{}) {
+// 		// fmt.Println("err:::", e)
+// 		mtype = 1
+// 	})
 
-// GetPortion get portion
-func GetPortion(bit C.MMBitmapRef, x, y, w, h C.size_t) C.MMBitmapRef {
-	var rect C.MMRect
-	rect.origin.x = x
-	rect.origin.y = y
-	rect.size.width = w
-	rect.size.height = h
+// 	path := C.CString(args[1].(string))
+// 	savebit := C.bitmap_save(args[0].(C.MMBitmapRef), path, mtype)
+// 	// fmt.Println("saved...", savebit)
+// 	// return bit
+// 	defer C.free(unsafe.Pointer(path))
 
-	pos := C.aGetPortion(bit, rect)
-	return pos
-}
+// 	return C.GoString(savebit)
+// }
 
-// Convert convert bitmap
-func Convert(args ...interface{}) {
-	var mtype int
-	Try(func() {
-		mtype = args[2].(int)
-	}, func(e interface{}) {
-		// fmt.Println("err:::", e)
-		mtype = 1
-	})
-	//C.CString()
-	opath := args[0].(string)
-	spath := args[1].(string)
-	bitmap := OpenBitmap(opath)
-	// fmt.Println("a----", bit_map)
-	SaveBitmap(bitmap, spath, mtype)
-}
+// // func SaveBitmap(bit C.MMBitmapRef, gpath string, mtype C.MMImageType) {
+// // 	path := C.CString(gpath)
+// // 	savebit := C.aSaveBitmap(bit, path, mtype)
+// // 	fmt.Println("saving...", savebit)
+// // 	// return bit
+// // 	// defer C.free(unsafe.Pointer(path))
+// // }
 
-// FreeBitmap free and dealloc bitmap
-func FreeBitmap(bitmap C.MMBitmapRef) {
-	// C.destroyMMBitmap(bitmap)
-	C.bitmap_dealloc(bitmap)
-}
+// // TostringBitmap tostring bitmap
+// func TostringBitmap(bit C.MMBitmapRef) *C.char {
+// 	// str_bit := C.aTostringBitmap(bit)
+// 	strBit := C.aTostringBitmap(bit)
+// 	// fmt.Println("...", str_bit)
+// 	// return str_bit
+// 	return strBit
+// }
 
-// ReadBitmap returns false and sets error if |bitmap| is NULL
-func ReadBitmap(bitmap C.MMBitmapRef) bool {
-	abool := C.bitmap_ready(bitmap)
-	gbool := bool(abool)
-	return gbool
-}
+// // GetPortion get portion
+// func GetPortion(bit C.MMBitmapRef, x, y, w, h C.size_t) C.MMBitmapRef {
+// 	var rect C.MMRect
+// 	rect.origin.x = x
+// 	rect.origin.y = y
+// 	rect.size.width = w
+// 	rect.size.height = h
 
-// CopyBitpb copy bitmap to pasteboard
-func CopyBitpb(bitmap C.MMBitmapRef) bool {
-	abool := C.bitmap_copy_to_pboard(bitmap)
-	gbool := bool(abool)
-	return gbool
-}
+// 	pos := C.aGetPortion(bit, rect)
+// 	return pos
+// }
 
-// DeepCopyBit deep copy bitmap
-func DeepCopyBit(bitmap C.MMBitmapRef) C.MMBitmapRef {
-	bit := C.bitmap_deepcopy(bitmap)
-	return bit
-}
+// // Convert convert bitmap
+// func Convert(args ...interface{}) {
+// 	var mtype int
+// 	Try(func() {
+// 		mtype = args[2].(int)
+// 	}, func(e interface{}) {
+// 		// fmt.Println("err:::", e)
+// 		mtype = 1
+// 	})
+// 	//C.CString()
+// 	opath := args[0].(string)
+// 	spath := args[1].(string)
+// 	bitmap := OpenBitmap(opath)
+// 	// fmt.Println("a----", bit_map)
+// 	SaveBitmap(bitmap, spath, mtype)
+// }
+
+// // FreeBitmap free and dealloc bitmap
+// func FreeBitmap(bitmap C.MMBitmapRef) {
+// 	// C.destroyMMBitmap(bitmap)
+// 	C.bitmap_dealloc(bitmap)
+// }
+
+// // ReadBitmap returns false and sets error if |bitmap| is NULL
+// func ReadBitmap(bitmap C.MMBitmapRef) bool {
+// 	abool := C.bitmap_ready(bitmap)
+// 	gbool := bool(abool)
+// 	return gbool
+// }
+
+// // CopyBitpb copy bitmap to pasteboard
+// func CopyBitpb(bitmap C.MMBitmapRef) bool {
+// 	abool := C.bitmap_copy_to_pboard(bitmap)
+// 	gbool := bool(abool)
+// 	return gbool
+// }
+
+// // DeepCopyBit deep copy bitmap
+// func DeepCopyBit(bitmap C.MMBitmapRef) C.MMBitmapRef {
+// 	bit := C.bitmap_deepcopy(bitmap)
+// 	return bit
+// }
 
 /*
  ___________    ____  _______ .__   __. .___________.