declarative dom creation