chemicals layer separate render/parse + refactor (needs docs+tests)