second version. Create several interfaces to accomodate different file types