TODO: finish fast projection, test and debug