supports object heirarchies