update README.MD with extensive design implementation explanations. update tests