added block factory