Complete rewrite; using DRPC