What about the straight forward, simple solution? Do you have that working? Then worry about making it optimal.