With test cases and gui