basic knob implementation