rewrite: only abstract and add to array of array