Refactor monolithic methods into smaller ones to support better hooks
Implement hooks to support plugin architecture
0.5.0