broke out js functionality into separate docs.