added implementations of member functions