add more methods and documentation