First version

Still rough around the edges, but works…