Completed, must be debugged