added final and this. where needed