File reader implementation + Tests