First final submission of tabs

good abstraction here.