add a few more member functions to make the code easier to read