- Huge refactoring for supporting several targets