Refactor
Merge with master