Compare

 - Add Shadow DOM
 - cleanup code
 - comment
 - break out into functions