add final to function signatures