new design & functions