primitive manual implemented