this doesn't work 100%, I believe its attributable to the async and me not tweaking it correctly