* initial commit * adding first testcase wip * fixing test * adding more unit tests * adding bazel file * adding more unit tests and file checks * addressing comments * refactoring based on comments * added bazel * fixing build