this is the least efficient thing I have done recently