Add basic document implementation & unit tests