refactor, add docs, update depedencies, update development environment