skeleton generated with snphq/generator-sp