Code optimised - all condp are changed with multimethods.