used existing abstract datastore classes and added transactional output operator