Getting interesting. Wonder if I need function pointers..oh, comments
added for clarity.