changed to use strongly typed boilerplate