Using of interface

and factory