The basic framework

Don't commit this branch yet!