Trying to insert a part and have it snap to a selected face/Normal/Surface AKA "front,back,top,bottom"

Ive gotten it to work with some scabby code but if someone could let me know if there is an easier way that would be great

Mouse = game.Players.LocalPlayer:GetMouse()

function click()
	if script.Parent.Parent.Value.Value == false then
		
	Mouse.Move:Connect(move)
	
	script.Parent.Parent.Value.Value = true	
	script.Parent.Parent.Parent.BF.Visible = true
	script.Parent.BackgroundColor3 = Color3.new(0,0,0)
	else
		script.Parent.Parent.Value.Value = false
		script.Parent.Parent.Parent.BF.Visible = false
		script.Parent.BackgroundColor3 = Color3.new(0,0,0)
		
	end
end

function move()
if script.Parent.Parent.Value.Value == true then
print(Mouse.TargetSurface)
	


end
	
	
end


function mouseClick()
	if script.Parent.Parent.Value.Value == true then
	local Target = Mouse.Target
	print(Target.Position)
	script.Parent.Parent.SurfaceSelection.Adornee = Target
	script.Parent.Parent.SurfaceSelection.TargetSurface = Mouse.TargetSurface
	
	if Mouse.TargetSurface == Enum.NormalId.Front then -- these are my attempts
		local a = Instance.new("Part")
	
	a.Parent = game.Workspace
	a.Size = Vector3.new(4,4,4)
	a.CFrame = CFrame.new(-4,0,0):toWorldSpace(Target.CFrame)
	end
	
		if Mouse.TargetSurface == Enum.NormalId.Back then
		local a = Instance.new("Part")
	
	a.Parent = game.Workspace
	a.Size = Vector3.new(4,4,4)
	a.CFrame = CFrame.new(4,0,0):toWorldSpace(Target.CFrame)
	end
	
	
	end
	
end

Mouse.Button1Down:Connect(mouseClick)
script.Parent.MouseButton1Click:Connect(click)