added proof code, refactored data and tests