95% finished. Just need to figure out the async piece at the end