implementing view component