re-organize source-code