class Asks {

    constructor() {
        // internal properties
        this.attrs = {
            questions: [],
            _response: {}
        }
        return this
    }

    /**
     * @method set_questions
     * @desc sends a "GET" request to target endpoint
     *
     * @param {Array} [value]
     * @returns {Asks} instance
     */
    set_questions( value ) {
        this.attrs.questions = value;
        console.log( 'set_questions:', this.attrs.questions )
        return this;
    }

    /**
     * @method fetch
     * @desc sends a "GET" request to target endpoint
     *
     * @param {String} [uri] a DOMString representing the URL target of the the request
     * @returns {XMLHttpRequest} instance
     */
    fetch( uri ) {
        // a new request
        // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
        let request = new XMLHttpRequest()
        request.open( 'GET', uri, false )
        request.onreadystatechange = () => {
            if ( request.readyState == 4 || request.status == 200 ) {
                // send parsed response dataset to successful routine
                this._on_success( JSON.parse( request.responseText ) )
            } else {
                // send to error path
                this._on_error( JSON.parse( request.responseText ) )
            }
        }
        request.send( null )
        return request
    }

    /**
     * @private
     * @method _on_success
     * @desc routine that executes when request is complete and successful
     *
     * @param {*} [data] response dataset
     */
    _on_success( data ) {
        console.log( 'Success:', data )
        // internally cache last succesful response
        this.attrs._response = data;
        // sets property
        this.set_questions( this._extract_questions_from_dataset( data ) )
        return data
    }

    /**
     * @private
     * @method _on_error
     * @desc routine that executes when request fails
     *
     * @param {*} [data] response dataset
     */
    _on_error( data ) {
        console.log( `Error: ${data}` )
        // do more stuff
        return data
    }

    /**
     * @private
     * @method _extract_questions_from_dataset
     * @desc get all the questions from the dataset and put them into a simple collection
     *
     * @param {*} [data] response dataset
     * @returns {Array}
     */
    _extract_questions_from_dataset( dataset = [] ) {
        return dataset.map( ( value ) => value.question )
    }

}

// instantiate view
const view = new Asks()

// get the data
view.fetch( 'https://nfte-2017-writeme.github.io/writeme/mocks/endpoints/qna/index.json' )

@@ -197,26 +197,16 @@
 thod set
-_questions
 %0A     * 
@@ -215,76 +215,142 @@
 esc 
-sends a %22GET%22 request to target endpoint%0A     *%0A     * @param %7BArray
+generic setter within the attrs property%0A     *%0A     * @param %7BString%7D %5Bproperty%5D namespace of the desired data model%0A     * @param %7B*
 %7D %5Bv
@@ -406,25 +406,37 @@
  set
-_questions( value
+( property = '', value = null
  ) %7B
@@ -454,26 +454,28 @@
 is.attrs
-.questions
+%5B property %5D
  = value
@@ -501,46 +501,50 @@
 og( 
-'set_questions:', this.attrs.questions
+%60set: $%7Bproperty%7D%60, this.attrs%5B property %5D
  )%0A 
@@ -1869,17 +1869,19 @@
 this.set
-_
+( '
 question
@@ -1881,17 +1881,18 @@
 uestions
-(
+',
  this._e
@@ -2417,32 +2417,35 @@
 @param %7B*%7D %5Bdata
+set
 %5D response datas

revise setQuestions to generic setter;