move more logic into Do and remove need for method wrapper