Improva factory method, without the switch, using naming convention , some phpdoc ocmments