for demo only, need better interface