[BREAKING] Being refractor to update for future supports and improve internals