new functions, some js progress