Major refactor to prevent block synchronisation being needed