basic interfaces, abstracts