implement new style basic function
implement new style finished