added tests but don't know if it is correct