finished all methods and tests