basing sync off of async