split ratio-conditions out to top-level classes for testing, tested and fixed their implementations