too many changes
- building better library abstraction
- moving replacers to separate files
- adding simple JS support