Work on sum type. Just need to add pattern matching mechanism.