implement common components