refactor button, add in defaults and canonical, layout, size, tags