demo for the actual implementation