all functions were implemented