added array impl