read functions implementations