split the array interface to a different struct