think most of this will need to be cleaned up