use self instead of View