Live changes

* back port changes from live
* lots of refinement
* handle categories