abstract inherit interface