use add instead of and for void returns, add shift capability