add more methods and tests