legacy subfunctions