added Factory interfaces