break out gpio stuff into its own module