A lot work.
Need to start with js side of the module.