more robust equals