added preliminary particle implementation