further clarified documentation and add more static builder methods