diff --git a/accounts/abi/argument.go b/accounts/abi/argument.go
index ad17fbf2b1a90dfbe59df9a13fe302beae4fae72..65f79c9d4cb19c3aacae3ac09c9bd64bc8e72f09 100644
--- a/accounts/abi/argument.go
+++ b/accounts/abi/argument.go
@@ -169,6 +169,16 @@ func (arguments Arguments) unpackAtomic(v interface{}, output []byte) error {
 	if err != nil {
 		return err
 	}
+
+	// if we reach this part, there is only one output member from the contract event.
+	// for mobile, the result type is always a slice.
+	if reflect.Slice == value.Kind() && value.Len() >= 1 {
+		//check if it's not a byte slice
+		if reflect.TypeOf([]byte{}) != value.Type() {
+			value = value.Index(0).Elem()
+		}
+	}
+
 	return set(value, reflect.ValueOf(marshalledValue), arg)
 }