add new features, but still need javascript