refactor and split into plugins