WIP. Does not compile yet.