reasoning methods