initial commit
add tests
make it a component too
add gitignore