supports deep data structure