final javascript additions