implement interfaces
some checks