re-factoring ++/--: draft working