more refactoring, add internal createTween to do the housekeeping and simplify code, so additions are not error prone and break the chains