abstract blocking