need to rethink this completely