add 'read' function