implemented writes
factory methods implemented
implemented reads