Complete rework (#1)