clean code, add comment, add licence information