Roughly working, but interface will change.