added factory methods
 added factory methods