add distribute
append GPL