Initial codebase

added skeleton for the project with some basic functionality and tests