Compiles and should more or less work