this is further along, but still far from functional