improve save as function
rewrite engine interaction as behaviour and add sample loading