finish basic function and ui needed