[x][project first commit and add factory method pattern]