more clever enumeration