this admits a simpler definition