refactored a lot, now uses sockets to push data, list updates in real time as well