BROKEN! TODO: Model! the rest should be mostly fine