updated to pass a true element prototype interface