added some TODOs in here for future stuff to clean this up