after a bit of design