Refactor the Elements collection to extend instead of delegate