Top Layer
Step 1 Form cross with edge cubes matching center cubes
Step 2 Place correct corner cubes

Middle Layer
Step 3 Place edge cubes

To move FD to FL - DLD'L' D'F'DF
To move FD to FR - D'R'DR DFD'F'

Bottom Layer
Step 4 - Place corner cubes, don't worry about orientation

To swap FDL and FDR - R'D'R FDF' R'DR D2

Step 5 - Orient corner cubes.

Twist ccw all corners except for FDL - R'D'RD'R'D2RD2

Step 6 - Place edge cubes, don't worry about orientation

To swap DL-DR and DF-DB, do L2R2U2L2R2 D L2R2U2L2R2 D'
To swap DF-DR and DL-DB, do R2L2 U F2R2L2B2R2L2 U' R2L2
To cycle DL->DB->DR->DL, do L'RF'LR' D2 L'RF'LR' or C-F'C+ D2 C-F'C+
To cycle DR->DB->DL->DR, do L'RFLR' D2 L'RFLR'

Step 7 - Orient edge cubes.

To flip DF, DB, do FU'DR2U2D2L D2 L'D2U2R2D'UF' D2 or FC< R2 C2 L D2 L'  C2 R2 D' C> F' D2
To flip DF, DR, do FU'DR2U2D2L D' L'D2U2R2D'UF' D

Step * - Rotate top center and left center 90 degrees

Top gets rotated counter, left get rotated clockwise.

V'H'VU V'HVU' 

Step * - Rotate top center cube 180 degrees

URL U2 R'L'   URL U2 R'L'