basic element implementation