Adapted to boilerplate