Boilerplate
rough structure, copied from gimli really