add more advanced sub support