diff --git a/ts/flexbuffers/reference.ts b/ts/flexbuffers/reference.ts
index a93c743..0eff6f4 100644
--- a/ts/flexbuffers/reference.ts
+++ b/ts/flexbuffers/reference.ts
@@ -1,14 +1,13 @@
-import { fromByteWidth } from './bit-width-util'
-import { ValueType } from './value-type'
-import { isNumber, isIndirectNumber, isAVector, fixedTypedVectorElementSize, isFixedTypedVector, isTypedVector, typedVectorElementType, packedType, fixedTypedVectorElementType } from './value-type-util'
-import { indirect, keyForIndex, keyIndex, readFloat, readInt, readUInt, valueForIndexWithKey } from './reference-util'
-import { Long } from '../long';
-import { fromUTF8Array } from './flexbuffers-util';
-import { BitWidth } from './bit-width';
+import { fromByteWidth } from './bit-width-util.js'
+import { ValueType } from './value-type.js'
+import { isNumber, isIndirectNumber, isAVector, fixedTypedVectorElementSize, isFixedTypedVector, isTypedVector, typedVectorElementType, packedType, fixedTypedVectorElementType } from './value-type-util.js'
+import { indirect, keyForIndex, keyIndex, readFloat, readInt, readUInt } from './reference-util.js'
+import { fromUTF8Array } from './flexbuffers-util.js';
+import { BitWidth } from './bit-width.js';
 
-export function toReference(buffer: Uint8Array): Reference {
+export function toReference(buffer: ArrayBuffer): Reference {
   const len = buffer.byteLength;
-  
+
   if (len < 3) {
     throw "Buffer needs to be bigger than 3";
   }
@@ -22,6 +21,13 @@
   return new Reference(dataView, offset, parentWidth, packedType, "/")
 }
 
+function valueForIndexWithKey(index: number, key: string, dataView: DataView, offset: number, parentWidth: number, byteWidth: number, length: number, path: string): Reference {
+  const _indirect = indirect(dataView, offset, parentWidth);
+  const elementOffset = _indirect + index * byteWidth;
+  const packedType = dataView.getUint8(_indirect + length * byteWidth + index);
+  return new Reference(dataView, elementOffset, fromByteWidth(byteWidth), packedType, `${path}/${key}`)
+}
+
 export class Reference {
   private readonly byteWidth: number
   private readonly valueType: ValueType
@@ -48,7 +54,7 @@
     return null;
   }
 
-  intValue(): number | Long | bigint | null {
+  intValue(): number | bigint | null {
     if (this.valueType === ValueType.INT) {
       return readInt(this.dataView, this.offset, this.parentWidth);
     }
@@ -74,7 +80,7 @@
     return null;
   }
 
-  numericValue(): number | Long | bigint | null { return this.floatValue() || this.intValue()}
+  numericValue(): number | bigint | null { return this.floatValue() || this.intValue()}
 
   stringValue(): string | null {
     if (this.valueType === ValueType.STRING || this.valueType === ValueType.KEY) {
