In order to achieve the first two of our aims, it is important that each stage of this process is both easy to use with minimal code, and easily customisable, so that new approaches can be developed. In the next section, we describe each of the parts of the workflow in more detail. In the final two sections, we will look at the possible limitations and future developments, and give proof-of-concept examples for how to use BasisOpt. The software and all the examples given here can be found at .