A suggestion: You might describe what you're doing for Method #4 with your assumptions, and then list a few brief code snippets that show the implementation. This'll probably spark more suggestions...