working w/ arbitary inputs