added some member function implementations