factor out decorating logic
add some element methods and tests
round out element methods