- made interface abstract