F: NOT to ignore files under "__archive" directory
M: move application factory to "private"
A: added "abstract template class"