all but 2 tricky cases