view implementation