Add print method and improved many things.