some more design changes before adding +- logic