Almost done. Some minor polishing needed.