improved for demo purposes