updated with working demo