try hard to keep any advantage, needs cleanup