Simplified the decision logic

... but how to fix the tests and override static functions?