Add initial implementation
Actually explain things in the readme