major re-factoring of classes