# Extending the problem component

**URL:** <https://discuss.openedx.org/t/extending-the-problem-component/524>\
**Category:** Development\
**Created:** [September 19, 2019, 12:24am UTC](https://discuss.openedx.org/t/extending-the-problem-component/524 "2019-09-19T00:24:51Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![felipetorres](https://avatars.discourse-cdn.com/v4/letter/f/cab0a1/32.png) [@felipetorres](https://discuss.openedx.org/u/felipetorres)\
**Post date:** [September 19, 2019, 12:24am UTC](https://discuss.openedx.org/t/extending-the-problem-component/524/1 "2019-09-19T00:24:51Z")

</div>

Hi,

I’ve been browsing through the docs but haven’t found a clear guide on how I could extend the functionality for the problem component, specifically the multiple choice single answer.  
The basic functionality relates to the hint and feedback component but I want to see how it actually works before trying to implement my own problem component.

So my main questions are:

- Is there any guide on how to extend the problem/component?
- If this component is not an XBlock could someone point out any reference to other component that is an XBlock that deals with similar logic?

Thanks for any help you can provide.

---

<div class="post-metadata">

**Author:** ![xitij2000](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/xitij2000/32/141_2.png) [@xitij2000](https://discuss.openedx.org/u/xitij2000)\
**Post date:** [September 26, 2019, 12:32pm UTC](https://discuss.openedx.org/t/extending-the-problem-component/524/2 "2019-09-26T12:32:15Z")

</div>

> [@felipetorres](#):
>
> If this component is not an XBlock could someone point out any reference to other component that is an XBlock that deals with similar logic?

You could check out [problem-builder](https://github.com/open-craft/problem-builder), which might have the functionality you’re looking for.

Is there some specific functionality that’s missing from the problem component that’s driving you to build your own?

---

<div class="post-metadata">

**Author:** ![felipetorres](https://avatars.discourse-cdn.com/v4/letter/f/cab0a1/32.png) [@felipetorres](https://discuss.openedx.org/u/felipetorres)\
**Post date:** [September 29, 2019, 3:40am UTC](https://discuss.openedx.org/t/extending-the-problem-component/524/3 "2019-09-29T03:40:04Z")

</div>

Thanks Kshitij for your answer,

I’m trying to build a problem with multiple choice single answer and show feedback in multiple ways, video, pdfs, plain text. This feedback is dynamically generated meaning it depends on the question and the answers selected so far, think of it as adaptive feedback.

If there is any other way to achieve without building my own XBlock please let me know.

Thanks again!  
Juan

---

<div class="post-metadata">

**Author:** ![xitij2000](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/xitij2000/32/141_2.png) [@xitij2000](https://discuss.openedx.org/u/xitij2000)\
**Post date:** [September 30, 2019, 11:04am UTC](https://discuss.openedx.org/t/extending-the-problem-component/524/4 "2019-09-30T11:04:46Z")

</div>

I think you should definitely take a look at problem-builder in that case. I’m not entirely certain if that will solve your problem (I am not entirely certain what you mean by “dynamically generated” here). With problem-builder you have step builder which allows you to create a more complex series of questions with a final review step that has feedback bases on correct/incorrect answers. It may or may not be what you mean by adaptive feedback, but is probably worth a look.

---

<div class="post-metadata">

**Author:** ![moshref](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/moshref/32/627_2.png) [@moshref](https://discuss.openedx.org/u/moshref)\
**Post date:** [October 5, 2019, 6:35am UTC](https://discuss.openedx.org/t/extending-the-problem-component/524/5 "2019-10-05T06:35:01Z")

</div>

i think you can handle it by flow-control-xblock depending on the users answer show him deffrent content you’d like.
