Refactor
Implement List
Implement Option as AGT