Changed around the design, added more code.