use interface instead