add geometric methods and tests