rip out squishy custom stuff and make generic