revision to include hubs and generalise away from Android