All code implemented, but no testing yet