finished virtual implementations