change this to a singleton
implement multi channel syncing
rename block