add methods and tests