boilerplate updated and simplified