added many auxiliary bit manipulation fxns