improve eq function