documented various methods