better naming conventions, and Empty is comodal