This is really neat!! I've thought about doing something similar (just in Objective C)