Closes #58. Also the onInit callback wasn't being executed in the proper scope so I had to move the call. This requires a change in behavior where whatever the value of onInit is after initialization will be used. This just makes more sense than the previous behavior of calling old onInit functions anyway.