add builder pattern and fix README