This is a general framework that we will use for our next projects