diff --git a/parser.d.ts b/parser.d.ts
index 44f29bd..39f638e 100644
--- a/parser.d.ts
+++ b/parser.d.ts
@@ -1,12 +1,16 @@
 export type Value = number
     | string
-    | ((...args: Value[]) => Value)
+    | boolean
+    | ValueFunction
+    | Value[]
     | { [propertyName: string]: Value };
 
 export interface Values {
     [propertyName: string]: Value;
 }
 
+export type ValueFunction = ((...args: any[]) => Value)
+
 export interface ParserOptions {
   allowMemberAccess?: boolean;
   operators?: {
@@ -51,6 +55,7 @@ export interface ParserOptions {
     max?: boolean,
     assignment?: boolean,
     fndef?: boolean,
+    array?: boolean
     cbrt?: boolean,
     expm1?: boolean,
     log1p?: boolean,
@@ -61,20 +66,20 @@ export interface ParserOptions {
 
 export class Parser {
     constructor(options?: ParserOptions);
-    unaryOps: any;
-    functions: any;
-    consts: any;
+    unaryOps: {[name: string]: ((arg: any) => Value)};
+    functions: {[name: string]: ValueFunction};
+    consts: Values;
     parse(expression: string): Expression;
-    evaluate(expression: string, values?: Value): number;
+    evaluate(expression: string, values?: Values): Value;
     static parse(expression: string): Expression;
-    static evaluate(expression: string, values?: Value): number;
+    static evaluate(expression: string, values?: Values): Value;
 }
 
 export interface Expression {
-    simplify(values?: Value): Expression;
-    evaluate(values?: Value): any;
+    simplify(values?: Values): Expression;
+    evaluate(values?: Values): Value;
     substitute(variable: string, value: Expression | string | number): Expression;
     symbols(options?: { withMembers?: boolean }): string[];
     variables(options?: { withMembers?: boolean }): string[];
-    toJSFunction(params: string | string[], values?: Value): (...args: any[]) => number;
+    toJSFunction(params: string | string[], values?: Values): ValueFunction;
 }