add generic type lookup, refactor instantiator to have only one path, merge array and list, add support for index discovery in array/list