big refactoring of tajin framework