diff --git a/conf/hicstuff.config b/conf/hicstuff.config
new file mode 100644
index 0000000000000000000000000000000000000000..4af147d2f872f71614a12f459b9fab242ab514e4
--- /dev/null
+++ b/conf/hicstuff.config
@@ -0,0 +1,197 @@
+process {
+    //Default
+    publishDir = [
+        path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" },
+        mode: 'copy',
+        saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
+    ]
+}
+
+params {
+
+    // Input options
+    input = null
+
+
+    // References
+    genome = null
+    igenomes_base = 's3://ngi-igenomes/igenomes'
+    igenomes_ignore = false
+    chromosome_size = null
+    restriction_fragments = null
+    save_reference = false
+
+    // Mapping
+    split_fastq = false
+    fastq_chunks_size = 20000000
+    save_interaction_bam = false
+    save_aligned_intermediates = false
+    bwt2_opts_end2end = '--very-sensitive -L 30 --score-min L,-0.6,-0.2 --end-to-end --reorder'
+    bwt2_opts_trimmed = '--very-sensitive -L 20 --score-min L,-0.6,-0.2 --end-to-end --reorder'
+    keep_dups = false
+    keep_multi = false
+    min_mapq = 10
+
+    // Digestion Hi-C
+    digestion = null
+    ligation_site = null
+    restriction_site = null
+    digest {
+      'hindiii'{
+         restriction_site='A^AGCTT'
+         ligation_site='AAGCTAGCTT'
+      }
+      'mboi' {
+         restriction_site='^GATC'
+         ligation_site='GATCGATC'
+      }
+      'dpnii' {
+         restriction_site='^GATC'
+         ligation_site='GATCGATC'
+      }
+      'arima' {
+         restriction_site='^GATC,G^ANTC'
+         ligation_site='GATCGATC,GATCANTC,GANTGATC,GANTANTC'
+      }
+    }
+
+    min_restriction_fragment_size = 0
+    max_restriction_fragment_size = 0
+    min_insert_size = 0
+    max_insert_size = 0
+    save_pairs_intermediates = false
+
+    // Dnase Hi-C
+    dnase = false
+    min_cis_dist = 0
+
+    // Contact maps
+    save_raw_maps = false
+    bin_size = '1000000'
+    res_zoomify = null
+    hicpro_maps = false
+    ice_max_iter = 100
+    ice_filter_low_count_perc = 0.02
+    ice_filter_high_count_perc =  0
+    ice_eps = 0.1
+
+    // Downstream Analysis
+    res_dist_decay = '250000'
+    tads_caller = 'insulation'
+    res_tads = '40000'
+    res_compartments = '250000'
+
+    // Workflow
+    skip_maps = false
+    skip_balancing = false
+    skip_mcool = false
+    skip_dist_decay = false
+    skip_compartments = false
+    skip_tads = false
+    skip_multiqc = false
+
+    // MultiQC options
+    multiqc_config             = null
+    multiqc_title              = null
+    multiqc_logo               = null
+    max_multiqc_email_size     = '25.MB'
+    multiqc_methods_description = null
+
+    // Boilerplate options
+    outdir                     = './results'
+    tracedir                   = "${params.outdir}/pipeline_info"
+    publish_dir_mode           = 'copy'
+    email                      = null
+    email_on_fail              = null
+    plaintext_email            = false
+    monochrome_logs            = false
+    hook_url                   = null
+    help                       = false
+    version                    = false
+    validate_params            = true
+    show_hidden_params         = false
+    schema_ignore_params       = 'genomes,digest'
+
+    // Config options
+    custom_config_version      = 'master'
+    custom_config_base         = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}"
+    config_profile_description = null
+    config_profile_contact     = null
+    config_profile_url         = null
+    config_profile_name        = null
+
+
+    // Max resource options
+    // Defaults only, expecting to be overwritten
+    max_memory                 = '128.GB'
+    max_cpus                   = 16
+    max_time                   = '240.h'
+
+}
+profiles {
+    debug { process.beforeScript = 'echo $HOSTNAME' }
+    conda {
+        conda.enabled          = true
+        docker.enabled         = false
+        singularity.enabled    = false
+        podman.enabled         = false
+        shifter.enabled        = false
+        charliecloud.enabled   = false
+    }
+    mamba {
+        conda.enabled          = true
+        conda.useMamba         = true
+        docker.enabled         = false
+        singularity.enabled    = false
+        podman.enabled         = false
+        shifter.enabled        = false
+        charliecloud.enabled   = false
+    }
+    docker {
+        docker.enabled         = true
+        docker.userEmulation   = true
+        singularity.enabled    = false
+        podman.enabled         = false
+        shifter.enabled        = false
+        charliecloud.enabled   = false
+    }
+    arm {
+        docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64'
+    }
+    singularity {
+        singularity.enabled    = true
+        singularity.autoMounts = true
+        docker.enabled         = false
+        podman.enabled         = false
+        shifter.enabled        = false
+        charliecloud.enabled   = false
+    }
+    podman {
+        podman.enabled         = true
+        docker.enabled         = false
+        singularity.enabled    = false
+        shifter.enabled        = false
+        charliecloud.enabled   = false
+    }
+    shifter {
+        shifter.enabled        = true
+        docker.enabled         = false
+        singularity.enabled    = false
+        podman.enabled         = false
+        charliecloud.enabled   = false
+    }
+    charliecloud {
+        charliecloud.enabled   = true
+        docker.enabled         = false
+        singularity.enabled    = false
+        podman.enabled         = false
+        shifter.enabled        = false
+    }
+    gitpod {
+        executor.name          = 'local'
+        executor.cpus          = 16
+        executor.memory        = 60.GB
+    }
+    test      { includeConfig 'conf/test.config'      }
+    test_full { includeConfig 'conf/test_full.config' }
+}
diff --git a/modules/local/hicstuff/align_bowtie2.nf b/modules/local/hicstuff/align_bowtie2.nf
new file mode 100644
index 0000000000000000000000000000000000000000..a3f2f1c237d0c66d5a46cf13900c7193176cf12a
--- /dev/null
+++ b/modules/local/hicstuff/align_bowtie2.nf
@@ -0,0 +1,30 @@
+process BOWTIE2_ALIGNMENT {
+    tag "$meta.id"
+    label "process_high"
+
+    conda "bioconda::bowtie2=2.4.4 bioconda::samtools=1.16.1 conda-forge::pigz=2.6"
+    container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
+        'https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' :
+        'quay.io/biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' }"
+
+    input:
+    tuple val(meta), path(reads)
+    tuple val(meta2), path(index)
+
+    output:
+    tuple val(meta), path ("*.bam"), emit: bam
+
+    script:
+    def prefix = task.ext.prefix ?: "${meta.id}"
+
+    """
+    INDEX=`find -L ./ -name "*.rev.1.bt2" | sed "s/\\.rev.1.bt2\$//"`
+    [ -z "\$INDEX" ] && INDEX=`find -L ./ -name "*.rev.1.bt2l" | sed "s/\\.rev.1.bt2l\$//"`
+    [ -z "\$INDEX" ] && echo "Bowtie2 index files not found" 1>&2 && exit 1
+
+    bowtie2 --very-sensitive-local -p $task.cpus -x \$INDEX -U $reads > ${prefix}.tmp
+
+    samtools view -F 2048 -h -@ $task.cpus ${prefix}.tmp | samtools sort -n -@ $task.cpus -o ${prefix}.bam -
+    """
+
+}
diff --git a/test.nf b/test.nf
new file mode 100644
index 0000000000000000000000000000000000000000..b960e23168f81ba91048847de68419281d891640
--- /dev/null
+++ b/test.nf
@@ -0,0 +1,55 @@
+#!/usr/bin/env nextflow
+
+nextflow.enable.dsl = 2
+
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    GENOME PARAMETER VALUES
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
+
+params.fasta = WorkflowMain.getGenomeAttribute(params, 'fasta')
+params.bwt2_index = WorkflowMain.getGenomeAttribute(params, 'bowtie2')
+
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    VALIDATE & PRINT PARAMETER SUMMARY
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
+
+WorkflowMain.initialise(workflow, params, log)
+
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    NAMED WORKFLOW FOR PIPELINE
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
+
+include { HICSTUFF } from './workflows/hicstuff'
+
+//
+// WORKFLOW: Run main nf-core/hic analysis pipeline
+//
+workflow TEST_HICSTUFF {
+    HICSTUFF ()
+}
+
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    RUN ALL WORKFLOWS
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
+
+//
+// WORKFLOW: Execute a single named workflow for the pipeline
+// See: https://github.com/nf-core/rnaseq/issues/619
+//
+workflow {
+    TEST_HICSTUFF ()
+}
+
+/*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    THE END
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+*/
diff --git a/workflows/hicstuff.nf b/workflows/hicstuff.nf
new file mode 100644
index 0000000000000000000000000000000000000000..e411e18bb2154413149ec78c64d2ceed92b87e3c
--- /dev/null
+++ b/workflows/hicstuff.nf
@@ -0,0 +1,41 @@
+def summary_params = NfcoreSchema.paramsSummaryMap(workflow, params)
+// Validate input parameters
+WorkflowHic.initialise(params, log)
+// Check mandatory parameters
+if (params.input) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' }
+// Digestion parameters
+if (params.digestion){
+    restriction_site = params.digestion ? params.digest[ params.digestion ].restriction_site ?: false : false
+    ch_restriction_site = Channel.value(restriction_site)
+    ligation_site = params.digestion ? params.digest[ params.digestion ].ligation_site ?: false : false
+    ch_ligation_site = Channel.value(ligation_site)
+}else if (params.dnase){
+    ch_restriction_site = Channel.empty()
+    ch_ligation_site = Channel.empty()
+}else{
+    exit 1, "Ligation motif not found. Please either use the `--digestion` parameters or specify the `--restriction_site` and `--ligation_site`. For DNase Hi-C, please use '--dnase' option"
+}
+
+Channel.fromPath( params.fasta )
+    .ifEmpty { exit 1, "Genome index: Fasta file not found: ${params.fasta}" }
+    .map{it->[[:],it]}
+    .set { ch_fasta }
+
+
+include { INPUT_CHECK } from '../subworkflows/local/input_check'
+include { PREPARE_GENOME } from '../subworkflows/local/prepare_genome'
+include { BOWTIE2_ALIGNMENT } from '../modules/local/hicstuff/align_bowtie2'
+
+workflow HICSTUFF {
+    INPUT_CHECK (
+        ch_input
+    )
+    PREPARE_GENOME(
+        ch_fasta,
+        ch_restriction_site
+    )
+    BOWTIE2_ALIGNMENT(
+        INPUT_CHECK.out.reads,
+        PREPARE_GENOME.out.index
+    )
+}