added initial code version and unit tests