first version: styling and javascript in good shape