better use interfaces, right ?