phone component implementation