adding intelligent array length overload