Restructure a bit and attempt API