refactored, cane and reek passing