copy and a few design changes