diff --git a/rpc/types.go b/rpc/types.go
index 83542c83db3758fca80378e4fd0d5dba0670cfca..205b58b0a250bfaeb6a631eae0b3bc4f37266a03 100644
--- a/rpc/types.go
+++ b/rpc/types.go
@@ -74,6 +74,14 @@ func newHexData(input interface{}) *hexdata {
 		} else {
 			d.data = input.Bytes()
 		}
+	case types.Bloom:
+		d.data = input.Bytes()
+	case *types.Bloom:
+		if input == nil {
+			d.isNil = true
+		} else {
+			d.data = input.Bytes()
+		}
 	case *big.Int:
 		d.data = input.Bytes()
 	case int64:
@@ -86,6 +94,18 @@ func newHexData(input interface{}) *hexdata {
 		d.data = big.NewInt(int64(input)).Bytes()
 	case uint:
 		d.data = big.NewInt(int64(input)).Bytes()
+	case int8:
+		d.data = big.NewInt(int64(input)).Bytes()
+	case uint8:
+		d.data = big.NewInt(int64(input)).Bytes()
+	case int16:
+		d.data = big.NewInt(int64(input)).Bytes()
+	case uint16:
+		d.data = big.NewInt(int64(input)).Bytes()
+	case int32:
+		d.data = big.NewInt(int64(input)).Bytes()
+	case uint32:
+		d.data = big.NewInt(int64(input)).Bytes()
 	case string: // hexstring
 		d.data = common.Big(input).Bytes()
 	default: