still having difficulty abstracting connection/operation logic
start caching table info