introduce static factory methods. improve comment
add an example