restructured EVERYTHING