Finished implementation