persistable abstract sclass AbstractJuicer { // what we are monitoring & closing (a position or a strategy) Juicable position; L calculateCloseSignals() { new L signals; double profit = p.juiceValue(); // How close are we to our loss limit? if (profit < 0) signals.add(new CloseSignal().createdBy(this), "Loss", doubleRatio(juiceValue, -maxLoss)); ret signals; } }