diff --git a/flag_test.go b/flag_test.go
index 765dfe0..d3c1714 100644
--- a/flag_test.go
+++ b/flag_test.go
@@ -9,6 +9,7 @@
 	"fmt"
 	"io"
 	"io/ioutil"
+	"net"
 	"os"
 	"sort"
 	"strings"
@@ -114,11 +115,19 @@
 	bool2Flag := f.Bool("bool2", false, "bool2 value")
 	bool3Flag := f.Bool("bool3", false, "bool3 value")
 	intFlag := f.Int("int", 0, "int value")
+	int8Flag := f.Int8("int8", 0, "int value")
+	int32Flag := f.Int32("int32", 0, "int value")
 	int64Flag := f.Int64("int64", 0, "int64 value")
 	uintFlag := f.Uint("uint", 0, "uint value")
+	uint8Flag := f.Uint8("uint8", 0, "uint value")
+	uint16Flag := f.Uint16("uint16", 0, "uint value")
+	uint32Flag := f.Uint32("uint32", 0, "uint value")
 	uint64Flag := f.Uint64("uint64", 0, "uint64 value")
 	stringFlag := f.String("string", "0", "string value")
+	float32Flag := f.Float32("float32", 0, "float32 value")
 	float64Flag := f.Float64("float64", 0, "float64 value")
+	ipFlag := f.IP("ip", net.ParseIP("127.0.0.1"), "ip value")
+	maskFlag := f.IPMask("mask", ParseIPv4Mask("0.0.0.0"), "mask value")
 	durationFlag := f.Duration("duration", 5*time.Second, "time.Duration value")
 	extra := "one-extra-argument"
 	args := []string{
@@ -126,11 +135,19 @@
 		"--bool2=true",
 		"--bool3=false",
 		"--int=22",
+		"--int8=-8",
+		"--int32=-32",
 		"--int64=0x23",
 		"--uint=24",
+		"--uint8=8",
+		"--uint16=16",
+		"--uint32=32",
 		"--uint64=25",
 		"--string=hello",
+		"--float32=-172e12",
 		"--float64=2718e28",
+		"--ip=10.11.12.13",
+		"--mask=255.255.255.0",
 		"--duration=2m",
 		extra,
 	}
@@ -152,21 +169,45 @@
 	if *intFlag != 22 {
 		t.Error("int flag should be 22, is ", *intFlag)
 	}
+	if *int8Flag != -8 {
+		t.Error("int8 flag should be 0x23, is ", *int8Flag)
+	}
+	if *int32Flag != -32 {
+		t.Error("int32 flag should be 0x23, is ", *int32Flag)
+	}
 	if *int64Flag != 0x23 {
 		t.Error("int64 flag should be 0x23, is ", *int64Flag)
 	}
 	if *uintFlag != 24 {
 		t.Error("uint flag should be 24, is ", *uintFlag)
 	}
+	if *uint8Flag != 8 {
+		t.Error("uint8 flag should be 8, is ", *uint8Flag)
+	}
+	if *uint16Flag != 16 {
+		t.Error("uint16 flag should be 16, is ", *uint16Flag)
+	}
+	if *uint32Flag != 32 {
+		t.Error("uint32 flag should be 32, is ", *uint32Flag)
+	}
 	if *uint64Flag != 25 {
 		t.Error("uint64 flag should be 25, is ", *uint64Flag)
 	}
 	if *stringFlag != "hello" {
 		t.Error("string flag should be `hello`, is ", *stringFlag)
 	}
+	if *float32Flag != -172e12 {
+		t.Error("float64 flag should be -172e12, is ", *float64Flag)
+	}
 	if *float64Flag != 2718e28 {
 		t.Error("float64 flag should be 2718e28, is ", *float64Flag)
 	}
+	if (*maskFlag).String() != ParseIPv4Mask("255.255.255.0").String() {
+		t.Error("mask flag should be 255.255.255.0, is ", (*maskFlag).String())
+	}
+	if !(*ipFlag).Equal(net.ParseIP("10.11.12.13")) {
+		t.Error("ip flag should be 10.11.12.13, is ", *ipFlag)
+	}
 	if *durationFlag != 2*time.Minute {
 		t.Error("duration flag should be 2m, is ", *durationFlag)
 	}
diff --git a/ip.go b/ip.go
index 9d53bd3..efa75fb 100644
--- a/ip.go
+++ b/ip.go
@@ -22,9 +22,6 @@
 	*i = ipValue(ip)
 	return nil
 }
-func (i *ipValue) Get() interface{} {
-	return net.IP(*i)
-}
 
 func (i *ipValue) Type() string {
 	return "ip"
diff --git a/ipmask.go b/ipmask.go
index 6f85be9..09b9533 100644
--- a/ipmask.go
+++ b/ipmask.go
@@ -22,9 +22,6 @@
 	*i = ipMaskValue(ip)
 	return nil
 }
-func (i *ipMaskValue) Get() interface{} {
-	return net.IPMask(*i)
-}
 
 func (i *ipMaskValue) Type() string {
 	return "ipMask"
diff --git a/uint16.go b/uint16.go
index ec14ab0..ab1c1f9 100644
--- a/uint16.go
+++ b/uint16.go
@@ -19,10 +19,6 @@
 	return err
 }
 
-func (i *uint16Value) Get() interface{} {
-	return uint16(*i)
-}
-
 func (i *uint16Value) Type() string {
 	return "uint16"
 }
diff --git a/uint32.go b/uint32.go
index 05bc3bd..db635ae 100644
--- a/uint32.go
+++ b/uint32.go
@@ -18,9 +18,6 @@
 	*i = uint32Value(v)
 	return err
 }
-func (i *uint32Value) Get() interface{} {
-	return uint32(*i)
-}
 
 func (i *uint32Value) Type() string {
 	return "uint32"
