move reuseable definitions into own files