add end() function