refactor everything
add git ignore