almost final interface