writer implemented