Early solution of #6, not elegant yet.