Code temporaly splitted for easier navigation