diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..8fbce063d057a160eca28388476113e64c51a2b7
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Forschungszentrum Juelich GmbH
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000000000000000000000000000000000000..872ddc2f4082ea15899cab1359f84efd73aa9e29
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,116 @@
+This project includes derived work from the following:
+
+The SLNS library of Python utilities
+Copyright (c) 2019 Forschungszentrum Juelich GmbH
+
+Licensed under The MIT License.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+Getting started with Deep Learning on Supercomputers
+Copyright (c) 2019 Forschungszentrum Juelich GmbH
+
+Licensed under The MIT License.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+Horovod
+Copyright 2018 Uber Technologies, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+Tensorflow
+Copyright 2016 The TensorFlow Authors.  All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+Keras
+All contributions by François Chollet:
+Copyright (c) 2015 - 2019, François Chollet.
+All rights reserved.
+
+All contributions by Google:
+Copyright (c) 2015 - 2019, Google, Inc.
+All rights reserved.
+
+All contributions by Microsoft:
+Copyright (c) 2017 - 2019, Microsoft, Inc.
+All rights reserved.
+
+All other contributions:
+Copyright (c) 2015 - 2019, the respective contributors.
+All rights reserved.
+
+Licensed under The MIT License (MIT)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/hpcns/errors.py b/hpcns/errors.py
index e22c5465a151e2a981da5c36b1f7ff3750bcd076..12c513a57ab6b5e3e59d0da600860b6a019f79da 100644
--- a/hpcns/errors.py
+++ b/hpcns/errors.py
@@ -1,3 +1,9 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details)
+# This code is derived from "The SLNS library of Python utilities",
+# which is licensed under the MIT License (see the NOTICE file for details).
+
+
 """
     A collection of custom error classes for the slns module.
 """
diff --git a/hpcns/tutorials/distribution/decorator_0.py b/hpcns/tutorials/distribution/decorator_0.py
index c31bed62c63ee129e668be4e22de94ef7ec2311c..7d89df49da7b6304940eec2b11314bf114b29fa0 100644
--- a/hpcns/tutorials/distribution/decorator_0.py
+++ b/hpcns/tutorials/distribution/decorator_0.py
@@ -1,6 +1,12 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details).
+# This code is derived from "The SLNS library of Python utilities",
+# which is licensed under the MIT License (see the NOTICE file for details).
+
 """
-Illustration of a sequential program that defines and uses
-a function to read a list of filenames from the disk.
+    Illustration of a sequential program that defines and uses
+    a function to read a list of filenames from the disk.
+
 """
 
 import os
diff --git a/hpcns/tutorials/distribution/decorator_1.py b/hpcns/tutorials/distribution/decorator_1.py
index e768d835bab20cb1b94e83d4ac5011804b8dda50..f5161ef512ace3fced8d6d12927e311128f07745 100644
--- a/hpcns/tutorials/distribution/decorator_1.py
+++ b/hpcns/tutorials/distribution/decorator_1.py
@@ -1,10 +1,16 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details).
+# This code is derived from "The SLNS library of Python utilities",
+# which is licensed under the MIT License (see the NOTICE file for details).
+
 """
-This program demonstrates how a function that reads and returns
-a list of filenames can be easily decorated to automatically
-distribute the list across multiple MPI ranks.
+    This program demonstrates how a function that reads and returns
+    a list of filenames can be easily decorated to automatically
+    distribute the list across multiple MPI ranks.
+
+    The hpcns.utils.distribution.FilenamesDistributor is used as
+    the decorator.
 
-The hpcns.utils.distribution.FilenamesDistributor is used as
-the decorator.
 """
 
 import os
diff --git a/hpcns/tutorials/distribution/decorator_3.py b/hpcns/tutorials/distribution/decorator_3.py
index 4b8cce621ac103ccad9d792d2f87a49681b27de6..c147847d9cac15193fe9e77c5b9cba432b958f2c 100644
--- a/hpcns/tutorials/distribution/decorator_3.py
+++ b/hpcns/tutorials/distribution/decorator_3.py
@@ -1,6 +1,12 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details).
+# This code is derived from "The SLNS library of Python utilities",
+# which is licensed under the MIT License (see the NOTICE file for details).
+
 """
-Illustration of a sequential program that uses a library
-function to read a list of filenames from the disk.
+    Illustration of a sequential program that uses a library
+    function to read a list of filenames from the disk.
+
 """
 
 import os
diff --git a/hpcns/tutorials/distribution/decorator_4.py b/hpcns/tutorials/distribution/decorator_4.py
index 1b598e7053afd1f584c6ae9f66bc092f7bdf999c..a91ae442f0856a5f25d6a71e1e59b8653d9fd38c 100644
--- a/hpcns/tutorials/distribution/decorator_4.py
+++ b/hpcns/tutorials/distribution/decorator_4.py
@@ -1,10 +1,16 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details).
+# This code is derived from "The SLNS library of Python utilities",
+# which is licensed under the MIT License (see the NOTICE file for details).
+
 """
-This program demonstrates how a library function can be decorated
-using the hpcns.utils.distribution.FilenamesDistributor.
+    This program demonstrates how a library function can be decorated
+    using the hpcns.utils.distribution.FilenamesDistributor.
+
+    The syntax for decoration presented in this program can be useful not
+    only for library functions, but also in situations where a reference
+    to the MPI object is not available at the time of function definition.
 
-The syntax for decoration presented in this program can be useful not
-only for library functions, but also in situations where a reference
-to the MPI object is not available at the time of function definition.
 """
 
 import os
diff --git a/hpcns/tutorials/dl/mnist_data_distributed.py b/hpcns/tutorials/dl/mnist_data_distributed.py
index 44d0f528371e8a0fc8038cfe5aa63743ba95b841..5eabc49f59b9d5e9522562ea6406508379aabda4 100644
--- a/hpcns/tutorials/dl/mnist_data_distributed.py
+++ b/hpcns/tutorials/dl/mnist_data_distributed.py
@@ -1,25 +1,30 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details)
+# This code is derived from "Getting started with Deep Learning on Supercomputers",
+# which is licensed under the MIT License (see the NOTICE file for details).
+
 """
-This program is an adaptation of the following code sample:
-https://github.com/horovod/horovod/blob/master/examples/keras_mnist.py.
-The modified program distributes the partitioned MNIST data across
-multiple MPI ranks for truly data distributed training of a shallow ANN
-for handwritten digit classification.
+    This program is an adaptation of the following code sample:
+    https://github.com/horovod/horovod/blob/master/examples/keras_mnist.py.
+    The modified program distributes the partitioned MNIST data across
+    multiple MPI ranks for truly data distributed training of a shallow ANN
+    for handwritten digit classification.
 
-The Horovod framework is used for seamless distributed training. Instead
-of distributing epochs, this program distributes data amongst the ranks,
-so that each rank contributes training based on its local subset of the
-training data.
+    The Horovod framework is used for seamless distributed training. Instead
+    of distributing epochs, this program distributes data amongst the ranks,
+    so that each rank contributes training based on its local subset of the
+    training data.
 
-To run this sample from the repository root, use the following
-command on your workstation/laptop equipped with a GPU:
+    To run this sample from the repository root, use the following
+    command on your workstation/laptop equipped with a GPU:
 
-mpirun -np 1 python -u -m hpcns.tutorials.dl.mnist_data_distributed
+    mpirun -np 1 python -u -m hpcns.tutorials.dl.mnist_data_distributed
 
-If you have more than one GPU on your system, you can increase the
-number of ranks accordingly.
+    If you have more than one GPU on your system, you can increase the
+    number of ranks accordingly.
 
-To run this sample on JUWELS, please use the provided 'submit_parallel_job_juwels.sh'
-script. Please make sure the srun command in the script points to this file.
+    To run this sample on JUWELS, please use the provided 'submit_parallel_job_juwels.sh'
+    script. Please make sure the srun command in the script points to this file.
 
 """
 
diff --git a/hpcns/tutorials/dl/mnist_data_sequential.py b/hpcns/tutorials/dl/mnist_data_sequential.py
index e501725e2b2e4764f927ef456036de34bbd07310..7c08d970b9fed0a6fa38f687aa2feb23287532bf 100644
--- a/hpcns/tutorials/dl/mnist_data_sequential.py
+++ b/hpcns/tutorials/dl/mnist_data_sequential.py
@@ -1,18 +1,23 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH.
+# This code is licensed under MIT license (see the LICENSE file for details).
+# This code is derived from Tensorflow tutorials, which is licensed under the Apache License,
+# Version 2.0 (see the NOTICE file for details).
+
 """
-This program is an adaptation of the code sample available at
-https://www.tensorflow.org/tutorials/. The modified program uses
-the MNIST data partitioned into multiple files to train a
-shallow ANN for handwritten digit classification.
+    This program is an adaptation of the code sample available at
+    https://www.tensorflow.org/tutorials/. The modified program uses
+    the MNIST data partitioned into multiple files to train a
+    shallow ANN for handwritten digit classification.
 
-Custom functions are defined to read the partitioned datasets.
+    Custom functions are defined to read the partitioned datasets.
 
-To run this sample from the repository root, use the following
-command on your workstation/laptop equipped with a GPU:
+    To run this sample from the repository root, use the following
+    command on your workstation/laptop equipped with a GPU:
 
-python -u -m hpcns.tutorials.dl.mnist_data_sequential
+    python -u -m hpcns.tutorials.dl.mnist_data_sequential
 
-To run this sample on JUWELS, please use the provided 'submit_sequential_job_juwels.sh'
-script. Please make sure the srun command in the script points to this file.
+    To run this sample on JUWELS, please use the provided 'submit_sequential_job_juwels.sh'
+    script. Please make sure the srun command in the script points to this file.
 
 """
 
diff --git a/hpcns/tutorials/dl/mnist_epoch_distributed.py b/hpcns/tutorials/dl/mnist_epoch_distributed.py
index 034777f3fbd1759577b8fc30176de9e7a3bf4f3b..84e38493689d432f8b8a6f7d1574ee0dddecd680 100644
--- a/hpcns/tutorials/dl/mnist_epoch_distributed.py
+++ b/hpcns/tutorials/dl/mnist_epoch_distributed.py
@@ -1,27 +1,32 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH.
+# This code is licensed under MIT license (see the LICENSE file for details).
+# This code is derived from Horovod, which is licensed under the Apache License,
+# Version 2.0 (see the NOTICE file for details).
+
 """
-This program is an adaptation of the following code sample:
-https://github.com/horovod/horovod/blob/master/examples/keras_mnist.py.
-The program creates and trains a shallow ANN for handwritten digit
-classification using the MNIST dataset.
+    This program is an adaptation of the following code sample:
+    https://github.com/horovod/horovod/blob/master/examples/keras_mnist.py.
+    The program creates and trains a shallow ANN for handwritten digit
+    classification using the MNIST dataset.
 
-The Horovod framework is used for seamless distributed training. In this
-example epochs are distributed across the MPI ranks, not data.
+    The Horovod framework is used for seamless distributed training. In this
+    example epochs are distributed across the MPI ranks, not data.
 
-The code has been adapted to load the MNIST dataset from the
-'data' directory in the repository root, rather than
-downloading it from the Internet. The correspondingly updated
-lines code are preceded by a comment beginning with [HPCNS].
+    The code has been adapted to load the MNIST dataset from the
+    'data' directory in the repository root, rather than
+    downloading it from the Internet. The correspondingly updated
+    lines code are preceded by a comment beginning with [HPCNS].
 
-To run this sample from the repository root, use the following
-command on your workstation/laptop equipped with a GPU:
+    To run this sample from the repository root, use the following
+    command on your workstation/laptop equipped with a GPU:
 
-mpirun -np 1 python -u -m hpcns.tutorials.dl.mnist_epoch_distributed
+    mpirun -np 1 python -u -m hpcns.tutorials.dl.mnist_epoch_distributed
 
-If you have more than one GPU on your system, you can increase the
-number of ranks accordingly.
+    If you have more than one GPU on your system, you can increase the
+    number of ranks accordingly.
 
-To run this sample on JUWELS, please use the provided 'submit_parallel_job_juwels.sh'
-script. Please make sure the srun command in the script points to this file.
+    To run this sample on JUWELS, please use the provided 'submit_parallel_job_juwels.sh'
+    script. Please make sure the srun command in the script points to this file.
 
 """
 
diff --git a/hpcns/tutorials/dl/mnist_sequential.py b/hpcns/tutorials/dl/mnist_sequential.py
index 5ef36b9c84e3a3c5b6baa697e3019538bd2aea94..cbe6a0bac37da08d59690cb0c6f0a7fae5b0e361 100644
--- a/hpcns/tutorials/dl/mnist_sequential.py
+++ b/hpcns/tutorials/dl/mnist_sequential.py
@@ -1,21 +1,26 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH.
+# This code is licensed under MIT license (see the LICENSE file for details).
+# This code is derived from Tensorflow tutorials, which is licensed under the Apache License,
+# Version 2.0 (see the NOTICE file for details).
+
 """
-This program is an adaptation of the code sample available at
-https://www.tensorflow.org/tutorials/. The program creates
-and trains a shallow ANN for handwritten digit classification
-using the MNIST dataset.
+    This program is an adaptation of the code sample available at
+    https://www.tensorflow.org/tutorials/. The program creates
+    and trains a shallow ANN for handwritten digit classification
+    using the MNIST dataset.
 
-The code has been adapted to load the MNIST dataset from the
-'data' directory in the repository root, rather than
-downloading it from the Internet. The correspondingly updated
-lines of code are preceded by a comment beginning with [HPCNS].
+    The code has been adapted to load the MNIST dataset from the
+    'data' directory in the repository root, rather than
+    downloading it from the Internet. The correspondingly updated
+    lines of code are preceded by a comment beginning with [HPCNS].
 
-To run this sample from the repository root, use the following
-command on your workstation/laptop equipped with a GPU:
+    To run this sample from the repository root, use the following
+    command on your workstation/laptop equipped with a GPU:
 
-python -u -m hpcns.tutorials.dl.mnist_sequential
+    python -u -m hpcns.tutorials.dl.mnist_sequential
 
-To run this sample on JUWELS, please use the provided 'submit_sequential_job_juwels.sh'
-script. Please make sure the srun command in the script points to this file.
+    To run this sample on JUWELS, please use the provided 'submit_sequential_job_juwels.sh'
+    script. Please make sure the srun command in the script points to this file.
 
 """
 
diff --git a/hpcns/tutorials/mpi/broadcast.py b/hpcns/tutorials/mpi/broadcast.py
index e4ab549e25401d1b18b77a4220f92c7372b6cdcc..51ee147e67baaf89c1b16a2d96fcab93a1a75ecc 100644
--- a/hpcns/tutorials/mpi/broadcast.py
+++ b/hpcns/tutorials/mpi/broadcast.py
@@ -1,6 +1,10 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details)
+
 """
-This program demonstrates how to use mpi4py to broadcast data
-from the root to all other ranks
+    This program demonstrates how to use mpi4py to broadcast data
+    from the root to all other ranks.
+
 """
 
 # Import the package and initialize MPI
diff --git a/hpcns/tutorials/mpi/info_only.py b/hpcns/tutorials/mpi/info_only.py
index 234ffd2feddb160e25ea0a76cd4eb0e44a4f57b7..473f0572ecd2f6d85644e916d8a3a9d89eaa8b73 100644
--- a/hpcns/tutorials/mpi/info_only.py
+++ b/hpcns/tutorials/mpi/info_only.py
@@ -1,6 +1,10 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details)
+
 """
-This program demonstrates how to use mpi4py to retrieve basic
-information from the default MPI communicator.
+    This program demonstrates how to use mpi4py to retrieve basic
+    information from the default MPI communicator.
+
 """
 
 # Import the package and initialize MPI
diff --git a/hpcns/tutorials/mpi/spmd.py b/hpcns/tutorials/mpi/spmd.py
index cf4a8648553a47623d97a9b4ccf33309b2a0938e..40a525b94f78700a1ee4b407d99d97bf6c7a9ec8 100644
--- a/hpcns/tutorials/mpi/spmd.py
+++ b/hpcns/tutorials/mpi/spmd.py
@@ -1,10 +1,14 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details)
+
 """
-This program demonstrates the Single Program Multiple Data (SPMD)
-concept. The same program is executed by two ranks, but each
-rank operates on a different chunk of data.
+    This program demonstrates the Single Program Multiple Data (SPMD)
+    concept. The same program is executed by two ranks, but each
+    rank operates on a different chunk of data.
+
+    Exercise: What happens when you run this program with more than
+              two ranks? Can you explain the behavior?
 
-Exercise: What happens when you run this program with more than
-          two ranks? Can you explain the behavior?
 """
 
 # Import the package and initialize MPI
diff --git a/hpcns/utils/data.py b/hpcns/utils/data.py
index 904a37c9817e26bfebae0d54aeaac35bdce6fb28..58bb6c16116865d26379c2a7f4c73ff16d3581f4 100644
--- a/hpcns/utils/data.py
+++ b/hpcns/utils/data.py
@@ -1,3 +1,9 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details)
+# This code is derived from Getting started with Deep Learning on Supercomputers,
+# which is licensed under the MIT License (see the NOTICE file for details).
+
+
 """
     A collections of utilities for data manipulation.
 
diff --git a/hpcns/utils/distribution.py b/hpcns/utils/distribution.py
index f92891fb013048df26ed5ced4bf92b0c7f7ebe28..fa4456de454aa299cc6e0eb2509b71bafe9f0e89 100644
--- a/hpcns/utils/distribution.py
+++ b/hpcns/utils/distribution.py
@@ -1,3 +1,9 @@
+# Copyright (c) 2019 Forschungszentrum Juelich GmbH
+# This code is licensed under MIT license (see the LICENSE file for details)
+# This code is derived from "The SLNS library of Python utilities",
+# which is licensed under the MIT License (see the NOTICE file for details).
+
+
 """
     A collection of utilities for seamless distribution of data
     across multiple MPI ranks.