added some mroe functions