divide into child classes
add render_element method