ok I gotta formalize this thing better