so much done, might actually be functional now