Big refactor
Merge with github