add getDataContext and move render logic into method for easier inheritance