why making a protected method which is called only in write and contain the full logic of write ? Just put it in write itself