Adding some ADTs and patterns