base factories, interfaces and classes to work with media files