adoptable depth and better isMono function