abstract markup