Massive rewrite to the trough logic.  This is probably a terrible idea.