* Assignment roughly done, time for some refinement