Cleaned up addition function