complex reasoning