add mroe functions