Added generation functionality and two layout types