advanced coding techniques