introduce main interfaces