starting implementing functions