Code cleanup

- Cleaned up code
- Removed previous read logic (will be added back in later)
- Used a more reliable "loop forever" mechanism
- Updated code to be async