made it work slowly with impredictive
doesn't work
added atom type checking
added atom type checking
it works with prop