refactor zipline to support arbitrary objects