fix some bugs
reconstruct source and current source
change codes
add new codes