add comment for design pattern: factory