boilerplate code removed