first working version with some demos