refactoring to make blocking the default as to preserve orignal API