more or less implemented: create, close, read. edge cases remain for all