add source, but there are a few bugs
add settings