A lot faster than I expected was possible but probably still improvable some places.
Version: 1.2.0.0